๐ฅ 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
Ranked by how often each question comes up in real interviews. #1 is the most common.
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๐