7 ms·
How to pass the interview for software engineering roles in Big Tech
- lambrospetrou 3y agoI just finished a (long) article about preparing and passing the software engineering interviews in Big Tech companies! I hope many folks find it useful, and helps them in their next interviews, whenever that is. I did a brain dump of how I prepare, and what I do as an interviewee, and also as an interviewer in such companies. Please let me know if you like something specifically, or have any feedback in general. Enjoy
- ldjkfkdsjnv 3y ago1. memorize the top 100 leetcode questions for the company you are interviewing at 2. memorize the top ten system design questions for the company you are interviewing at ^thats it, do anything else and you are wasting your time
- cvhashim04 3y agoHoping to see familiar problems isn't the best strategy; it can be stressful. A better idea is to focus on mastering common problem patterns like two-pointer, sliding window, DFS, BFS, and others. With about 20 of these patterns under your belt, you'll be well-prepared for most challenges.
- lambrospetrou 3y agoI agree with this approach. I cannot memorize solutions at all. I can however learn a few techniques and try to pattern match a given problem into those techniques. I do admire folks that can memorize more than a few tens of problems though. It's a skill on its own!
- dekhn 3y agoI think everybody who intends to interview for a software engineer at a major company should, at least, have memorized a small collection of algorithms and data structures. For example, linked list, hash table, DFS and BFS, simple sorting. That means being able to explain the data structure with pictures or words, explain the basics of computational complexity, and write down the basic implementation in your language of choice. If you don't bang out the right answers to those off the top of your head, all the programming interviews are going to be painful.
- lambrospetrou 3y ago>For example, linked list, hash table, DFS and BFS, simple sorting. These are a given. You should know these. When I said I cannot memorize solutions, I refer to memorizing solutions to specific Leetcode problems. Doing that for 1-2 problems per main area is doable, but anything more than that is quite hard.
- SoftTalker 3y agoI have never implemented a linked list, a hash table, or a sort in $DAYJOB. I did them in school of course. After that I used what my development framework and libraries provided.
- dekhn 3y agoYes, but would you forgo a well paying job because the interviewers asked you questions that weren't things you did as a day job? The employers need metrics, fairly standard ones, to filter out unqualified employees and these sorts of simple algorithms and data structures are the least bad ones. Where I complain is when the interviewer explains "to solve this problem, you need to think of them as virtual ants that can pass through each other" (yes this was actually what my interviewer said for https://leetcode.com/problems/last-moment-before-all-ants-fall-out-of-a-plank/ https://leetcode.com/problems/last-moment-before-all-ants-fa...).
- SoftTalker 3y ago> The employers need metrics, I'm guessing some do, the kinds of employers who attract a lot of applicants who misrepresent their education and experience. I have never been asked to write code in a job interview. I guess I've been fortunate to find employers who look at my resume and talk to me as a person not a metric.
- emodendroket 3y agoTrue although maybe doing the top N problems for the company is a shortcut there. No point in spending a lot of time on a type of problem they will never ask.
- ldjkfkdsjnv 3y agoI was an interviewer at two FAANGS, the best candidates clearly had the problems memorized.
- deleted 3y ago[deleted]
- deleted 3y ago[deleted]
- zerr 3y agoAlternative: apply for an engineering manager position. The tech part is quite easy (none or very few easy leetcode stuff). After some time (can be e.g. a couple of months) you can transition to software engineering position (same level) without any extra tech interviews.
- lambrospetrou 3y agoThat's an interesting approach, and indeed I have seen it happen. In some companies though, the interviews are very similar and include coding as well even for managers, so might not be a silver bullet. I do think though that if you are OK being a manager for at least a year, it's a very viable path!
- paxys 3y agoNo company is hiring an engineering manager who doesn't have 5+ years of management experience. It's not a role you can just apply for as an IC.
- lambrospetrou 3y agoI have actually seen several colleagues jumping into EM roles (Engineering Manager) with just a year of experience being a manager, or even from just being a team lead (technical leader, not manager). In companies that have the first level of management at the same seniority level as the Senior Engineer, it's very doable.
- endtime 3y agoAt at least some FAANG companies (Google and Meta), EM1 is parallel to L6/Staff.
- lambrospetrou 3y agoAt Amazon you could become an EM1 by switching internally from SDE2 (L4 at Google/Meta). Also, in other companies like Datadog, Cloudflare, the first level of EM (used to be called Team Lead) is parallel to Senior Engineers.
- brunooliv 3y agoNot my experience at all: ALL levels, besides maybe junior which kind of doesn't really exist in Big Tech, require system design, so I can't really relate to this. Algorithms are usually about specifics of what the company itself does, so expect graph traversals, networking, file system stuff etc, disguised as a puzzle depending on the company. Nobody will ask you about "generic algorithm questions" and actually the "topics" are quite narrow. What I'd like to know and see written down is how you truly prepare for system design when you DON'T HAVE or CAN'T GET experience with large scale systems at your DAYJOB. The chasm here is that when competition is other 20 engineers who just memorize things, even if their actual relevant skills are objectively worse than yours in practice, you'll never, ever get the job. It's a very tough game and I admit there is real skill in knowing how to game the system :) it is what it is. PS: I know exceptions are everywhere but I'm sure that the quality of the ones who get in vs rejected will be basically the same. It's just a process optimized to minimize false positives, so, only the median will get in, really good ones will be rejected and only maybe a very small fraction of the ones who make it through will be "The real deal".
- Madmallard 3y agoIt's an impacted field. Read architecture books and learn system design from existing success stories and read through their thought process. Contribute to a large system open source. There isn't really anything you can otherwise do. Try to make large systems on your own projects.
- lambrospetrou 3y agoI totally agree that at higher levels System Design is required. That's why I have a whole section about System Design in the article. See https://www.lambrospetrou.com/articles/big-tech-software-interviews/#system-design https://www.lambrospetrou.com/articles/big-tech-software-int... I describe all the resources I read outside my day job's material. There are a lot of useful engineering blogs you can use, and with 1-2 books you can go very very far in learning the principles. Once you have the theory, then you just need to practice on brainstorming designs for any kind of app you want. Then, you can verify that with the real implementation, you can pretty much find information about any big-scale famous system online. Or you can do mock interviews with others, but I am not a fan of these personally. In my experience, reading, and then trying to come up with designs on your own for well-known products will make you ace these interviews after a few months. Also, during the interview there is no nearly enough time to verify that you have done in the past all the things you will mention. So, if you understand what you are saying, and your design makes sense, you will pass the interview, even if you haven't practiced these things in your day job.
- naveen99 3y agoMaybe there should be a standardized test for software engineers like the LSAT or MCAT. there are just too many software students every year now to filter the top 200k or so out of 2 million using interviews. Who has the time or interest for that ? we need one to track progress in LLM’s anyway. humaneval is weak. MCAT filters the med school application pool down from 80k to 23k. LSAT filters from 120k down to 40k. Without them, there would be millions of applicants every year. How long can we keep relying on high school level tests that prefilter into computer majors for college. We need a post college test.
- slotrans 3y agoWhat we do as software engineers isn't standardized. If you are doing things that have been done before, you are wasting your time.
- SoftTalker 3y agoSuch tests identify aptitude, not specific knowledge. At least in theory. And yeah, most of what software engineers do is very standard, and at least conceptually traces back to ideas pioneered in the 1970s.
- naveen99 3y agoyou can absolutely create a standard test with predicting power on success as a software engineer. Real Law isn’t standardized either, neither is real medicine. They are partly art as well.
- richbell 3y ago> What we do as software engineers isn't standardized. If you are doing things that have been done before, you are wasting your time. At the same time, this type of thinking is what results in engineers wasting time and money re-inventing the wheel, on things that usually have no business value. Just look at how much time and money was wasted at Uber reinventing simple technology solutions. https://news.ycombinator.com/item?id=21250917 https://news.ycombinator.com/item?id=21250917
- 3y ago
- matt3210 3y agoFinal interview at Amazon for embedded position: all previous interviews were great. They threw out a niche optimization problem for web development which I couldn’t do in 30min. I fumbled big time. The interviewer had such a thick accent I found it impossible to communicate. Moral: 1) don’t expect only questions relevant to the position. 2) practice communicating with people that have very thick Indian or Chinese accents. It will also help in general day to day life
- lambrospetrou 3y ago>2) practice communicating with people that have very thick Indian or Chinese accents. It will also help in general day to day life Absolutely :) I have that item explicitly in my article, since it happened to me as well being on both sides of the interview process. It's very unfortunate when communication is problematic accent-wise. And it makes judging difficult as well since you are not focusing on the technical merits alone anymore. >1) don’t expect only questions relevant to the position. For this, you might have been unlucky with an inexperienced interviewer...
- deleted 3y ago[deleted]
- im_down_w_otp 3y agoWell, it’s a good thing Amazon’s hiring process managed to filter out someone who could do the job they were hiring for, but not the job they weren’t hiring for. That’s some top notch hiring practices right there.
- sverhagen 3y agoI'm ESL myself, and I sympathize because I also don't find it easy always to communicate with ESL people from yet other native languages. But as for the niche optimization problem, don't you think that the Amazon folks would say: this candidate was not able to think on their feet and think outside of the box, when given a non-standard problem? I think hiring teams over-estimate how far they can push the envelope on that in an interview, but I find it a bit one-sided to assume that the question was outside of the job they were hiring for or that it was a malicious question.
- emodendroket 3y agoThis is great! Some of the best-loved articles in this topic are getting a bit old.
- protastus 3y ago"Why would you ever put a tenured engineer, writing code for years, sometimes decades, through a 40-minute process writing code in a collaboration doc or a whiteboard…" This keeps coming up, and I can only assume the author has not interviewed many candidates. I've interviewed hundreds of candidates. I've lost count of how many tenured engineers I've interviewed who could not write basic code or explain basic programming concepts. Things that a practicing programmer would encounter every week. A hiring manager naive enough to waive coding tests will almost certainly hire a low performer who will hold back their team.
- lambrospetrou 3y agoI am the author :) >I can only assume the author has not interviewed many candidates. I did more than 100 interviews so far. >I've lost count of how many tenured engineers I've interviewed who could not write basic code or explain basic programming concepts. Things that a practicing programmer would encounter every week. Where did I say that I agree with this statement. This is what other engineers claim, and as you pointed out being said many times. I am totally against this claim as well. I do think that those tenured engineers should be interviewed for basic coding skills too. Just last month I had a staff+ engineer not being able to write a DFS... That part in the article is ironic, hence why I said that I didn't want to make it a discussion about the fact that we have these coding interviews, and to "Get over it!" :)