HACKER Q&A
📣 scalar-moose

Senior Positions Interview Prep Resources?


Hello,

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.


  👤 JMTQp8lwXL Accepted Answer ✓
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.


👤 rvz
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.


👤 jackraven
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!


👤 akoumis
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.


👤 Ozzie_osman
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.


👤 chrisbentzel
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.]


👤 coldcode
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.


👤 6ue7nNMEEbHcM
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).


👤 Technophilis
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

👤 all_usernames
Glassdoor often has good hints.

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


👤 southphillyman
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.

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

👤 practiceint
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.

👤 ummonk
Leetcode, interviewing.io