/interview-questions

Stuff I use to prepare for interviews. Based off several CS courses from UIUC + https://github.com/donnemartin/system-design-primer.

Ace's interview questions

These are the conceptual "flashcard" questions (and answers) I use to prepare for software engineering interviews.

These questions are intended to cover the conceptual background you'll need to succeed. They are not a replacement for solving practice problems or implementing basic algorithms (e.g. sorting algorithms, binary search) yourself.

Mid/Senior-level folks: I recommend taking a look at Donne Martin's excellent System Design primer. The Cloud questions cover my knowledge gaps relative to that tutorial. (Your knowledge gaps will almost certainly be different than mine - feel free to send a pull request with your own questions for things I didn't cover.)

How I prepare for interviews

Caveat: most of this advice is geared towards junior/"new grad" interviews. More senior folks may still find it useful, however.

Part 1: conceptual questions

  1. Attempt to answer these questions from memory
  2. Review the answers I missed (usually via a script that records [in]correct answers)
  3. GOTO 1 until I get every question right more times than I've gotten it wrong

Part 2: practice questions

  1. Look at Glassdoor or similar sites for interview questions asked by a particular company for a particular role.
  2. Try to find trends in the questions - types, difficulty, concepts, etc.
  3. Attempt to answer representative-sample questions (from Glassdoor or other sites) before checking the (provided) answers
  4. Check the provided answers, and compare them to mine
  5. GOTO 3 until I feel comfortable and confident with a particular company's question level
  6. GOTO 1 for every different company I'm interviewing with

You can also do step 4 in groups.

Part 3: a few days before the interview

  1. Go over some common algorithms and implement them yourself:
  • Sorts (quicksort, mergesort, insertion sort)
  • Binary tree traversals (insertion, deletion, search)
  • Balanced binary tree (e.g. AVL tree) operations (insertion, deletion, search)
  1. Test them against common edge cases
  2. Tweak your implememtations until all your test cases pass
  3. Do any other last-minute prep (e.g. reading company engineering blogs) now.

Part 3: the night before the interview

  1. Do not prep any further. (Ideally, you're fully prepared by this point anyway.)
  2. Do something fun and relaxing to calm your nerves.
  3. Get a good dinner and a good night's sleep.

Part 4: the day of the interview

  1. Have a solid breakfast.
  2. Remember that stupid rejections happen to everyone.
  3. Good luck! You'll do great. :)

Misc. stuff

Credits

The questions are based off material from the following UIUC courses:

  • CS173 (Discrete Mathematics)
  • CS225 (Data Structures)
  • CS233 (Computer Architecture)
  • CS241 (System Programming)

License

This content is licensed under an Apache 2.0 license.

Errata

This repo is rarely updated, however I do keep an occasional eye out for pull requests - so feel free to send them.

Resources

Here are some things that I've found helpful throughout my career: