Live data from Hacker News

Amazon software engineer interview

sobit.me

171–180 of 189 posts

Re: Amazon software engineer interview

#171

Between bad interviews I've been in or read about and spending the past 6+ months working on our hiring process I've become very opinionated about hiring. The process Amazon and many other tech companies use is fucking terrible. Algorithm tests and surprise CS 101 questions do not identify good employees. They're biased towards recent grads, do not address most real world situations, can be gamed through studying, an…

One more thing to add.

We've very picky. This year we've hired 1.3% of people who applied. It's not like our process is easier than the pointless ones others use. I'm sure we lose some good people along the way but at least we're not filtering for irrelevant criteria.

Re: Amazon software engineer interview

#172
post #158

Earlier quoted context omitted.

That's an approach I don't understand. If you would "bomb the answer", it means you don't understand and don't feel the algorithm behind. Merely "looking up some detail" doesn't help with that. It's not like one can look some detail up when he doesn't remember the detail was even there. Good software programmer needs a large working set of such details to sensibly function in a professional setting.

Being an educated person is not necessarily being a walking encyclopedia of detail. But it is knowing where to find the information needed at the moment. That's why there are reference books for professionals, like the CRC Handbook. For another example, nobody knows every detail in the C++ Standard. But a professional is expected to know how to look up a detail in the Standard as required. That doesn't mean he doesn'…

> Maybe you never need to look anything up.

It's not like that. I do need to check various things, and I daily run `man whatever' (I'm a sysadmin in large part). But even though I often don't remember what was the switch for e.g. `grep' or `find' or `awk', I wouldn't "bomb the question" about that. I would just substitute a sensibly sounding switch, explaining that I'm doing so (and why) and what the switch was supposed to do.

The same stands for algorithms, data structures, or program architecture (in other large part I'm a system programmer). I don't remember how AVL trees do inserts and deletes (frankly, I never learned that properly). I don't remember exactly how inserts and deletes work in B-trees. I never implemented my own hash table. But I still wouldn't "bomb the question" about any of those, because I understand how they work, and the details either can be worked out pretty quickly, or most often are not important for a particular question (unless, of course, the question was "how to insert an element into AVL tree"; then I can at least give high-level answer before calling for data structures handbook for lower-level work).

Heck, I don't even remember most of the cryptographic details. Every time I need to explain RSA or ElGamal encryption algorithms or Feistel net, I need to derive the formulas (I typically don't have any reference handy).

Re: Amazon software engineer interview

#173
post #146

Earlier quoted context omitted.

Can you post an example of what a typical outline would look like? As someone who interviews a lot, I'm quite interested in implementing a no-surprise interview process for the place I'm currently at as I too have been at the other end of a lot of bad interviews.

Here's an excerpt of what we send: Before you make your decision, please read the following: The OwnLocal Engineering team is transparent. We want to make sure you have clear expectations about our hiring process, so we've outlined for you. If you are unable or unwilling to complete our entire process, that's okay! The last thing we want to do is waste your time, so please let us know. Our hiring process consists of…

Thanks for sharing. I wish more companies would do this as it alleviates some of the interview pressure from the candidate.

Re: Amazon software engineer interview

#174

Earlier quoted context omitted.

> It would be interesting to know more about his desire to work for Amazon that badly. Amazon is basically the company I really, really, really want to work for, and the only reason I don't apply is that I have a small kid and a wife already working there, and I know how chaotic life would be if I did it now. So I'm waiting for the kid to grow a little more. Now, the reason I want to work there so much is that I see…

Your kid must be really smart :-) I actually admire Amazon from the outside for the same reasons you do but I'm not too keen on working there because of stories it's rough for employees. Does your wife like it? Is she a developer?

Haha, I should have proof read that, what a terrible sentence I wrote there :)

My wife's an engineer there and enjoys her work. Her team seems to be a smart and fun bunch to work with, and the hours are pretty ok. The only times I've seen her working extra were because she wanted to, not because she had to.

Re: Amazon software engineer interview

#175
post #71

I'm all for interview prep, but this sounds like a fairly standard tech company loop. I usually take a few days to brush up on algorithms and structures for the first one I do in a batch, and have some canned answers for the personal questions, but otherwise go in with what I know. Some of that's experience now, but I don't remember any point in my career where I'd have done something this extensive. I hope the poste…

what do i do if im a terrible person to work with? its something i really struggle with.

Honestly, the old but still excellent "How to Win Friends and Influence People" by Dale Carnegie changed forever how I interact with people.

And, to answer a maybe obvious question, no the book isn't about manipulating people. It's more about dealing quirks of human nature and being excellent at negotiating and interacting with people. Can't recommend it enough if you're honestly looking to improve in that sphere.

Re: Amazon software engineer interview

#176

Earlier quoted context omitted.

>>Then to get over my interviewing jitters, I interview at a few companies where I would absolutely not work at. This results in no pressure interview practise and you can literally laugh at their asinine interview questions and walk out This sounds very unethical and dishonest. It's the equivalent of a company interviewing a candidate they have zero intention of hiring, ever. Why waste people's time? edit: not sure…

You are right, this is not ideal - this is waste of time. Which is probably why the OP lead the comment with: > This article makes me sad. Interviewing in our industry is so broken. Yet: > It's the equivalent of a company interviewing a candidate they have zero intention of hiring, ever. If the company has one position to fill, and if they ever interview/contact more than one person for filling that position all the…

>>If the company has one position to fill, and if they ever interview/contact more than one person for filling that position all the people who they contacted other than the person who got the job has wasted time, right?

No, this is more like the company interviewing people when there are -- and will be -- no positions to fill. It's like a hiring manager going, "man, I really need some practice interviewing people, I should go post some jobs on job sites!"

Re: Amazon software engineer interview

#177

Earlier quoted context omitted.

> 1. Where did you learn how to implement the Data Structures and Algorithms? Mostly? 1st year undergrad. > 2. Also, I'm in a dilemma between using Python and C/C++. Which one would you suggest? I like Python as a quick-to-write language (whiteboard friendly), but in my most recent interview, some of the questions were phrased to make them easier to implement in C (i.e. more natural to write in terms of pointer acces…

> Mostly? 1st year undergrad. How common is this? I did my (EE) undergrad I Florida, which has pretty extensive Gen Ed requirements. Almost nobody takes major courses in their first year.

We had flexibility in our schedules (CA state school). I mixed major and GE courses throughout my years in college. CS courses rarely had GE requirements, unless you count math.

Re: Amazon software engineer interview

#178
post #77

Earlier quoted context omitted.

Interesting and valid points. I have some things to add. Disclaimer first: I'm a technical interview coach. We run http://InterviewKickstart.com , which provides structured and intense group programs for early and mid-career software engineers, with the sole purpose of preparing for technical interviews. In an ideal world, brushing up is all what it should take before going into interviews. Practicing Software Engine…

> e.g. If they ask you to merge sorted arrays and you don't know that Heap sort is the best way to do it, you've lost the interview no matter how clear your thought process is. Not because the interviewer is not watchful. But because your competition has solved it with Heap Sort. So even if both of you demonstrated a clear thought process, the other person gets the job, because s/he is more prepared. Sadly, there's a…

Your frustration is justified. However, there is no flawless interview process. You could try and read this for more context: http://www.gayle.com/blog/2015/6/10/developer-interviews-are...

Having been on the other side for quite a long time, I can assure you that despite best efforts by some very well meaning and smart people, this is the only process that has stuck around (and is still growing). That's because it's the most convenient method to interview at scale.

When a company is very small and/or only hiring one or two engineers a quarter, choice of interviewing method doesn't really matter a whole lot. You will have enough time to interview people and any method you follow will give you a decent candidate.

But when you are a coveted company with a strong candidate pipeline and are tasked with hiring 25 engineers a quarter (which was the case with the leadership team I was a part of), or thousand at Google scale, you need a process that is fast, efficient and convenient. You don't necessarily need a process that's best for candidates; as long as the process filters in enough candidates, and doesn't waste much of your team's time, you're good.

