Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Senior Positions Interview Prep Resources?
294 points by scalar-moose on Oct 3, 2019 | hide | past | favorite | 111 comments

Context: - Dev with 10+ years of experience - Last 2 years in an architect role with technical leadership responsibilities - Planning to apply for senior roles at FAANMG

Question: I am fairly good at solving system design and scenario based questions, but I am confused about what resources to use to prepare for whiteboard/programming questions (not 100% sure if these are relevant at senior level?). Below is the list of resources I was suggested:

1. Cracking the Coding Interview 2. Elements of Programming Interviews 3. Online Judge - LeetCode, HackerRank etc.

I have used cracking the coding interview for my interviews right out of school, but I was told that it is not relevant anymore and I should focus on Elements of Programing Interviews.

Same with Online Judge, I was told to use an online judge (LeetCode, HackerRank) over books.

There are companies that will pay near FANG levels (maybe 10-15% haircut) without subjecting yourself to onerous completion of hundreds of LeetCode problems. There are other options, and we should be aware of them. You'll still need to prove you can code, but the questions we ask have practical application to our codebases: we use recursion and trees, for example, so we ask questions about those.

Other companies will treat you as more of a human, and less as a cog. In my current job, I asked to see production code when interviewing. I flipped over every stone I could, to know what I was getting into. I saw the good and the bad. FANGs? You must prove yourself to gatekeepers before even knowing if there are teams with personalities you will agree with. You have no guarantee there's something on the other side of the gatekeepers, that you're even remotely interested in.

Money is important, but for a small haircut you can have better WLB, less competitive peers (though still be growing in your career: you can challenge yourself, without being surrounded by hyper-competitive personality types), amazing culture, and a greater level of transparency.

Great post, though a few nits.

> There are companies that will pay near FANG levels (maybe 10-15% haircut) without subjecting yourself to onerous completion of hundreds of LeetCode problems.

Some even pay more. I wouldn't say FAANG companies even have the highest pay - a lot of the top-tier unicorns are in the same ballpark range.

> FANGs? You must prove yourself to gatekeepers before even knowing if there are teams with personalities you will agree with.

This is not universally true. From experience, while Google does this for their HQ, they don't for remote offices (where there's more risk you can't find the right personalities). Amazon's Principal Engineer interview loop is conducted by the targeted team. (I actually think this is true for other levels as well).

> Money is important, but for a small haircut you can have better WLB, less competitive peers

Might I ask what companies fit this profile? It seems like a rare find for any company to both pay a lot but not be competitive.

>> From experience, while Google does this for their HQ, they don't for remote offices

This is not true. Google interview experience is identical everywhere. Source: spent 6+ years at Google, not in HQ.

/shrug. When I was considering positions in SF a few years back, I was chatting with hiring managers I'd be under first before going through any whiteboard interviews. Maybe things have changed?

Yeah, you can chat with whoever you like if you're reasonably senior, but then you do the same exact interview as everybody else. That "chat" was just a "chat". It wasn't a part of the hiring process. There are likely exceptions at the truly stratospheric levels, for people whose credentials aren't debatable, but for 99.99% of people it's all the same 5-person loop with a whiteboard or a Chromebook.

Makes sense.

Honestly, this I'm perfectly fine with -- if you need a calibrated panel to assess your eng bar. What is annoying (the case for Google MTV for me at least) is if gatekeepers block you from identifying if there is potential fit in the first place.

Their interview process itself makes very little sense though. There's literally nothing in it that resembles the job you'll be doing on a day to day basis (copying from one protocol buffer to another, while sipping a free latte), so they're hiring for some proxy traits the correlation of which with job performance is low to non-existent. They know this, too. They've done a study where they just hired some number of people at random, without looking at their interview results, and then tracked their performance over the next few years. Those folks performed about as well as people who received high interview scores.

can you please link the study?

Google employee, totally speaking for myself.

