# Backend Checklist
## Backend Fundamentals Checklist
- [ ] Can you explain why do we need backend services?
- [ ] Can you explain HTTP protocol?
- [ ] Can you explain HTTP messages?
- [ ] Can you explain the role of URL in HTTP?
- [ ] Can you explain different parts of URL in given example?
```js
https://localhost:5000/users/profile?username=altcampus
```
- [ ] Do you know few commomnly used HTTP request methods?
- [ ] Can you explain HTTP status codes & why do we use them?
- [ ] Do you know the different ways of passing information over HTTP?
- [ ] Can you explain the difference between synchrounous and asychronous execution?
- [ ] Can you explain the difference between concurrent and parallel processing?
- [ ] Do you know what virtual cores are and how is it different from actual cores in computers?
- [ ] Do you know why we host servers on the cloud?
- [ ] Can you explain latency in networking?
- [ ] Can you name some cloud providers which hosts servers?
- [ ] Can you explain 404 status code?
- [ ] Do you know the default status code sent with each response?
- [ ] Can you explain the difference between PUT and PATCH HTTP request methods?
- [ ] Can you answer this:- Low or High latency for faster request processing?
- [ ] Can you explain Caching in backend?
- [ ] Can you explain the use of CDNs?
- [ ] Can you explain CORS and why we use them?
- [ ] Can you name 2 request headers when making request over HTTP?
- [ ] Can you name 2 response headers when making request over HTTP?
- [ ] Do you know the mime type for JSON(Javascript Object notation) data?
- [ ] Can you explain content-length property in response headers?
- [ ] Can you explain the difference between path and pathname in requested URL?
- [ ] Can you describe DDoS attacks and how it impacts availability of servers?
## Node.js Checklist
- [ ] Do you know what Node.js is?
- [ ] Can you name the compiler which is used by Node.js?
- [ ] Can you explain globals in Node.js?
- [ ] Can you explain how Node.js executes asynchrounous I/O operations?
- [ ] Do you know about core node modules in node environment?
- [ ] Can you create a server in Node.js?
- [ ] Do you know the name of the core node module which is used to parse requested URL over HTTP?
- [ ] Do you know how to parse form data in Node.js?
- [ ] Can you explain streams in Node.js?
- [ ] Can yo name one `readable stream` in Node.js?
- [ ] Do you know what `eventEmitters` are in Node.js?
- [ ] Can you create an event emitter using core `events` module?
- [ ] Do you know how to listen for a particular emitted event?
- [ ] Do you know how to capture data on the node server which is received when a client makes a request?
- [ ] Do you know the method from `fs` module which is used to write to a file?
- [ ] Can you get `number of CPU's` in the system using node environment?
- [ ] Can you explain what `REPL` is?
- [ ] Do you know how to open REPL in Node environment?
- [ ] Can you create a file using fs module in Node.js?
- [ ] Do you know how to export functions from one module to another in Node.js?
- [ ] Can you explain Buffer in Node.js?
- [ ] Can you explain 2 ways to create a new buffer using Buffer Class?
- [ ] Do you know which HTTP verb is used to add new resources on the server side?
- [ ] Do you know what `401` status code represent?
- [ ] Do you know the commands which is used to set a content-Type for a response in Node.js?
- [ ] Do you know how to set a specific status code in response?
- [ ] Can you explain how to serve an image from node server?
- [ ] Do you know the default HTTP method requested when an anchor tag is clicked?
- [ ] Do you know the different HTTP methods which can be used with HTML forms?
- [ ] Can you explain the `action` and `method` attributes in HTML forms?
- [ ] Do you know what `NPM` is and why do we use them?
- [ ] Can you describe `semantic versioning` in NPM?
- [ ] Do you know how to add a NPM package into our project?
- [ ] Can you describe the importance of `package.json` file in Node projects?
- [ ] Can you name the command used to create package.json using npm?
- [ ] Do you know what `Express` is?
- [ ] Do you know how to install a NPM package globally in your system?
- [ ] Can you list all global npm packages using npm command?
- [ ] Can you explain `scripts` property in package.json?
- [ ] Can you define a script to start the server?
- [ ] Do you know what `express-generator` is and why we use them?
- [ ] Can you explain the use of `require global` in node applications?
- [ ] Can you name few templates which can be used with express applications?
- [ ] Can you explain what `middlewares` are in Express applications?
- [ ] Can you name some `built-in middlewares` in Express?
- [ ] Can you explain the use of `next()` function in middlewares?
- [ ] Can you create a custom middleware that consoles requested URL and current time in Express?
- [ ] Can you explain the use of `express.static()` middleware?
- [ ] Can you explain the use of `express.json()` middleware?
- [ ] Do you know about `error handler middleware` in Express and how is it different from other middlawres?
- [ ] Can you explain the MVC architecture with refernce to Express applications?
- [ ] Can you explain about routing conventions in CRUD applications using Express?
- [ ] Do you know how to capture variable values like `id` or `username` in router's pathname in Express applications?
- [ ] Can you extract `query paramater` values coming with URL from request in Express applications?
- [ ] Do you know how to `redirect requests` to some other paths or URLs in Express application?
- [ ] Can you explain `Authentication` & `Authorisation`?
- [ ] Can you explain the use of cookies in the backend application?
- [ ] Can you explain the difference between session storage and cookies storage?
- [ ] Can you explain JWT token based authentication?
- [ ] Can you explain the difference between session-cookies and token based authentication?
- [ ] Can you deploy Node based applications on Heroku?
## MongoDB Checklist
- [ ] Can you describe what databases are?
- [ ] Can you explain about MongoDB database?
- [ ] Do you know the difference between `relational` and `non-relational` databases?
- [ ] Can you describe the `advantages of MongoDB over SQL` databases?
- [ ] Do you know how MongoDB database is structured?
- [ ] Do you know how a MonogDB documents looks like?
- [ ] Do you know the command used to connect to mongoDB server via terminal?
- [ ] Do you know the command used to list all collections of a database in the mongo shell?
- [ ] Do you know the command used to connect to a specific database in the mongo shell?
- [ ] Do you know the command used to insert multiple documents into the database?
- [ ] Can you write a query find all documents from a specific collection?
- [ ] Can you explain the findOne method in MongoDB?
- [ ] Can you explain update operation in MongoDB with and without `$set` operator?
- [ ] Can you name some additional options which we can pass to update operations as the third parameter?
- [ ] Do you know the operators which are used to update an array of elements stored in the database?
- [ ] Can you increment/decrement numerical values stored in the database?
- [ ] Do you know the datatype used to store date and time values in MongoDB database?
- [ ] Do you know the use of `$in` operator in MongoDB?
- [ ] Can you explain the use of Indexes in MongoDB?
- [ ] Can you explain the merits and demerits of using indexes in MongoDB?
- [ ] Do you know about unique indexes and where do we use them?
- [ ] Do you know what are text based indexes and why are they helpful?
- [ ] Can you create indexes on array values, if yes; how?
- [ ] Can you explain aggregations in MongoDB?
- [ ] Can you explain the use of `$limit` and `$skip` in aggregation framework?
- [ ] Can you get a count of all the documents stored in a collection?
- [ ] Can you group all users based on gender and get a count of total males and females using `$group` in aggregation framework?
- [ ] Can you calculate average age of all users using aggregation pipeline?
- [ ] Can you export all data from a collection into a json or csv file?
- [ ] Do you know the difference between embedding and referencing in MongoDB?
- [ ] Can you explain associations in databases?
- [ ] Can you explain different types of association in MongoDB?
## SQL Checklist
- [ ] Can you describe what RDBMS is and give 2 examples of it?
- [ ] Do you know what SQL is?
- [ ] Can you explain ACID properties and why is it important?
- [ ] Do you know the command used for creating a database in SQL?
- [ ] Can you explain the schema in SQL?
- [ ] Can you explain the difference between CHAR and VARCHAR datatype in SQL?
- [ ] Do you know what table and fields are in SQL?
- [ ] Can you explain constraints in SQL and name few constraints?
- [ ] Do you know what a UNIQUE constraint is?
- [ ] Can you explain Primary Key in SQL?
- [ ] Can you explain Foreign Key?
- [ ] Can you explain joins in SQL?
- [ ] Can you describe different types of joins in SQL?
- [ ] Can you explain Cross-Join?
- [ ] Do you know Indexes in DBMS?
- [ ] Can you explain what a query is in SQL?
- [ ] Do you know what `SELECT *` means in SQL query?
- [ ] Can you explain `ORDER BY` clause in SQL?
- [ ] Do you know where to use `GRUOP BY` & `HAVING` clause in SQL?
- [ ] Do you know what an `alias` is in SQL?
- [ ] Can you name different types of relationships in SQL between tables?
- [ ] Can you explain `view` in SQL?
- [ ] Can you describe the TRUNCATE, DELETE and DROP statements?
- [ ] Can you name some aggregate functions in SQL?
- [ ] Do you know the command used to create a table?
- [ ] Can you create empty tables with the same structure as another table?
- [ ] Do you know the use of `LIKE` operator?
- [ ] Do you know the commands used to change the datatype of a column?
- [ ] Can you `delete` a database in SQL?
- [ ] Do you know how to change a table name in SQL?
- [ ] Can you explain `Normalization` in SQL? What are advantages of it?
- [ ] Can you explain `triggers` in SQL?
- [ ] Do you know how to `delete a column` from table in SQL?
- [ ] Do you know how to avoid getting duplicate entries in a query in SQL?
- [ ] Do you know where to use `BETWEEN` clause in SQL?
- [ ] Can you explain `left outer join` with example in SQL?
- [ ] Do you know the difference between NOW() and CURRENT_DATE() in SQL?
- [ ] Can you highlight few differences between SQL and MongoDB database?