-
The basics
- Conditions (if, else)
- Loops (for loops, while loops)
- Dictionaries
- Slices/lists/arrays
- String/array operations (split, contaings, length, regular expressions)
- Pseudo code (concisely describing your approach to a problem)
-
Data structures
- Dictionaries / hash tables (array of linked lists, or sometimes a BST)
- Arrays
- Stacks
- SQL/tables
- Bigtables
-
Sorting
- Quicksort, merge sort
-
Searching
- Binary vs linear
-
Big O
- For space and time
-
Regular expressions
- Typically O(n) to match, but backtracking engines can hit exponential O(2^n) worst case (catastrophic backtracking)
- It's useful to be familiar with basic regex syntax, too
-
Recursion
- And when to prefer iteration instead (stack depth / performance)
-
Python
- List comprehensions and generators [ x for x in range() ]
- Iterators and generators
- Slicing [start:stop:step]
- Regular expressions
- Types (dynamic types), data structures
- Pros and cons of Python vs C, Java, etc.
- Understand common functions very well, be comfortable in the language
-
Cyphers / encryption algorithms
- Be able to implement basic cyphers
-
Parse arbitrary logs
- Practice text parsing
-
Web scrapers
- Another way to practice text parsing
-
Port scanners
- Practice parsing network information
-
Botnets
- How would you build ssh botnet
-
Password bruteforcer
-
Scrape meta data from PDFs
-
Script to recover deleted items
-
A program that looks for malware signatures in binaries / code samples