You have a couple things mixed in here, some of which ring true to me and others very false. The true ones are the stuff about the interview process. I think a day of whiteboard programming is a poor way to assess experienced candidates. It does make you feel like a cog. (I also don't really know how to design an alternative process that doesn't increase the level of bias.) But most of your stuff about what it's like after you accept an offer rings very false. I haven't worked anyplace with better work life balance (and relatedly, really good family leave benefits) or more opportunities for challenging work and career growth. I don't find it hyper competitive (but I'm never sure how much this is a function of where I'm located or what I work on). You're right about transparency though. Having a full view of what's going on at my company is something I miss from previous jobs.

When you work for a company as large as Google unless you are very senior, you are a cog. I am not making a value judgement.

I work at a small B2B SAAS company. We bill an implementation fee, an ongoing licensing cost, and costs per feature. If I create a new feature for a customer whether it’s a one off integration or something that will be in the product, everyone from the CEO to the customer knows how much value I personally bring to the company. That doesn’t scale and can’t work in a larger company.

levels.fyi is currently showing $466k median offer total comp for L6 (staff SWE) at google. Who is paying $395k-$420k to IC hires without FAANG style interviews? The only other companies paying that to IC hires that I know of are in the financial industry and that interview process is even worse.

What is a L6 in real world terms? where would they fit on the GS scale (I may or may not) be applying for a GS15 equivalent in the UK Grade 7 or maybe 6

It would be interesting to see where that fits in a FANG context

It’s above the level that enterprises have historically promoted ICs. Thirty years ago at Oracle or HP the position wouldn’t have existed—-you’d either have to go into management or you’d be stuck at senior engineer.

In government terms the closest thing I’m familiar with is the assistant US attorney chart which does extend reasonably far without needing to hit the supervisory level.

Salary wise GS-15 would be around L3 (junior).

Responsibility wise GS-15 looks to be around L5 based on how many engineers have achieved it (I assume those earning $140k+ are GS-15):



Interesting I was thinking in terms of responsibility / social status not purely salary :-) GS 15 is a full colonel

I'm more mid-level in my career, but this a great point. Maybe my strategy in my parent comment, only works to a certain level. Beyond that, perhaps you do have to move into FANG's. There very well could be limits I haven't reached yet.

You normally don't move into a L6 position from the outside either.

My understanding is that it is rare as compared to lower levels but far from impossible. The data points at levels seem to bear that out.

Whereas in some other, smaller companies there are perhaps one or two ICs at that pay level, they have been at the company for a decade, and hold all the tribal knowledge. No one ever gets hired into that type of position.

I know some at Staff SWE, Amazon PE, etc who came from outside. In specialist groups it feels pretty common.

Once you're at level at one of the heavies, it feels like people move at level, too.

> Who is paying $395k-$420k to IC hires without FAANG style interviews?

No one. I hate ppl here asserting that they landed FAANG like comps without leetcoding.

> The only other companies paying that to IC hires that I know of are in the financial industry and that interview process is even worse.

OpenAI is paying way more than 420K for ICs [1].

[1] https://www.nytimes.com/2018/04/19/technology/artificial-int...

Can confirm. I get FAANG pay as a remote worker in a low COL state. It's a cool place.

Working for whom?

Sorry, rather not say. We are ~1000 employees.

GitLab something ? AFAIK the only company that is both remote and pay friendly.

GitLab is not great for remote pay (especially if you live in a low cost area). I work remotely, and would take a big cut if I were to move to a similar position at GitLab.

low cost of living I suppose ?

Do you have any favorites, or any places to look?

Categorically, (and this is part personal experience, so sample bias), the kind of companies I'm talking about in my parent comment are about to go public (multiple rounds of investing), recently went public, etc.

They have a good amount of process to them, but not too much. Silos aren't fortified. There's less direction, but more personal ownership. For someone like me, who doesn't have the most polished communication skills (but is technically proficient), I'm in a position where I can make an impact -- whereas at FANG-type companies, I'd just get ignored because there were too many cooks in the kitchen; too many A-type personalities.

