DEV Community

reggylong
reggylong

Posted on

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

Originally posted here

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

If this post has helped you in any way, please subscribe to reginaldlong.com

Top comments (18)

Collapse
 
florianschaetz profile image
(((Florian Schätz))) • Edited

Who really wants to work for a company that asks you to whiteboard basic CS nonsense that you can google in less than a minute? That's a sure sign that the people who hire you are in no way connected to the people you will work with, because those people would have questions actually relevant to the job. I got my degree, but if a company asks me to balance a tree on a whiteboard for the interview, I leave. There might be some positions where such knowledge is actually what you do every day (if you like that kind of stuff), but for most jobs it's not worth your time: Nice to have seen it once, but if you don't remember it, who cares?

Collapse
 
moopet profile image
Ben Sinclair

I agree and disagree - I agree that whiteboard interviews are usually useless, but I don't agree that it's a sign the people giving the interview aren't the people you'll work with.

A lot of the places I've worked, the technical people brought in to give interviews alongside HR or management have no idea what they should be asking, and so instead of asking the sort of questions they'd have liked to have themselves, they fall back on generic whiteboard or tech test questions because they think that's what everyone else is doing.

It's not necessarily a deal-breaker for me, but it would make me super-probey when they get to the "do you have any questions for us" part of the day.

Collapse
 
florianschaetz profile image
(((Florian Schätz)))

Ok, agreed. Been there, done that, when someone asked us to create a meaningful coding test. Personally, we didn't go for whiteboard tests, but our idea wasn't that much better ;-)

Collapse
 
brburzon profile image
Brandon Burzon

Sometimes it's more about seeing someone's problem solving skills or how they approach a problem than the problem or solution.

I do agree that problems like these do not reflect what majority of the job will be after getting hired. This is especially true for SDM's who are getting asked to do this type of interviews.

Collapse
 
kaydacode profile image
Kim Arnett 

Yaaas. All of this.

Technical interviews are a very cold-damp-intimidating space. There's so many bad practices that can come out of left field, (thank god riddle problems are dying).

But treating it as a skill is 100% great advice. I'm glad you didn't give up and kept at it.

Congrats!

Collapse
 
carlosmgspires profile image
Carlos Pires

This is why I wrote this:
linkedin.com/pulse/bs-hr-part-1-st...

They interview developers as if it was "Who wants to be a billionaire" show.

Collapse
 
paulvdam profile image
Paul

Talking out loud when practicing something you have to talk out loud for is seriously underrated. Yes it feels awkward, but it will multiply the effectiveness of your practice.

Collapse
 
sarcasmappreciated profile image
Benson Li

Welcome to Amazon :D

Collapse
 
kayis profile image
K

Reminds me of university, where I learned how to do exams. In the end I was good at exams and not at the job I wanted to do, lol

Collapse
 
afsoon profile image
Afsoon

I should have read something like this months ago. Congratulations for you new work!!!.

Collapse
 
cespereira_68 profile image
cespereira

@reggylong can you name the authors of this books, i found a few books entitled 'Cracking the Coding Interview'. Thanks.

Collapse
 
reggylong profile image
reggylong

The author is Gayle Laakmann McDowell.

Collapse
 
ben profile image
Ben Halpern

Congrats and thanks for sharing!

Collapse
 
courier10pt profile image
Bob van Hoove

Well done sir :)

I'm still amazed that the technical interview thing is such a hurdle in some places and I wonder to which extent it's a cultural thing.

Collapse
 
jlhcoder profile image
James Hood

That's right, there's nothing wrong with you. It's just another problem to solve. Great job and congratulations! Welcome to Amazon! 😊

Collapse
 
makfuse profile image
Mak

Great work and well done. Thanks for sharing.

Collapse
 
rattanakchea profile image
Rattanak Chea • Edited

Congrats. Your hard work paid off. I have used Leetcode. This post is an inspiring, resourceful and practical life experience. Thanks.

Collapse
 
jaredprice profile image
Jared Price

I struggle in these type of situations... thanks for the valuable advice, gives me some hope!