Guide to prepare for HFT interviews (SWEs) - WIP, will continue to add as I am finding new resources myself.
Reading:
- Operating Systems: Three Easy Pieces - https://pages.cs.wisc.edu/~remzi/OSTEP/
- Algorithmica / HPC - https://en.algorithmica.org/hpc/ (AMAZING resource, concise and has all the basics you need/can read in < a week)
- What Every Programmer Should Know About Memory - https://people.freebsd.org/~lstewart/articles/cpumemory.pdf
- Performance book: https://book.easyperf.net/perf_book + https://github.com/dendibakh/perf-ninja (do the labs and watch vids after reading book)
- Inside The Machine - a more in-depth book about CPU hardware.
- Linux internals - https://0xax.gitbooks.io/linux-insides/content/.
Watching:
- CppCon 2017: Carl Cook “When a Microsecond Is an Eternity: High-Performance Trading Systems in C++” - https://www.youtube.com/watch?v=NH1Tta7purM (Goated)
- Trading at light speed: designing low latency systems in C++ - David Gross - Meeting C++ 2022 - https://www.youtube.com/watch?v=8uAW5FQtcvE (Good watch)
Activities:
- https://highload.fun/ (mess around with this to learn optimisation techniques)
- TCP/IP Illustrated - has all the networking knowledge needed.
- Learn eBPF - (https://github.com/eunomia-bpf/bpf-developer-tutorial?tab=readme-ov-file).
- io_uring - https://unixism.net/2020/04/io-uring-by-example-part-1-introduction/ + https://unixism.net/loti/
Reading:
- Competitive Programmer’s Handbook - https://cses.fi/book/book.pdf (short & sweet)
- Introduction to Algorithms - N/A (long, but whatever knowledge you need to consolidate from the CP handbook read specific chapters & answer qs)
Doing:
- Neetcode.io - https://neetcode.io/practice (Do the neetcode 150)
- Leetcode - https://leetcode.com/ (obvious but needed, do contests on weekends to build up the skill to solve qs under time pressure)
- CSES Problem set - https://cses.fi/problemset/list (Harder than LC but will make you better)
Advice:
- If you're going for ultra-high-frequency shops i.e HRT/Jump/XTX etc best to use cpp for your DSA prep, will help you get used to the language faster & you'll learn how to use common std lib data structures
C++: (maybe outta date idk)
- Learn CPP dot com - https://www.learncpp.com/ (Really good intro to cpp)
- Effective Modern C++ - https://www.amazon.co.uk/Effective-Modern-Specific-Ways-Improve/dp/1491903996
- Optimizing software in C++ - https://www.agner.org/optimize/optimizing_cpp.pdf
- C++ High Performance - https://www.amazon.com/High-Performance-Master-optimizing-functioning/dp/1839216549
- https://rigtorp.se/ - Good cpp focused blog.
Rust (For crypto-focused HFTs):
- https://rust-book.cs.brown.edu/title-page.html - Intro to Rust book
- https://github.com/rust-lang/rustlings - Small Rust challenges to get used to the language.
- https://rust-lang.github.io/async-book/part-guide/intro.html - Async Rust guide (Also read Tokio docs + watch Jon Gjengset: Decrusting tokio crate on YT).
- https://rust-unofficial.github.io/patterns/intro.html - Design patterns.
- https://nnethercote.github.io/perf-book/title-page.html - Rust perf book.
- https://marabos.nl/atomics/ - low lvl stuff.
- https://doc.rust-lang.org/nomicon/ - unsafe topics in Rust.
- https://rust-unofficial.github.io/too-many-lists/index.html - examples using all of above.
- https://os.phil-opp.com - Great blog series on creating an OS in rust.
Reading:
- System Design Interview By Alex Lu - (Good, will help a bit long tho)
Watching
- Grokking Modern System Design Interview - Educative.io (Can finish it quite quickly, pair that with practising random cases with a friend)
Reading:
- Developing High-Frequency Trading Systems - https://www.amazon.co.uk/Developing-High-Frequency-Trading-Systems-high-frequency/dp/1803242817
- Ace the Trading Systems Developer Interview (C++ Edition) By Dennis Thompson - (Good for quick interview prep to brush up on C++ trivia etc, not a resource to rely on but will help if you forget some language-specific stuff + OS/Networking qs)
Doing:
- No better way to learn than to build your own projects focused on HFT i.e. Order Book implementation, order management system, your own MM bot etc.