At these slightly smaller places, you have a better chance of getting a seat at the table, and you have more opportunity to contribute to projects that play to your strengths.

Can you list some examples of actual companies? Because, I haven't seen any here in SV. Everyone and their mom asks leetcode AFAICT.

I interviewed with Lyft for a front end SWE role and got no leetcode questions. I ran through a bunch of 45-minute "make-this-thing-in-React" panels, and passed all with flying colors. That's only one example, but the type of questions I find unusually challenging (dynamic programming) -- the only time I was asked those, was at Google.

I wouldn't expect frontend to get random DP questions at any company (well you never know with Google..)

I interviewed a couple of years ago at Lyft (for a backend team) and definitely got FAANG-class systems whiteboard questions.

Google doesn't hire front end software engineers specifically. They hire general-purpose leetcoding machines (e.g, people that can can crank out DP problems), then assign those people to work on front end tasks.

For a data point, when I applied and interviewed for a frontend-focused position at Google ~1 year ago, I had the option of one of my interviews being a front-end specific interview that would focus on FE rather than algorithms.

That interview track contains the DP-type problems. So now, not only do you have to show your DS&A algorithms skills, you need to showcase your front-end skills. If you interview as a backend engineer, you'll get more algorithmic questions, but overall question set will cover less breath and a similar level of depth.

I thought it was common for frontend interviews to not focus as much on CS stuff/things people typically associate with FAANG-style interviews. Facebook does this for example[0]

[0] https://news.ycombinator.com/item?id=18782786

What about companies for more backend roles?

Usually frontend interviews just means you're going to get asked frontend and DS&A but some just go really hard with frontend questions.

lol dead silence as expected. These companies only exist in HN imagination.

> we use recursion and trees, for example, so we ask questions about those.

Could you provide some examples of questions you ask (or perhaps point to similar types of questions)?

> There are companies that will pay near FANG levels (maybe 10-15% haircut)

I don't agree with this statement that companies outside of FANGs don't do Leetcode interviews.

Leetcode disease has spread to almost all corners of the industry. everyone everywhere is doing leetcode interviews.

> without subjecting yourself to onerous completion of hundreds of LeetCode problems.

Sorry but this is bad advice.

>we use recursion and trees

ok but doesn't everyone though?

It's almost like it's easier to start your own company than to get hired at one of these places and actually be happy.

Starting your own company is easy for sure! Starting your own successful company is something else, and I found it much harder than getting into FANG, but it requires very different skills and I'm sure some people are better at the former.

True, even in countries with high burocracy like Germany starting a company isn't more difficult than doing a tax declaration.

One more option is to do freelance though, that's somehow a mix of both worlds.

Maybe it's not easier, but I feel that for some it could be a great motivator after certain age...

If you have the privilege, then yeah absolutely.

Haha, "privilege"? There are immigrants fresh off the boat who don't speak english that own their own companies. What's your excuse?

Immigrant here, and I can read, write & speak english.

If i don't have a job with a company willing to sponsor my visa I would have to get back on the boat and leave.

My friends, who are from smaller countries have the privilege but I do not.

Stats from travel.state.gov


    Waiting list size by country
    Country             Applicants
    Mexico              1,229,505
    Philippines         314,229
    India               298,571
    Vietnam             231,519
    China-mainland born 231,519
    Bangladesh          169,231
    Dominican Republic  146,160
    Pakistan            115,625
    Haiti               94,506
    El Salvador         64,868
    Cuba                55,847
    All Others          840,393
    Worldwide Total     3,791,973

Yeah, 20 years ago. Now the landscape has changed massively. The only minorities today who can start a new company, that makes them more money than a job at a FAANG company, are women.

Do you have numbers to back that up?

> There are immigrants fresh off the boat who don't speak english that own their own companies.

> Do you have numbers to back that up?

If you want me to look up the actual numbers, I can, but are you really suggesting that there isn't a single immigrant company owner in the US?

> immigrants fresh off the boat who don't speak english that own their own companies

