- Well known programming languages
- Dynamically typed vs statically typed languages
- Favorite programming language
- Functional vs imperative programming languages
- Built-in data types
- Value vs reference types
- Pointers
- Binary representation (byte/short/long/int)
- Signed/unsigned integers
- Floating point
- Structs
- Tuples
- Bitwise operations
- if
- switch
- loops (for, while, do)
- Function calls
- Named parameters
- Output parameters
- Recursive functions
- Call stack
- try/catch
- Return codes
- Arrays
- Dictionaries (Maps)
- Sets
- Linked lists
- Stacks
- Trees
- Queues
- Graphs
- Find an element in an array
- Array reversal
- Array filtering
- Sum of an array
- Insertion sort
- Binary search
- Space/Time complexity
- Quick sort
- Depth first search
- Breadth first search
- Dynamic programming
- Graph algorithms
- Hashing algorithms
- Linear equation solvers
- classes
- objects (instances)
- inheritance
- polymorphism
- abstraction
- encapsulation
- access specifiers
- Object lifetime
- SOLID principles
- Caching
- Serialization
- Object-relational mapping
- Garbage collection
- Hashing
- Lazy loading
- Dependency injection
- Breakpoints
- Unit tests
- Integration tests
- Test-driven development
- Concurrent data structures
- Main/background thread
- Multi-threading
- Locking mechanisms
- Deadlocks
- Parallel algorithms