Programming Languages & Core Development Topics
Programming languages, development fundamentals, coding concepts, and core data structures. Includes syntax, algorithms, memory management at a programming level, asynchronous patterns, and concurrency primitives. Also covers core data manipulation concepts like hashing, collections, error handling, and DOM manipulation for web development. Excludes tool-specific proficiency (see 'Tools, Frameworks & Implementation Proficiency').
C and C++ Programming
The C and C++ languages: syntax and semantics, the type system, the standard library and STL, templates, RAII, and idiomatic modern C++. Covers writing correct code and reasoning about the language features that distinguish these systems languages from managed ones. A primary language surface for systems, game, and embedded interviews.
Programming Fundamentals
Language-agnostic building blocks of writing code: variables, primitive and composite data types, scope and lifetime, functions and callbacks, control flow, and expressions versus statements. Covers the mental model a candidate needs before any language-specific or algorithmic depth. The baseline literacy layer of a technical screen.
JavaScript and TypeScript Fundamentals
The JavaScript and TypeScript language surface: scope, closures, the this binding, prototypes and inheritance, the type system, modern ES features, and common language patterns. Covers the deep language-mechanics questions frontend and full-stack interviews lean on, independent of any framework. TypeScript's static typing is treated as an extension of the same core.
Assembly and Low-Level Language Fundamentals
Programming at or near the instruction level: assembly syntax, registers, the stack, calling conventions, and translating higher-level code down to machine operations. Covers reasoning about how source constructs map to CPU instructions. A niche but high-signal surface for embedded, systems, and security work.
Language-Level Memory Management (C/C++/Rust)
How specific languages expose and manage memory: pointers and references, pointer arithmetic, stack versus heap allocation, ownership and borrowing in Rust, RAII and smart pointers in C++, manual allocation and freeing in C, and garbage-collection semantics as a language feature. Covers reasoning about ownership, lifetimes, leaks, and dangling references at the language level. OS-level virtual memory and paging internals live in Operating Systems & Systems Programming.
Shell Scripting and Automation
Automating tasks with the command line: Bash and shell scripting, pipes and redirection, text processing, and writing custom tooling and monitoring scripts to glue systems together. Covers the scripting fundamentals infrastructure and platform engineers use daily, including automation-oriented use of general-purpose scripting. Distinct from application programming in its throwaway-to-durable tooling mindset.
Android Development (Kotlin and Java)
Native Android programming: the Kotlin language and Java interoperability, coroutines and concurrency, Android collections and data structures, and platform fundamentals. Covers writing correct native Android code and reasoning about the Kotlin/JVM runtime on-device. The primary Android-platform mobile surface.
Object-Oriented Programming and Design
The object-oriented paradigm: classes and objects, encapsulation, inheritance, polymorphism, and composition, plus SOLID and other design principles that keep object models maintainable. Covers modeling a domain in objects and defending those design choices. A staple conceptual interview across most engineering roles.
DOM Manipulation and Browser APIs
Programming the browser platform: the Document Object Model, traversal and mutation, event handling and the event model, and the wider set of browser and web-platform APIs. Covers manipulating rendered pages and reasoning about browser internals without relying on a framework. A core frontend interview surface.