Do you have a single example of this ?


> gatekeepers

is this a theme that isn't uncommon in the industry ? I felt that way forever but I didn't want to make impatient conclusions.

I don't know why amazon, apple, Microsoft, and netflix are put on the same level as Facebook and google. Facebook and Google just pay more.

Care to name those companies?

Care to share specific names?

You are on the right track in terms of preparing for a FAANMG-level interview. But it pains me to say that this just only meets the bare-minimum that they are looking for as in to prove that you can 'program' as the other thousands more candidates will be applying too.

What you need to differentiate yourself is to learn the undocumented dark arts for whiteboard interviews that the FAANMG are really looking for in a technical interview.

Firstly, [0] explains where these data structures are used in Computer Science and should be a start on implementing them and understanding their complexities and use-cases. The rest from [1 - 4] goes straight into the advanced details of areas like competitive-programming which will give you explanations and clever solutions which are better than the typical DS and algorithm answers that even the interviewers will suggest.

Some of these resources might even give a walkthrough of a proof of these complexities if you really need to convince the interviewer who wants to rigorously test your understanding.

[0] - https://cstheory.stackexchange.com/questions/19759/core-algo...

[1] - http://courses.csail.mit.edu/6.851/

[2] - http://jeffe.cs.illinois.edu/teaching/algorithms/

[3] - http://cp-algorithms.com/

[4] - https://concatenative.org/wiki/view/Exotic%20Data%20Structur...

If you really don't know where to start, you can search and pick a specific topic here to study it in depth: https://github.com/jwasham/coding-interview-university

Personally, If I were preparing for a FAANMG interview, I would contribute to widely known open-source projects that utilise these concepts such as compilers like LLVM, Rust or V8 and operating systems.

You can’t be serious. It’s not that hard.

Not sure why you're being downvoted. It's definitely not that hard, and contributing to LLVM/Rust/V8 is not a requirement either (I would still recommend it, but mostly because it sounds interesting and you would likely learn a lot).

Source: interviewed with 3 FANGs a few months ago without any significant open-source contributions, got L6 or equivalent offers from all 3. I also don't have a CS degree, for anyone who would feel discouraged by that.

Edit: I don't want to minimize the effort involved, though—I did spend a lot of time learning algorithms and data structures over the years, but I enjoy learning this stuff and find it far more relevant in practice than most people here appear to think.

When I interviewed at Google they told me to come back when I had more open source contributions. I already had hundreds of thousands of lines in a prominent open source systems project at the time, so they must really want a lot.

The hiring bar at these places is pretty astronomical. Realistically it’s going to be well out of reach for a majority of even the very best programmers in the world.

I'm guessing most candidates don't have a lot of open source contributions, and "more open source" is one of the standard lines when they don't want to really explain why they passed on hiring.

Don't read too much into it. As an entry level applicant you're only getting a small fraction of anyone's attention and will need to apply Hanlon's razor to interpret most of your interactions.

In my experience the resume screen is a lot tougher if you want to work for them outside the US due to very low supply per demand.

It also depends on the level you're interviewing for. If you're shooting for a mid-level or even semi-senior role, that's very different than if you're shooting for a "has industry-wide impact" kind of role. In the latter case claims of prior impact will be carefully scrutinized to weed out poseurs and liars.

Yeah, it was only a new-grad, entry-level position, and they still wanted a huge volume of open source contributions. I don't know how most people would achieve it - mine were from internships and they still weren't enough.

Sounds insane. Based on our two experiences it seems like the requirements can change a lot. Hopefully if you apply again in a few years they won't require that anymore, but it's hard to say without knowing what are the factors that pushed them to require that in the first place.

What is your advice to do well in the interview - especially about how to conduct yourself during?

Realize that the interviewer wants you to succeed! For an interviewer, a candidate that does great and gets hired is a much better outcome than another hour wasted on a rejection.

(I'm sure they are some toxic interviewers and dysfunctional companies where that's not the case, but you don't want to work there anyway so it doesn't matter.)