There are some other reasons this process has stuck around, but that's one main reason. I don't see it going away any time soon.

Re: Amazon software engineer interview

#179

This article makes me sad. Interviewing in our industry is so broken. I have been out of school for a while and switch jobs every few years and this is the technique I use to beat the bullshit interview process . Make a list of companies that I would apply to and sort them from most interesting to no-way-in-hell-i-am-working-here order . spend a weak reviewing typical algo/data structure questions . For the companies…

Thank you for sharing your method with us. It worked for you and should work for others. I'd however like to point out, certain assumptions baked into this, before anyone starts to follow it:

>>. Make a list of companies that I would apply to and sort them from most interesting to no-way-in-hell-i-am-working-here order

This is easy to do if you're in the valley/NY. Outside of the valley, people often don't know many companies besides G and F. Making such a list is a valuable exercise, but quite hard for many people, simply because of lack of knowledge and credible sources. It'd be useful to mention something like Wealthfront list here.

>>. spend a weak reviewing typical algo/data structure questions

There are SO many resources online, that it's very easy to get lost in the search of what's typical, especially if one hasn't interviewed in a few years. It'd be useful to mention to follow some introductory book/resource here.

>> . For the companies that I absolutely want to work for, I review every single glassdoor review and write down the interview questions. Remember, most companies have question banks and most interviewers have favorite questions which results in same questions being asked over an over again. You want to exploit that

For companies with shorter history, this is doable. For companies with longer history of this kind of interviewing, browsing through Glassdoor is very similar to dumpster diving. It's doable, but it's super easy to get discouraged quickly. Not to mention very often people paste questions very vaguely e.g. "got asked a Graphs question", or they paste code which is a nightmare to follow, even if you trust that it's correct.

In other words, note that this phase can take a lot of time to do well.

>>. Then to get over my interviewing jitters, I interview at a few companies where I would absolutely not work at. This results in no pressure interview practise and you can literally laugh at their asinine interview questions and walk out

Again, how does one get interviews at even those companies where they don't want to work at? Getting interviews is as much of a problem, as clearing them. Added to that, there is always this anxiety about rejecting those offers, because there is no guarantee of getting thru the ones you want to work at.

Additionally, when picking practice companies, it's important to pick ones that have a process with similar intensity as your favorite ones. That knowledge is often not mainstream.

>>. Finally, for the companies i actually want to work at, I try my best to get rid of phone screen. This is usually accomplished by dazzling them with my decent size github profile, contributing some fixes to their OSS project or finding someone who already works there that is in my alumni network .

Internal referral is definitely the best way. But majority of people don't have internal warm referrals at most places. Additionally, unless your technical reputation precedes you, most good companies are unlikely to give you a free pass on phone screens. It's extremely rare to have a dazzling Github profile enough to skip a phone screen.

>> Then when you finally arrive for the interview, you have real world interview practise, they are already impressed with your github profile/references and biased toward you versus some random joe off the street and you have made sure you have a pretty high probability of getting a question that you have already seen or is similar to a question you already know.

This again, assumes that everyone in the panel knows about your preceding reputation. And that one doesn't mess up even a single interview.

Overall - please don't get me wrong - this is great advice and much better than getting frustrated without it. What I want to point out, that the inherent fragility of the entire process is so high, that one should be careful pinning one's confidence on any particular strategy. The only thing in your hand, as a candidate, is to prepare and prepare well.

Re: Amazon software engineer interview

#180
post #34

Earlier quoted context omitted.

> It's the statistical truth. I don't think claiming something is a statistical truth without showing the statistics will fly on HN.

There's good arguments for their point. For instance: "When something goes wrong in a restaurant kitchen, and the boss appears to size things up, he is unlikely to pay much attention to a collection of workers all scrambling to explain their version of the story. Likely as not he’ll tell them all to shut up and just arbitrarily decide what he thinks is likely to have happened: “you’re the new guy, you must have messe…

Love it. Thank you.
Post reply on HN