π₯ Interview Prep
CS Fundamentals
Big-O, memory, processes and threads, operating systems, networking, databases, security and OOP: the theory rounds.
π Learn it from scratch
Visual, hands-on lessons for every pattern in this topic. Do the lesson, then come back and the questions click.
πBig-O in Plain EnglishπMemory: The Stack, the Heap & ReferencesπHow Numbers & Text Are StoredπProcesses, Threads & Doing Things at OnceπRace Conditions & How to Avoid ThemπNetworking Deep Dive: DNS, TCP & HTTPSπLatency Numbers & CachingπInheritance vs CompositionπSOLID Principles in Plain English
100 questions, most asked first
Ordered so the most useful questions for learning each pattern come first.
All patternsComplexityProcesses & threadsMemoryNetworkingOOPSOLID & clean codeConcurrencyOperating systemsNumbers & binarySecurity & cryptoDesign patternsLatency & cachingDatabases
#1π¬What's the Big-O of this code?ComplexityEasyFree#2π¬Process vs threadProcesses & threadsEasyFree#3π¬Stack vs heap memoryMemoryEasyFree#4π¬TCP vs UDPNetworkingEasyFree#5π¬The four pillars of OOPOOPEasyFree#6π¬SOLID principlesSOLID & clean codeMediumFree#7π¬What is a deadlock?ConcurrencyMediumFree#8π¬What is a race condition?ConcurrencyMediumFree#9π¬How does a hash table work?ComplexityMediumFree#10π¬What is virtual memory?Operating systemsMediumFreeπUnlock 90 more CS Fundamentals questions Β· all 1,200 questions for $39/year (about 11Β’ a day)See full access#11π¬The OSI and TCP/IP modelsNetworkingEasyπ#12π¬IP addresses, subnets and private networksNetworkingMediumπ#13π¬Compiled vs interpreted languagesComplexityEasyπ#14π¬Recursion and the call stackMemoryEasyπ#15π¬Binary and two's complementNumbers & binaryMediumπ#16π¬How floating-point numbers workNumbers & binaryMediumπ#17π¬Hashing vs encryption vs encodingSecurity & cryptoEasyπ#18π¬Symmetric vs asymmetric encryptionSecurity & cryptoMediumπ#19π¬The singleton patternDesign patternsEasyπ#20π¬The factory patternDesign patternsEasyπ#21π¬The observer patternDesign patternsEasyπ#22π¬The strategy patternDesign patternsEasyπ#23π¬The decorator patternDesign patternsMediumπ#24π¬The adapter patternDesign patternsEasyπ#25π¬Method overloading vs overridingOOPEasyπ#26π¬Interfaces vs abstract classesOOPMediumπ#27π¬Amortized time (why list.append is O(1))ComplexityMediumπ#28π¬Space complexityComplexityEasyπ#29π¬Comparing sorting algorithmsComplexityMediumπ#30π¬Concurrency vs parallelismProcesses & threadsEasyπ#31π¬Mutex vs semaphoreConcurrencyMediumπ#32π¬Context switchingOperating systemsMediumπ#33π¬CPU scheduling algorithmsOperating systemsMediumπ#34π¬Paging and page faultsOperating systemsMediumπ#35π¬CPU caches and localityLatency & cachingHardπ#36π¬How garbage collection worksMemoryMediumπ#37π¬User mode, kernel mode and system callsOperating systemsMediumπ#38π¬File systems and inodesOperating systemsMediumπ#39π¬The TCP three-way handshakeNetworkingMediumπ#40π¬Sockets and portsNetworkingEasyπ#41π¬How a CPU runs your codeNumbers & binaryEasyπ#42β¨οΈBitwise operationsNumbers & binaryMediumπ#43π¬ASCII, Unicode and UTF-8Numbers & binaryMediumπ#44π¬EndiannessNumbers & binaryMediumπ#45π¬How databases store data on diskDatabasesHardπ#46π¬ACID vs BASEDatabasesMediumπ#47π¬How databases execute joinsDatabasesHardπ#48π¬TLS certificates and PKISecurity & cryptoMediumπ#49π¬HMAC and signed tokensSecurity & cryptoMediumπ#50π¬The OWASP Top 10Security & cryptoMediumπ#51π¬Big-O of common data structuresComplexityMediumπ#52π¬Arrays vs linked listsMemoryEasyπ#53π¬Hash collisions and good hash functionsSecurity & cryptoMediumπ#54π¬Trees vs graphsComplexityEasyπ#55π¬Adjacency list vs adjacency matrixComplexityMediumπ#56π¬Divide and conquer vs greedy vs dynamic programmingComplexityMediumπ#57π¬P, NP and NP-complete in plain EnglishComplexityHardπ#58π¬Recursion vs iterationMemoryEasyπ#59π¬Tail recursionMemoryMediumπ#60π¬Why immutability helpsSOLID & clean codeEasyπ#61π¬Functional programming vs OOPOOPMediumπ#62π¬Dependency injectionSOLID & clean codeMediumπ#63π¬Coupling and cohesionSOLID & clean codeEasyπ#64π¬DRY, KISS and YAGNISOLID & clean codeEasyπ#65π¬Common code smellsSOLID & clean codeEasyπ#66π¬MVC and similar architecturesDesign patternsEasyπ#67π¬Layered and clean architectureSOLID & clean codeMediumπ#68π¬Thread poolsProcesses & threadsMediumπ#69π¬The producer-consumer problemConcurrencyMediumπ#70π¬The dining philosophers problemConcurrencyHardπ#71π¬Async I/O vs threadsProcesses & threadsMediumπ#72π¬Inter-process communication (IPC)Processes & threadsMediumπ#73π¬Containers vs virtual machinesOperating systemsEasyπ#74π¬What happens when you run a program?Operating systemsMediumπ#75π¬How a compiler worksNumbers & binaryMediumπ#76π¬What is JIT compilation?Numbers & binaryMediumπ#77π¬How packets find their way across the internetNetworkingMediumπ#78π¬NAT (network address translation)NetworkingMediumπ#79π¬Latency vs bandwidth vs throughputLatency & cachingEasyπ#80π¬How compression worksNumbers & binaryMediumπ#81π¬Checksums and data integritySecurity & cryptoEasyπ#82π¬Integer overflow bugsNumbers & binaryMediumπ#83π¬What makes a hash function cryptographic?Security & cryptoMediumπ#84π¬Digital signaturesSecurity & cryptoMediumπ#85π¬Authentication vs authorizationSecurity & cryptoEasyπ#86π¬Least privilege and defense in depthSecurity & cryptoEasyπ#87π¬Heisenbugs and flaky behaviourConcurrencyMediumπ#88π¬The two generals problemNetworkingHardπ#89π¬The fallacies of distributed computingNetworkingMediumπ#90π¬Moore's law and the multicore eraProcesses & threadsEasyπ#91π¬What does an operating system do?Operating systemsEasyπ#92π¬What is an API?NetworkingEasyπ#93π¬How does the internet work (the big picture)?NetworkingEasyπ#94π¬What is a database, and why not just use files?DatabasesEasyπ#95π¬Cloud computing basics (IaaS, PaaS, SaaS, serverless)Operating systemsEasyπ#96π¬Memory safetyMemoryMediumπ#97π¬CPUs vs GPUsProcesses & threadsEasyπ#98π¬Procedural vs object-oriented codeOOPEasyπ#99π¬Explain a technical concept to a non-technical personComplexityMediumπ#100π¬Open-source licensesSOLID & clean codeEasyπ