A lot of good things flow from there.

First, you should feel a little more relaxed. This generally helps think more clearly, talk more naturally, avoid panicking, etc.

Second, you should shift your mindset to view your relationship with the interviewer as based on cooperation, not antagonism. This generally helps act more friendly and less defensive.

Third, if you were at home cooperating with a friend to solve a difficult problem, would you stay silent, or would you run your ideas off each other? Probably the latter. The same applies here. Unlike your friend, the interviewer is limited in how much information they can give. But again unlike your friend, the interviewer already knows exactly how to solve the problem! So leverage that. Ask them whether your proposed solution makes sense. Ask them whether the time and space complexities of your proposed solution are good enough or if you should keep digging. By the time you start implementing the solution in code, you should be fairly confident that you're going in the right direction. (Sometimes the interviewer won't give much away. Don't panic, it happens—in that case just go for it and hope for the best.)

is there an agreed upon level ladder ?

where can one (I) test to find his position on it ?

I think the initial level is mostly a function of experience. Then depending on your interview results it can go up or down. In my case I interviewed at level 5, and did well enough to be invited to come back for another round at 6.

I was super lucky to work with a gem of a recruiter at one of the FANGs who spontaneously pushed for 6 after my feedback from 5 came back positive. The other FANG was more reactive and didn't invite me back until I told them of the competing offer. So perhaps try pushing for it yourself if your recruiter is not as proactive and you feel you have a shot. Worst case they'll say no. (Or they'll say yes and you'll bomb the next round. That's not supposed to reflect negatively on your first round, although it would likely have affected me psychologically and made me less confident during the comp negotiation.)

I ended up joining a company without levels, so I'm afraid I don't have any more useful information for you than what I gleaned as a candidate.

you got an L6 without CS degree?

How many years have you been working in SW industry ?

~11. Had 4 more before that but not in the SW industry, although loosely related.

TBH, it's not far off...

I've done 200+ problems on leetcode, all of ctci, and lots more. Hundreds of hours of prep over the last 5 years. Never received an offer from FAANG after 10+ on-sites with them. Know others with similar experience. People I know who get offers are even more aggressive with prep but also get lucky. (As they sometimes get rejected even when they've received an offer from the company before...)

Are you sure you aren't being rejected for other reasons?

Generally, if you can finish any random medium difficulty leetcode question in 30 minutes, you are at the algo bar. But there's still systems, behavioral, communication, etc.

Almost all feedback I ever received was related to the technical problems when it came to FAANG. When I started out, I understood a bit. I wasn't the top 1% of whiteboarders but lately... That excuse seems weak when I get asked a leetcode hard problem and smash it.

I'm kind of convinced there is something else happening where the person writes down technical performance instead of, "didn't like his shoes" or whatever.

They keep pinging me every six months to re-interview too. They don't like to share why they declined though - so I don't get why they ask for me to reinterview like something magical will change without feedback.

Well on the bright side, if they are inviting you back it means you aren't giving off bad cultural vibes.

My $0.02:

Try to press harder for feedback. I've generally had no difficulty extracting feedback on rejections, especially ones where I could be re-invited back ("well, without understanding what reasons I was passed on last time, it doesn't make much sense for either of us to invest in another round where the same issues may very well exist").

All else fails, consider mock interviews. There's paid services out there that will do this -- and you'll get detailed feedback.

