Before you can even interview, you must first get the opportunity. To prep your resume and get the attention of top companies, first check out this awesome guide by Cassidy Williams of Hackathon Hackers.
- Data Structures - Know how to use them and how to build them from scratch
- Arrays
- Hash Maps
- Linked Lists
- Graphs & Tree variants
- Stacks & Queues
- Algorithms - DON'T memorize code. Memorize the concepts.
- Sorts
- Quick Sort
- Insertion Sort
- Selection Sort
- Searches
- Binary Search (for ordered collections)
- Depth-First Search (graphs)
- Breadth-First Search (graphs)
- Sorts
- Dynamic Programming (AKA memoization)
- Recursion
- Bit-Manipulation
- Object-Oriented Programming
- System Design
- Scalability
- LeetCode
- Project Euler
- Facebook Code Lab
- Geeks for Geeks
- Career Cup
- SPOJ
- HackerRank
- CodeChef
- CodingBat (beginner to intermediate Java and Python)
- Pramp Practice Interviews
- Cracking the Coding Interview 6th Edition
- Cracking the PM Interview
- Cracking the Tech Career
- Elements of Programming Interviews: The Insider's Guide
- Big-O Cheat Sheet
- Python 2.7 Cheat Sheet
- Technical Interview Cheat Sheet
- JavaScript Cheat Sheet
- Java Cheat Sheet
- Ruby Cheat Sheet
Even if you fumble on the technical question, you can gain some redemption with interviewers by asking very insightful questions about the engineering problems they are tackling and prodding about how they are scaling their product. I don't mean "So what language do you guys use?". More like "How did you overcome challenge X when developing service Y?".
- Apple
- Digital Ocean
- Dropbox
- Duo Security
- Facebook (and associated products)
- Github
- Google (and associated products)
- Intuit
- Khan Academy
- Lyft
- Microsoft
- Netflix
- Riot Games
- Shopify
- Snapchat
- Spotify
- Uber
- Yelp