Skip to content
tezvyn:

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 550 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. Nothing is saved, and no XP or streak is earned here. The app keeps score.

  1. 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

  2. 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

  3. 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's core role is to compile JavaScript into native machine code, enabling high-performance execution. While environments like Node.js provide APIs for interactions (option D), V8 itself is solely the engine responsible for processing the JavaScript code.

    Read the full bite: V8: The Engine Powering Chrome and Node.js

  4. 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

  5. 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.

    Read the full bite: DDL: The Blueprint for Database Objects

  6. 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

  7. 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

  8. 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.

    The event-driven model is least effective for CPU-bound tasks like image manipulation because they block the single-threaded event loop. It excels at I/O-bound tasks such as network requests, database queries, and file operations.

    Read the full bite: Node.js Events and the EventEmitter

  9. 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.

    Read the full bite: DML: Insert, Update, and Delete

  10. 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.

    The card states that "Its mere presence turns a regular directory into an importable package," indicating its fundamental role is to mark a directory as a package. While it can contain code to import sub-modules (option A), this is an optional setup task, not its primary function of defining the package itself.

    Read the full bite: Python Packages: Grouping Modules with __init__.py

  11. 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.

    Read the full bite: Goroutines

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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, "By default, all tools and materials (variables, functions) inside are private. To share a tool, you place it on a public shelf called exports." This means they are private unless explicitly exported. Options A and B describe the opposite of CommonJS's encapsulation, and D is incorrect because variables are accessible within their own module before any import.

    Read the full bite: CommonJS: Node.js's Original Module System

  17. 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 B because package.json explicitly lists all external libraries (dependencies) required for the project and defines runnable scripts. This allows a new developer to quickly install everything with 'npm install' and run tasks like 'npm start', making the project self-contained and reproducible. Option B is incorrect because while package.json can suggest a Node.js version, its primary role for initial setup is dependency and script management.

    Read the full bite: package.json: The Blueprint for Your Node.js Project

  18. 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.

    Read the full bite: Go Slices: A Window into an Array

  19. Question 19 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

  20. Question 20 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

  21. 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 reduce the final production bundle size and enhance security.

    The card states this separation "prevents shipping unnecessary code to production, which saves disk space, reduces installation time, and minimizes the potential security attack surface." Option D is incorrect because the distinction aims to exclude development tools from production, not include them, to avoid bloat and security risks.

    Read the full bite: Dependencies vs. DevDependencies: What's the Difference?

  22. Question 22 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

  23. Question 23 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

  24. Question 24 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.

    Read the full bite: First Normal Form (1NF): No Nested Data

  25. Question 25 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

  26. Question 26 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.

    Read the full bite: Junction Table: Connecting Many to Many

  27. 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

  28. 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

  29. 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.

    Read the full bite: Go Maps: Your Built-in Hash Table

  30. 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.

    Read the full bite: Rust Vectors: Your Go-To Growable List

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.

Get it on Google PlayiPhone app coming soon