Yeah - I am going to look into mock interview stuff more - hopefully something where it could be in person or at least on camera too. I'll press harder for feedback before accepting another interview loop. I tend to smash most phone interviews - so it's probably something special to the in-person aspect. A lot of my friends think people are writing non-technical things because there's something else more "problematic" for them to say that wouldn't fly in their write-up. Like - "he had rbf", "didn't laugh at my jokes", [insert unacceptable reason #48352], etc.

Sorry to hear that but you really don’t need to be contributing to the projects mentioned to get in. Theres tens to hundreds? of thousands of FAANG employees and I assure the majority are not at that caliber.

It’s nice to glamourize it a bit but you guys make it sound downright mythical.

The problem is that for a FAANMG company to throw a Leetcode question in 2019, it's equivalent to a entrance exam, especially towards thousands of applicants. Eventually, they will use something else to assess your skills that will eliminate many applicants. I wouldn't risk getting eliminated for not differentiating myself.

Leetcode questions are not enough for 'seniors', even as a interviewer, it brings the same good problem solvers, but not enough applying this into practise such as open-source projects / contributions, which is faster to review than these Leetcode questions.

> It’s nice to glamourize it a bit but you guys make it sound downright mythical.

Perhaps not in 2012-2014 but in 2019 it is the reality of many candidates getting a FAANMG level role that have to face a competition of thousands of applications every week.

I wish it were easier than this, but when I look at the following real world open-source projects:

* FB creating the Hermes JS Engine.

* Netflix submitting patches to the Linux Kernel.

* Googlers working on Fuchsia OS.

* Apple hiring dynamic linker engineers for dyld3.

* Amazon writing the firecracker virtual machine.

* Microsoft hiring engineers for Typescript and Chromium.

I think that justifies utilising the data structures and algorithms resources listed above. And now if one told me that they have some contributions to at least one of them, I'd tell them to send a link to the code-review / patch and I'd just bring them onsite and ask more questions about it.

You’re still glamorizing a select body of work and overlooking the fact that the vast majority of employees are not working on those projects.

For sure there is interesting work to be had, but don’t pretend that everyone is toiling away on what you see on GH and HN.

One of the most common joke themes inside Google is that almost everyone is just writing software that converts from one protobuf to another.

Firecracker is a Virtual Machine monitor. It uses KVM underneath.

How did you find the motivation to spend 100's of hours for prepping for 5 years? This is really great!

In my case I find prepping really dry and like to work on personal projects and veer off to different technical things that I am curious in.

When I try to solve problems I hate to look at answers and I spend a lot of time sometimes days trying to solve it. What is your approach to solve problems?

Could you please elaborate on how you prepared to a person like me who is aspiring to take a FAANG interview?

I had two long breaks between jobs. I've also had 4 different jobs in the last 5-ish years. So - I've had to do some prep every year. When I hit 1 year at any job - I start prepping again. I prepped probably 200 hours for the first job, 200 for the second, and then 100 for the third and fourth in the last 5-ish years. I pretty much never stay more than a year because it's the only way to get compensation and title to go up at all the companies I worked at.

I'd suggest always working on paper or whiteboard - never use a computer. (You have to emulate the environment) Set a timer for every problem. (1 hour max - aim for 45 minutes on medium/hard when starting out; lower it as you familiarize yourself with a subject) Start throwing data structures and algorithms at the problem (pattern matching them, basically). Solve it or don't. Learn something to take away from it. If you don't solve it, learn how to solve it, and where you were lacking. If you did solve it, be sure to check other solutions because sometimes yours is crap. Practice that thing you were lacking. (Needed to know BFS? Implement BFS from scratch 10 times using spaced repetition) If you're planning on 8 hour study sessions then focus on one type of problem at a time. (BFS, DFS, graph problems, tree problems, binary search, dynamic programming, etc.) Only do those kinds of problems in that session. Set it up like you would for a math class. You do one chapter in that session/day/week/whatever and proceed to do a few chapters (say a BFS chapter, a DFS chapter, and a binary search chapter)... Once you've done a few, give yourself a midterm covering the topics you learned. So give yourself like 2 DFS, 2 BFS, and 2 binary search problems and see if you can solve them in a timed environment. If you rocked the midterm then proceed on to do more chapters and more midterms. If you didn't then relearn those subjects before moving on. Finally, when you feel like you've learned everything then give yourself a final exam to see if you remember everything and can still do it right.

Basically - treat it like a math class. It's not just memorization (you need to memorize the strategies, that's for sure - you need to be really fast at implementing BFS, DFS, binary search, etc. That should be wrote memorization but with a deep understanding).

