-
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
- O(n), but O(n!) when matching.
- It's useful to be familiar with basic regex syntax, too.
-
Recursion
- And why it is rarely used.
-
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