My Notes On SWE Technical Coding Interviews


Some General Tips

Checklist for the days before the interview

Checklist for the hour before the interview

Technical stuff:

Behavioural stuff:

Summary of General Tips For Coding

General flow:

  1. Ask about the format/expectations of the interview.
    • How many questions?
    • How much time do you have?
  2. Clarify the question.
    1. Paraphrase/repeat the question back.
    2. Clarify what inputs you have.
    3. Clarify assumptions.
      • Also consider input format. (Negatives? Floats? Nulls? Empty? Duplicates?)
    4. Ask about input range.
    5. Work through some simple examples.
  3. Discuss approaches.
    • Identify and explain them at a high-level.
      • Tradeoffs?
      • Time/space complexity?
    • Consider:
      • Visualizing/Drawing
      • Solving by hand.
      • Come up with more examples.
      • Decompose the problem! (E.g. a grouping step? A hash function?)
  4. Optimize the chosen approach.
    • Different data structures?
    • In-place modifications?
  5. Write code while talking through it.
    • Point out any corner-cutting (such as use of .split() rather than regex).
  6. Write test cases.
    • Edge cases!
    • Worst case time/space performance!
  7. Implement some improvements?
    • (Also refer to STEP 3)
    • Refactor redundant work?
    • Early termination?
  8. Revisit time/space complexity.
  9. Discuss more improvements that you could do if you had time.
  10. Revisit tradeoffs?

Common Design Approaches

(TODO: I should write this out!)

Word Bank

It can be easy to forget the names very trivial things sometimes, even if you’re comfortable using the concepts intuitively. I’m perhaps more comfortable than most when it comes to data structures and algorithms, but here are the things that I still need to be reminded of the names for:

Code Template

If you’re coding locally, here’s what I start with:

#!/usr/bin/env python3



def run():