Computer Science Fundamentals
Nobody implements a B-tree at work, yet the core subjects keep being asked, because how someone explains paging or an index is the cheapest available predictor of how they will reason about an unfamiliar system under pressure.
Assumes you know: Comfort reading code in one language, Having deployed or operated something that other people used
Overview
What this area actually covers
The core-subject rounds draw on four or five undergraduate courses: operating systems, computer networks, database theory, the object-oriented model, and how source code becomes running instructions. Within each, an interview reaches for a small and stable set of ideas — process versus thread and what a context switch costs, virtual memory mapping addresses that do not exist to pages that do, TCP's guarantees against UDP's absence of them, functional dependencies and what a transaction promises, and the phases between text and execution.
The boundary that matters is against system design. System design asks you to choose and arrange components; fundamentals ask you to explain why a component behaves as it does. "Put a cache in front of the database" is a design answer. "The cache helps because the working set fits in memory and a page fault costs several orders of magnitude more than a hit" is a fundamentals answer, and only one of them survives being asked why three times.
Data structures and algorithms are also frequently bundled in here and should not be. Sorting, trees and complexity analysis are their own round with its own format — you write code, and it either runs or it does not. Fundamentals questions are almost always verbal, which changes what a good answer looks like entirely.
Now practise it
26 interview questions in CS Fundamentals, each with the rubric the interviewer is scoring against.
- Explain ACID using a bank transfer of 100 from one account to another, and tell me what isolation protects you from.
- State the four conditions for deadlock, then show me how you would stop a real program from deadlocking.
- Skip the definitions. Show me encapsulation, abstraction, inheritance and polymorphism, each in about ten lines of code, and then tell me when inheritance is the wrong tool.
- Here is one messy student table. Normalise it to third normal form in front of me, then tell me when you would undo it.