(Unofficial) Insider guide to tech interviews
bartwronski.com
bartwronski.com
I think this essay understates how difficult the coding test screenings can be. I do agree that it is not necessary to memorize obscure algorithms - second year data structures and algorithms will do. But (based on my experience) the progress you need to make in workable code in 45 minutes at s whiteboard id too great to refer to any of this as a “simple coding test”. I know some might view this as a quibble around semantics, and “simple” is subjective. But words have meaning and we have to draw the line somewhere. I maintain that this is not simple for a reasonable definition if simple.
This is easily remedied since I can be exact: designated “hard” questions from Cracking the coding interview are fair game, and you are expected to make substantial coding progress at the white board in 45 min.
I’d like to wrap up by coming back to my first point - excellent essay, worth bookmarking and reading in full.
For me, easy is something that a person of average skill in that domain can do and that the top 20ish% person in that domain can do with their eyes closed.
I have a masters in CS, I know all of the words and stuff in your essay. I have been programming python for a while. I would most definitely need to study up on graph algos, implementing sorting algos, dynamic programming, etc. Then refresh my big-O notation as well. Unless you are doing it everyday, this stuff ain't simple or easy to master to the level of being able to code it up during a 45 min online session.
I can easily see 2-3 weeks of full time studying for myself to even be minimally ready to code up a BFS search in python, as part of a larger problem, in python, in 45 minutes, while writing an example down, while writing a test case, while talking out loud.
Whether you agree or disagree with the guidance here, you have to respect the effort that has gone in to put this together. Especially good in understanding the role of the corporate recruiter - not a friend, not an enemy - though I would add nuance such that they are not a friend but become a friend once you secure the endorsement of A N other assessor.
1) Recruiters often have quotas too - In many cases, their own performance is measured by hitting hiring targets, so they're incentivized to get you in the door, even if not on best terms for you.
2) In the age of initial RSU stock grants, underleveling can be VERY, VERY costly. The difference between L and L - 1 could be > $100k/year, so the penalty may be far more severe than just time, especially if annual stock refresh is based on level as well.
3) Coding interviews aren't supposed to test knowledge of specific algorithms, but I've been part of a hiring committee at a FAANG and had to request another round of interviewing a few times because the original interviewer failed the candidate based on a chosen coding question that had to do more with knowledge of matrix math, graph theory, etc. than the ability to take a problem, break it down, consider edge cases, and produce code.
4) The process is indeed very arbitrary. My favorite story is about a time I submitted my resume and got a call from a recruiter two weeks later who loved my background. I interviewed and got an offer that I eventually declined. I learned during the process that my application was rejected by the company's resume scanning software. It was purely a coincidence that a recruiter happened upon my LinkedIn profile (which mirrored my resume) at nearly the same time.
I had something similar happen to me. I submitted my resume on the company's career page after seeing a role that matched me perfectly. I got an automated email telling me I wasn't the right fit. Dejected, I posted my resume on a job portal only to have a recruiter reach out to me for the exact same position. I interviewed and got an offer.
Also, if you interview candidates regularly, please abstain from asking Dynamic Programming problems unless the job really needs it. It doesnt give any signal about candidates coding skills or ability to write good code. Most of them are just memorized solutions.
In that case how could they do domain-knowledge interviews if they don't even know what you will be working on?
I have some colleagues who are career enterprise and infrastructure PMs and they tell me it's very frustrating to have tons of very valuable expertise and then get asked a question about Tik Tok in an interview. I've also heard from SWE friends that they self-identify as a backend/infra engineer to the recruiter, only to show up to the interview and be asked to create a webpage from a mock and some specs. tl;dr FAANG has not figured this out yet.
On the other hand, you might be getting "average" ratings (where average translates in practice to poor - a paradox culture of everyone always expecting you to exceed the expectations ;) ), and after 4 years when the initial equity grant runs out, refreshed will be lower and you will start having significantly less stock (which is definitely more than half of the total compensation on higher levels).
(Also IMO it's rather impossible to get overleveled.)
It will take a little while for you to "wash out" as you put it, and in that period you can just look for another job with a better anchor point. In the mean time you'll be getting paid significantly more.
I also think that the levels are noisy. A good enough L4 can manage a "good enough" rating at L5 almost always. The hard part is actually getting promoted.
Forget leetcode, this would burn me out much more.