← All topics

πŸ–₯ Interview Prep

CS Fundamentals

Big-O, memory, processes and threads, operating systems, networking, databases, security and OOP: the theory rounds.

100 questions, most asked first

Ordered so the most useful questions for learning each pattern come first.

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