• Blog
  • Course
  • About
  • Contact

Reginald Long

How I went from failing every interview to a job at Amazon

I studied computer science at Stanford. You probably would’ve expected me to be swimming in job offers. In my sophomore year and first-half of junior year, I got a lot of interviews, and I failed every single one of them. And not in a, “this person is qualified, but other people are better qualified” type of way. It was more like a, “Why did we ever bother interviewing this person?”

For example, I would stumble on simple questions like generating all permutations of a set by writing a recursive program that wouldn’t even terminate (even though it was something you would learn how to code by the second intro to CS class).

About halfway through the interviews, the interviewer would seemingly give up in frustration. A few days later, I would receive the dreaded, “Thank you for your interest” email.

“Maybe this just wasn’t meant for me,” I would tell myself. I was a straight A student, but that would only get me to the interview stage, where I would inevitably fail in a spectacular fashion. All of my friends seemed to be killing it, getting internships at the standard Google/Facebook/hot silicon valley startup. Maybe people were “handing out” jobs, but they certainly weren’t handing it out to me. 

By the time I reached the end of my junior year, there wasn’t any more time for me to complain about how the technical interview was unfair or how I was behind because I never did competitive programming. I started working through CTCI (Cracking the Coding Interview) and EPI (Elements of Programming Interviews). In the beginning, I would always read a question, then inevitably flip to the answer because I didn’t know how to solve it. Eventually, I could do the easy problems, then the medium problems, and so on.

Finally, this came in the mail.

Over time, I’ve learned that interviewing is a skill. If you treat interviewing like a skill, and not an inherent capability, then you have the agency to improve enough to get your dream tech job. It’s easy to lament the state of software engineering interviews, but it’s harder to accept it and create a plan for success. But would you rather complain and feel good about yourself or have a job?

Takeaways

  • Interviewing is a skill that you can learn
  • Set up a system for studying for interviews (Listed below)

My study system

  • Every day, do at least one problem from a book/website listed below. As you get closer to the interview date (e.g. 2 weeks away), I would recommend doing 3-5 interview questions a day.
  • Get a whiteboard (or a pen and paper). Make sure to talk out loud or write down what you’re saying (it’s not enough to work through a problem in your head)
  • Tips for working through a practice problem
    • Time yourself to test if you can really solve a problem in an interview setting (I usually give myself 30 minutes)
    • As you work through a problem, think of questions you would ask to clarify the problem statement/constraints
    • Sketch a general approach for solving the problem before writing code. 
    • Once you write the code, think of test cases and run those cases through your program
    • Finally, compare your program against the reference solution and see what’s different
  • Books used
    • Cracking the Coding Interview
    • Elements of Programming Interviews
  • Websites used
    • InterviewBit

Other useful study resources

  • Gainlo: Practice with mock interviews. The blog is pretty useful for working out interview questions.
  • InterviewCake: List of very detailed solutions to 44 problems. Gives you hints as you get stuck on a problem and teaches the right way to work through an interview problem.

Download my free guide to solving any interview problem, even when you're stuck.

* indicates required

Comments

  1. Joe says

    April 30, 2017 at 10:03 pm

    What language did you end up using for your interviews? Based on the books, was it Java?

    Reply
    • reggylong says

      May 1, 2017 at 5:34 am

      I like doing programming interviews in Python. I’ve found it a lot easier to write on the spot and more concise. For example, to declare a dict, you’d write

      dictionary = {}

      vs.

      Map dictionary = new HashMap<>();

      However, Java is a perfectly fine choice too.

      Reply
  2. Joe says

    April 30, 2017 at 10:03 pm

    How long did you end up studying for?

    Reply
  3. gEEk says

    May 1, 2017 at 3:14 am

    Great write-up of an all-too-common experience. It’s easy to forget that interviewing for any job – including programming – is a skill that can be learned. Surprised you didn’t mention interviewing.io among the sites, it’s another good option, but the key point is the same – practice makes perfect.

    Reply
    • reggylong says

      May 1, 2017 at 5:37 am

      interviewing.io is great! However, it’s in beta right now, so it’s not widely accessible to the public.

      Reply
      • Joe says

        May 1, 2017 at 9:03 am

        How do InterviewBit, InterviewCake, and interviewing.io compare?

        Reply
        • reggylong says

          May 2, 2017 at 3:48 am

          I’ll highlight what each service does best.
          InterviewBit: Practicing the coding part of interviews.
          InterviewCake: Practicing how to come up with an algorithm
          interview.io: Doing mock interviews (from start to end).

          Reply
      • Joshua Bezaleel Abednego says

        June 27, 2017 at 3:37 pm

        do you know when interviewing.io will be available to the public?
        thanks!

        Reply
  4. Jason Motylinski says

    May 2, 2017 at 1:43 pm

    I also like http://www.geeksforgeeks.org for coding koans.

    Reply

Leave a Reply to reggylong Cancel reply

Your email address will not be published. Required fields are marked *

Over the last two years, I've received offers from Amazon, Microsoft, Asana, and other trendy startups.

Sign up, and I'll show you how you can land your dream engineering job.
* = required field

Recent Posts

  • F*ck Recursion: Your Guide to Overcoming Your Worst (Interview-Related) Fear
  • Interview Problem: Compile a file and its dependencies
  • How do I practice an interview problem?
  • Why did I fail my interview?
  • How I went from failing every interview to a job at Amazon