Background: I'm a non-CS PhD with a CS master's. Earlier this year, after there was a lot of negative news about my advisor, I switched advisors, gave up on academia, and started interviewing.
Prep: since I had no internship experience and I'm not a CS PhD, my rule for myself was that I had to land an offer within at most two interviews, so I probably prepared more than I actually needed to. Roughly, here's what my prep looked like:
- LeetCode: about 700 problems total — 200 easy, 400 medium, 100 hard
- Machine Learning and Statistics: I had a fairly strong foundation from undergrad and grad school, so I didn't do much extra prep here. If your foundation isn't strong, you'd need to at least have a solid handle on regression, hypothesis testing, the basic ML algorithms, basic deep learning network architectures, time series analysis, and causal inference.
- Design: for backend design I went through about 18 questions from resources I found on GitHub, and for data design I covered about 10 of the commonly-asked ones. For each question I'd get an initial answer from ChatGPT, then refine it myself using papers, and practiced each one three or four times until I basically had it fully memorized.
- SQL/Pandas: did about 100 problems. Didn't prepare Spark at all.
- Behavioral questions: prepared 30 Amazon behavioral questions using the STAR method.
Interview process:
- Phone screen — 30 minutes of fundamentals. 15 minutes of pandas work, mainly testing timestamps and groupby. 15 minutes of coding — Dijkstra's algorithm with obstacles.
- Virtual onsite:
- Round 1 — all behavioral questions
- Round 2 — 30 minutes of behavioral questions, plus a design question on spam detection
- Round 3 — all behavioral questions
- Round 4 — 30 minutes of behavioral questions, 15 minutes of coding (the LeetCode best-time-to-buy-and-sell-stock max-profit question), 15 minutes of design (fraud detection)
- Round 5 — all coding: a BST lowest-common-ancestor question, LC 3479, and Course Schedule III
All of the coding questions were dressed up with different descriptions, but the underlying solution approach never actually changed.
Result: passed, got an entry-level Applied Scientist L4 offer.
Discussion
Loading comments…