Top 30 Easy Backend Dev Concepts Quiz for Beginners
30 easy multiple-choice Backend Dev concept questions, the vocabulary and first principles, the parts you need before anything else makes sense. They come from 30 bites in the Backend Dev library, the gentlest slice of the 551 Backend Dev concept questions in the library. Answer them here or read straight down. Every question carries the correct option, why it is correct, and a link to the bite it came from.
Backend engineering, APIs, and databases
30 questions. Pick an answer, or open “Show the answer” to read it.
Answers are graded in your browser. Quiz progress is not saved, and no XP or streak is earned here. The app keeps score.
Question 1 of 30
What is the primary mechanism by which Python type hints improve code reliability?
Show the answer
Answer: c · They enable static analysis tools to identify potential type mismatches before execution.
Type hints are ignored by the Python interpreter at runtime. Their primary role is to allow static analysis tools to check for type consistency and potential errors before the code is ever executed, improving reliability. They do not perform runtime validation of external data.
Read the full bite: Python Type Hints: Documentation Your Linter Can Read
Question 2 of 30
What is the primary function of a Database Management System (DBMS)?
Show the answer
Answer: c · To manage and control how applications interact with and access stored data.
The card states the DBMS acts as a "single, controlled gateway" and a "librarian" to manage access and operations on data for applications. Option B describes the database itself, which the card identifies as a common misconception, incorrect confusion point.
Read the full bite: DBMS: The Software That Runs Your Database
Question 3 of 30
What is the primary function of the V8 engine within environments like Chrome or Node.js?
Show the answer
Answer: c · To translate JavaScript code into native machine code for fast execution.
V8 executes JavaScript by interpreting bytecode and compiling frequently executed code into optimized machine code. While environments like Node.js provide APIs for interactions (option D), V8 is the engine that executes JavaScript and WebAssembly; it does not provide those host APIs.
Read the full bite: V8: The Engine Powering Chrome and Node.js
Question 4 of 30
What is the fundamental principle guiding Go's design?
Show the answer
Answer: d · Optimizing for practical engineering challenges in large systems.
Go was created to solve practical problems like slow builds and complexity in massive codebases, prioritizing engineering concerns such as maintainability and team productivity. It explicitly avoids being a research language or focusing on novel paradigms.
Read the full bite: Go's Design Philosophy: Engineering Over Novelty
Question 5 of 30
A team needs to speed up queries on a large table and purge old records. Which task requires DDL?
Show the answer
Answer: b · Adding an index on the date column to speed up filtering
Adding an index changes the database schema, which is the purpose of DDL. Purging old rows may seem structural, but it only deletes data, making it a DML operation.
Question 6 of 30
For which scenario would a Python dataclass be the most suitable choice?
Show the answer
Answer: d · Creating a simple data structure to represent an API response with predefined fields.
Dataclasses are designed for classes whose primary purpose is to store and group data, making them perfect for structured records like API responses. They are not recommended for classes with complex logic, intricate state, or custom initialization needs, which are better handled by regular classes.
Read the full bite: Python Data Classes: Write Less Boilerplate
Question 7 of 30
What is a key advantage of Rust's philosophy of bundling its official documentation with the language installation?
Show the answer
Answer: c · It guarantees developers have immediate, offline access to comprehensive learning materials.
The card states that bundling the documentation ensures every user has immediate, offline access to a high-quality learning resource. Option D is incorrect because documentation adds to the download size, it doesn't reduce it.
Read the full bite: Rust's Philosophy: Documentation and Community First
Question 8 of 30
For which type of task would Node.js's event-driven model, relying on EventEmitter, typically be least effective?
Show the answer
Answer: a · Performing intensive image manipulation or video encoding.
CPU-bound work such as image manipulation can block the single-threaded event loop. EventEmitter invokes listeners synchronously; asynchronous I/O can schedule later events but does not make listener execution asynchronous. The model is strongest for I/O-bound work.
Question 9 of 30
Which action is a clear use of DML because it changes stored data rather than table structure or read-only querying?
Show the answer
Answer: d · Inserting a new row into an existing table
Inserting a new row is explicitly called a textbook DML operation that alters stored data. Running a SELECT statement is a tempting distractor because the card notes that read-only querying is sometimes classified separately as DQL rather than being grouped with DML.
Question 10 of 30
What is the primary function of an __init__.py file in a Python directory?
Show the answer
Answer: c · To explicitly designate the directory as a Python package.
For a regular package, __init__.py historically marks the package and can run initialization code, so C is the intended answer in this question. Namespace packages can omit the file; importing submodules or exposing a public API is optional behavior, not automatic.
Read the full bite: Python Packages: Grouping Modules with __init__.py
Question 11 of 30
A Go server spawns a goroutine per incoming request, and one handler blocks forever reading from a channel that nothing will ever write to. What happens to that goroutine?
Show the answer
Answer: b · It stays alive indefinitely, quietly consuming its stack memory, because Go never force-cancels a blocked goroutine on its own
Go has no automatic timeout or forced cancellation for a blocked goroutine, so it simply stays parked, leaking its stack, until the process exits or something explicitly unblocks it. The runtime does not kill it after a timeout, a single blocked goroutine does not crash the whole program since Go only reports a deadlock when every goroutine is blocked at once, and the garbage collector does not collect a goroutine that could still be unblocked.
Question 12 of 30
What is the primary reason to avoid using "natural keys" like email addresses as primary keys?
Show the answer
Answer: a · Their values can change over time, complicating data management and relationships.
The card states that natural keys "can change, which creates a maintenance nightmare" and requires updating the value in every referencing table. This directly points to complications in data management and maintaining relationships. While other options might have some truth in different contexts, the card emphasizes changeability as the core issue.
Read the full bite: Primary Keys: The Unique ID for Every Row
Question 13 of 30
What primary problem do Python Enums address in code?
Show the answer
Answer: c · Making code more readable and less prone to errors when using fixed sets of values.
The card states Enums solve the problem of "magic values" by providing a "robust, readable, and type-safe way to define a fixed set of named constants," making code's intent "immediately clear." While Enums contribute to type safety, their primary purpose is to replace obscure "magic numbers" with meaningful names for fixed sets of choices, improving readability and reducing errors from typos or misunderstandings.
Read the full bite: Python Enums: Give Names to Magic Numbers
Question 14 of 30
How does a concrete type in Go become an implementer of an interface?
Show the answer
Answer: b · By defining all the methods specified in the interface's method set.
A type satisfies an interface implicitly by implementing its methods, without an 'implements' keyword. Option B accurately describes this structural typing, where a type automatically satisfies an interface if it provides all the required methods. Option C is incorrect because Go does not use an explicit 'implements' keyword.
Read the full bite: Go Interfaces: Describe Behavior, Not Data
Question 15 of 30
Regarding variable mutability, what is the fundamental difference between Rust and Go?
Show the answer
Answer: d · Rust variables are immutable by default and need an explicit keyword for mutability, whereas Go variables are mutable by default.
The card explicitly states that Rust variables are immutable by default and require the 'mut' keyword to become mutable, while Go variables are mutable by default. Option A incorrectly swaps the default behaviors of the two languages.
Read the full bite: Go vs. Rust: Variable Mutability by Default
Question 16 of 30
According to the CommonJS mental model, what is the default state of variables and functions defined within a module file?
Show the answer
Answer: b · They are private to the module unless explicitly exported.
The card states that variables and functions inside a module are private by default and must be exported to be shared, so B is correct. A and D describe global or shared visibility and are incorrect; C is also incorrect because code remains accessible within its defining module before another module imports it.
Read the full bite: CommonJS: Node.js's Original Module System
Question 17 of 30
What is the primary function of the package.json file when a new developer sets up a Node.js project?
Show the answer
Answer: d · It lists all external code the project depends on and defines how to run common tasks.
The correct answer is D: package.json lists external dependencies and defines runnable scripts, helping a developer install the project and run tasks such as npm start. Option B is incorrect because a runtime version may be suggested but is not the primary function tested here.
Read the full bite: package.json: The Blueprint for Your Node.js Project
Question 18 of 30
Given two slices, s1 and s2, where s2 is created by slicing s1, what happens if you modify an element in s2?
Show the answer
Answer: d · The modification will also be visible in s1, because both slices reference the same underlying array.
Slices are descriptors that point to a segment of an underlying array. When s2 is created by slicing s1, both slices typically point to the same underlying array. Therefore, modifying an element through s2 will also reflect the change when accessing the same element through s1. The most tempting distractor (C) is incorrect because slices do not copy their data when created from another slice; they share the underlying storage.
Question 19 of 30
What is the primary purpose of creating an Entity-Relationship Diagram (ERD)?
Show the answer
Answer: a · To provide a visual blueprint for a relational database schema before implementation.
An ERD serves as a blueprint for designing a relational database schema before any tables are created, preventing costly rework. It is explicitly stated that designing the model to match the UI is a common pitfall, and ERDs are less useful for NoSQL databases.
Read the full bite: Entity-Relationship Diagrams: A Blueprint for Your Data
Question 20 of 30
What is the primary reason for creating a single FastAPI instance (e.g., app = FastAPI()) for your application?
Show the answer
Answer: d · It serves as the central manager for all routing, configuration, and lifecycle events.
The FastAPI instance acts as the central, authoritative object that orchestrates the entire application, managing all routing, configuration, and lifecycle events. While it does contribute to API documentation, that is a feature derived from its central management role, not its primary purpose for being a single instance.
Read the full bite: FastAPI Application Instance: Your API's Central Hub
Question 21 of 30
What is the main reason for differentiating between "dependencies" and "devDependencies" in a Node.js project?
Show the answer
Answer: c · To separate runtime packages from development-only tools, which can reduce production install size and potential security exposure.
C is the best answer: separating runtime dependencies from development-only tools can reduce production install contents when deployment omits development dependencies. The classification alone does not guarantee a smaller bundled artifact or a security improvement; it describes when packages are needed.
Read the full bite: Dependencies vs. DevDependencies: What's the Difference?
Question 22 of 30
What is the primary characteristic that a table must satisfy to be in First Normal Form (1NF)?
Show the answer
Answer: c · There are no repeating groups or multi-valued attributes within any column.
The correct answer B directly states the core principle of 1NF: ensuring each cell contains a single, atomic value by disallowing repeating groups or lists. Option D, while true for relational tables, describes a primary key's role, not the specific atomicity requirement of 1NF.
Question 23 of 30
Which scenario represents an inappropriate use of a FastAPI path operation decorator's arguments?
Show the answer
Answer: c · Dynamically changing the HTTP status code based on specific input conditions.
FastAPI decorator arguments are designed for static configuration, such as setting a default status code or grouping endpoints. Dynamic logic, like returning different status codes based on request input, should be handled within the endpoint function itself, not via decorator arguments.
Read the full bite: FastAPI: Configure Endpoints with Decorators
Question 24 of 30
What is the primary mechanism that allows npm scripts to execute project-specific tools (like jest or webpack) without requiring them to be installed globally?
Show the answer
Answer: a · npm temporarily adds the project's node_modules/.bin directory to the system's PATH during script execution.
The card states that npm temporarily adds the project's node_modules/.bin directory to the system's PATH, allowing local executables to be run by name. Option C is incorrect because npm does not automatically install global dependencies for scripts.
Read the full bite: npm Scripts: Your Project's Command-Line Shortcuts
Question 25 of 30
Which scenario *requires* the use of a junction table in a relational database?
Show the answer
Answer: b · A product belonging to several categories, and each category containing multiple products.
Option B describes a many-to-many relationship, which is the fundamental problem junction tables are designed to solve. Options A, C, and D all represent one-to-many relationships, which can be modeled by placing a foreign key directly in the 'many' side table without needing a junction table.
Question 26 of 30
In FastAPI, what is the primary consequence of defining a path parameter without a type hint (e.g., item_id instead of item_id: int)?
Show the answer
Answer: c · The path parameter will always be treated as a string, regardless of its content.
The card explicitly states that 'without int, 123 is just a string,' meaning FastAPI treats untyped path parameters as strings by default. FastAPI does not infer types for path parameters; it requires explicit type hints for validation and conversion.
Read the full bite: Path Parameters: Turning URL Parts into Variables
Question 27 of 30
For which purpose are FastAPI query parameters most appropriately used?
Show the answer
Answer: b · To provide optional criteria for filtering or paginating a list of items.
The card states query parameters are for optional data like filtering, pagination, or sorting a collection of resources. Options A and D describe the purpose of path parameters, while option A describes when to use a request body, not query parameters.
Read the full bite: FastAPI Query Parameters: Beyond the URL Path
Question 28 of 30
What is the primary benefit of using Uvicorn workers for a FastAPI application in production?
Show the answer
Answer: d · It allows the application to utilize multiple CPU cores for concurrent request processing.
Uvicorn workers are designed to scale your application by running multiple processes, each capable of handling requests, thereby utilizing all available CPU cores to process requests concurrently. Options A and B are incorrect because workers actually complicate debugging and disable auto-reloading; option A is wrong as workers do not fix fundamentally slow or blocking application logic.
Read the full bite: Uvicorn Workers: Scaling Your FastAPI App
Question 29 of 30
What is the immediate consequence of attempting to assign a value to a Go map that has been declared but not initialized?
Show the answer
Answer: c · The program will encounter a runtime panic.
The card explicitly states that 'Writing to a nil map causes a runtime panic.' A declared-only map is nil, meaning it points to no underlying hash table structure. While some errors are caught at compile time, this specific issue is a runtime problem because the type system allows the declaration, but the operation itself is invalid without an initialized structure.
Question 30 of 30
What happens when a Rust Vec<T> is full and a new item is pushed into it?
Show the answer
Answer: a · It allocates a larger memory block, copies all existing items, then adds the new item.
When a Vec<T> is full, it reallocates by finding a new, larger contiguous memory block, copying all existing elements to it, and then adding the new element. This ensures the vector remains growable. Option D is incorrect because Vec<T> is designed to grow automatically, not to error out when capacity is reached.
Could you explain these out loud?
That is what an interview actually tests. Tezvyn gives you questions like these with what the interviewer is really checking, the answer that lands, and the mistake that ends the conversation, in the four minutes before your next meeting.
The iPhone app is on the way
We are building it. Until it lands, nothing here is held back from you: every interview card, your saved cards, streaks and the job board all work in Safari, plus hundreds of free practice quizzes of thirty questions each. Sign in and it all carries over to the app the day it arrives.
Want it as an icon? Tap Share at the bottom of Safari, then Add to Home Screen. It opens full screen and the cards you have read stay available offline.