Thanks a lot for your reply.

When I try to solve a problem I generally see the output needed and construct code to get the pattern with a lot of trail and error. I am not sure if I can scale with this. If I am fresh and in flow I can come up with good solutions. If not and I am nervous then I will have trouble solving something as simple as fibonacci.

I sometimes have trouble doing pattern matching where I get confused if the problem is changed slightly and is made tricky. I think this is because I am trying to be too specific with the match and not seeing a generic picture.

Can you suggest how a person with a job can practice so thoroughly? 8 hour sessions everyday is tough maybe on weekends but still is sometimes difficult.

Thank you for such a detailed response.

Looking at the content it seems like I will have to basically jump through all the hoops that are required for a new grad interview.

Not necessarily. When I'm interviewing new grads, I'll hold their hand firmly when walking through requirement extraction, but hit their rating like a ton of bricks for any failure in algorithm design and code mixups. When I'm interviewing seniors, I'll tell them "implement me a Shopify", but won't care that much if they get the unordered_multimap signature wrong.

I wouldn't say that's necessary.

I've been in a senior role for 5 years and I somewhat recently interviewed at Google for an SRE/SW position with basically no prep (did maybe two practice exercises) and passed it no problem. I turned them down for a variety of reasons, but if I were to interview again I might even spend less time practicing.

It's true, however, that at some companies, performance impacts leveling and compensation, so there's surely value in being (possibly even over-) prepared.

You sound like an outlier, I routinely interview senior engineers applying to Google and a massive majority do not pass the coding test. I would say half are not even in the ballpark of passing.

Well in SV all you have to do is work at a startup for more than a year to get "promoted" to senior/lead developer, so it's not surprising that many people applying for those roles aren't actually at that level.

By senior I mean 5+ years experience, not their job title.

5+ years is really the beginning of intermediate. 15 years is a better starting point.

For background, I work currently at one of the FAANMGs and I have spent around 20 years in the industry. I actively interview candidates and I have had offers from 4 of the FAANMGs not too long ago. My experience is that the preparation required varies. It depends whether you are interviewing as a general SWE or pre-slotted. If you are pre-slotted, one or more interviews tend to be specific to your domain and skills. You do need to know Big-Oh notation, trees, BFS/DFS and such standard stuff at most of the places; but how much the interviewer go to basic CS theory tend to vary based on your domain and years of experience.

For example, as an interviewer I often ask computer architecture/operating system questions as that’s what someone coming in, slotted into my team, needs.

In general, a lot of coding questions tend to be pattern matching and how fast you recognize the algorithm/data structure required to solve it. Before going in as a candidate, I did 50-60 leetcode puzzles and a bit of Elements of Programming Interviews. I also interviewed at many places for FAANMG readiness.

All said and done, the biggest factor in interviews is luck - from getting a good interviewer to getting a problem that you can easily identify/enjoy solving. All the preparation stuff is just to hone your skills. More you’ve seen going in, the better.

Best of luck!

Leetcode premium -> do all the problems for the company you are targeting, sorted by most frequently seen in the last 6 months. Then, you will know what your weak points are (mine were minimax and disjoint set problems), and you can go through questions tagged with those topics. Aim to complete at least 60 problems, you should feel fairly comfortable with any Leetcode medium grades, and DFS implementation. Leetcode hard questions are good challenges which could expand the way you approach problems, but in my experience, did not show up much during onsite interviews.

Also, "completing" one problem in the context of the above does not mean being able to solve it the first time without checking the solution. It means possibly struggling with the problem for 20 minutes, checking the answer, and making sure you can do it the next day without looking at the answer. YMMV.

> Also, "completing" one problem in the context of the above does not mean being able to solve it the first time without checking the solution. It means possibly struggling with the problem for 20 minutes, checking the answer, and making sure you can do it the next day without looking at the answer.

Thanks for saying this. I tried leetcode last time I was looking for work and was thoroughly discouraged. This approach makes a lot of sense for someone who's been coding for a long time.

