โ† 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

Ranked by how often each question comes up in real interviews. #1 is the most common.

#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๐Ÿ”’