I know you said you are good at system design, but I'd still recommend you read Designing Data Intensive Applications book and read through https://github.com/donnemartin/system-design-primer.

If you do those and cracking the coding interview you should be good to go.

Really cool link. It's satisfying to look at this diagram and it all looks familiar to me.

You'd likely be geared for L5 (Senior Engineer) with your described experience. At that level, there would be expectations that:

- You have built and can continue to build real software. You should know how to code fluidly in at least one language, as well as idioms and pitfalls. I don't think this is something you can cram for - you build up from experience.

- Able to describe performance or other tradeoffs. This can be in system architecture down to data structures and small optimizations. If you are rusty on algorithms, this can be studied for.

- Be able to do large-scale systems design from a fairly ambiguous problem statement. Sounds like you've had this experience.

- Potentially do a deep dive in a technical specialty of yours (ML, compilers, databases, etc.).

[Note: I haven't been at Google for over a year so this may be rusty, but did interview lots of candidates while there.]

As a lead engineer at a non-tech company as least as big as many of the FAANG companies I am responsible for things that make 8 and 9 figures annually (mobile), but I never had an interview anything like this here at all, because I was hired based on personal reputation at a previous employer. I bet I would fail miserably at these kinds of interviews because I would not prepare in any way; I know what it takes to ship things in all sorts of ridiculous circumstances, with too few people and enormous continuous changes under challenges that you would never see in a big tech company. I am not sure there is fair way to tell from an interview what I am capable of but my present org knows what I can do and counts on me doing it every time.

I wonder how many people are missed in interviews who would make a big contribution to an employer but are lost in the interview process. Often skills needed for shipping quality applications are likely not visible if people only focus on raw programming ability. Maybe it's simply too hard to identify in interview form so everyone just looks at how you write code.

I am in the same boat. Got my current job just by reference by people that know me and I didn't have an interview at all.

On regular basis I am faced with challenging technical problems related to things that I haven't done before and then with careful research, planning and execution I solve them and our product is going forward and the company is growing so I assume we are doing the correct things most of the time.

And then when I hear from friends stories from their interviews I really get scared that if I apply today I would fail...

If I can suggest something - don't neglect physical training. You will need a lot of endurance (both physical and mental) to go through some of those onsite interviews. Also take breaks if possible.

As to resources - as many have said earlier - leetcode.com this is basically the place to go for problems to practice and there is also really great community. When practicing problems and analyzing answers in the beginning you will find what kind of topics are important and from there you can find more details in the textbooks (it's worth doing that). There is some good content also on Youtube but not all of it is good (despite high number of views and positive comments).

> You will need a lot of endurance (both physical and mental) to go through some of those onsite interviews.

I have gone through some interviews where it is really grueling and mentally taxing. What do you suggest to improve endurance especially mental. It becomes very hard to concentrate on coding after almost 4 hours of interviews.

In addition to the resources others have suggested here I recommend going through this list of problems that I put together for the coding portion of FAANG interviews: https://theinterviewlist.com

Glassdoor often has good hints.

Whiteboard sessions focused on algorithms and data structures will probably resemble CS20X college courses.

I'm interested in the opposite actually. There seems to be a ton of resources online for algorithms but what are some good resources for System Design and scenario based questions? I know of Grok the System Design interview and that's pretty much it.

And what would be the prep resources for "system design and scenario based questions"?

https://www.educative.io/courses/grokking-the-system-design-... : I paid for it and found it to be my money’s worth.

It helped me figure out a template that I was able to apply for almost all system design interview questions - how to think, how to break-down the problem, what all I should consider, how to stay focused on the complete system instead of accidentally going down a specific component and such.

Mostly experience

The same is declared for algo riddles but that's not the case, similarly.

There are mock interview sites, like Pramp.com, Gianlo.co, PracticeCodingInterview.com that all have staff+ FANG interviewers on rotation. They aren’t cheap, but they’re there.

Leetcode, interviewing.io

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact