[AMA] Interview tips after a recent round of offers (380~500k)

Google el googler
Aug 1 118 Comments

TLDR: Offers ranging 380k~500k from Facebook, Uber, and 2 other companies. Non-exceptional IC with 5 years of experience. Interview tips are nuanced and its your loss if you don’t read.

### About me ###

Software engineer with 5 yoe in the bay. B.Eng (not comp sci) in a well-known school. Mostly self-taught. Prior to G, worked at a couple startups. No specific expertise to brag about but I work harder than most, pick things up fast, and have good communication skills.

### Offers ###

Interviewed at Facebook, Lyft, Uber, and 3 other companies. Got senior-level (L5/E5) offers from Facebook, Uber, and 2 other companies. First year TC ranged from 380k~500k from both public and private companies, recurring TC ranged from 380k~450k. Breakdown was around 180~210 base, 500~800 equity, and 0~100 sign-on. No difference between private and public companies, surprisingly.

### Process/Scheduling ###

- Plan was to do 200 LC, 10 design/architecture, prepare answers for behavioral questions, and go through the designs of my old projects

- In reality I probably did closer to 150 LC (30/50/20 easy/med/hard) and 15 design/architecture. Most of my focus was on design/architecture and behavioral.

- Did mock interviews on interviewing.io, and a buddy who was also interviewing

- Got referrals on repher.me

- Scheduled phone screens during lunch hours, and scheduled onsites over span of 2 weeks with vacation days

- Whole process was 3 months, from when I started prepping to accepting the offer.

- Be goal-oriented (as opposed to schedule-oriented). Ex. "do 5 leetcode questions" is better than "do 2 hours of leetcode". Have measurable goals for prep.

### Interviews ###

- Told the recruiter I'm looking for senior positions. Was transparent about my level at G (L4), they did not care.

- Format is mostly the same, a mix of LC, practical coding problems, design/architecture, experience deep-dive, and behavioral.

- Practical coding problems is a recent trend. You can bring your own laptop, I recommend that you do. You can also search online during that round. I think they look for programming fluency, and signals for self-sufficiency.

- At senior level, design, experience deep-dive, behavioral are emphasized. Lyft has 2 design rounds. Most companies combine the deep-dive and behavioral rounds.

### Leetcode ###

- I've done 300 LC problems lifetime, so I only needed a refresher. The mental breakthrough happened for me when I hit 200 LC problems.

- Good set of questions: https://www.teamblind.com/article/New-Year-Gift---Curated-List-of-Top-100-LeetCode-Questions-to-Save-Your-Time-OaM1orEU

- Understand the problem through examples. Define the input/output. Try to find edge cases. Don't do this as a checkbox you're trying to check, the goal is to fully understand the problem.

- Find brute force immediately, and explain it to the interviewer. Don't look for the silver bullet. Often you can optimize the brute force to get a very good answer. Most companies don't care about getting the perfect answer, just a very reasonable one.

- Example: trapping rain water on LC. Brute force is to find the amount of water trapped at each index, by scanning for the largest values to the left and right. This is n^2. You notice that you are doing some redundant work in scanning the largest values on the left and right, so you cache it.

- When doing LC, I describe the solution in code comments. This was good practice for communication. Then I write the code and then try to optimize it. I peek at answers on LC Discuss liberally, after 30 min of trying.

- Use helper methods for trivial computations, tell the interviewer you will implement it later. You won't have to. Example: finding the min/max in an array, it’s too trivial. Readability is important. LC Discuss answers have shit readability.

- When testing the soln, use examples you discussed earlier. Often it's good to write out variables involved in the algorithm in a table format, and writing down the values as they are updated. Much like a debugger, but on a whiteboard.

### Design ###

- I used grokking and system design primer to start. They are surface-level. I recommend it as a starting point. Design prep involves a lot of googling.

- I watched some system design videos on Youtube, they are also surface-level. In fact I think most of them don't know what they're talking about (not naming names, but pretty much all of them). I liked this guy though: https://www.youtube.com/watch?v=iJLL-KPqBpM.

- Grokking recommends this structure: requirements, load estimation, API, data schema, high-level architecture, detailed component design, and scale. +1 on this.

- The problem with these contents is they spend too much time on high-level/drawing boxes, but when they go deeper they are not going deep enough, and tend to focus on the wrong things. I think most of the design discussion should be centered around API's.

- When you’re designing something at work, you mainly discuss the API's. Implementation details are done within the team or on your own. The API is where cross functional collaboration and discussions happen. Grokking and primer don’t cover API in enough detail.

- Write down each API and discuss the policies. For example, when designing a queue, you have enqueue/dequeue API’s. Does dequeue guarantee removal? It changes the implementation. How much load is on that API? Does the API guarantee freshness or not? Fire-and-forget? Blocking?

- From API discussions, the data schema, high-level architecture, and services should be easy to draw out. Data schema will roughly reflect the API request/responses, services will be scoped to support a set of functionally related API’s.

### Behavioral/Deep-dive ###

- Be honest about your shortcomings and failures. If you’ve never failed, you’re either inexperienced, unaware, or a liar. Never throw past teammates under the bus.

- This guy sums it up better than I can: https://www.youtube.com/watch?v=PJKYqLP6MRE

- Go through your past projects and gain a deep understanding of the entire project, beyond the scope that you were involved in. You’ll need to be able to explain it to someone as if they are a newcomer to the team.

### Negotiation ###

I didn't negotiate my offers beyond telling the recruiters what the other companies were offering me. This only worked because I interviewed companies that pay top of market earlier in the process (cannot disclose). I also let the recruiters know how much I was expecting, and disclosed my current level/comp when asked (L4 at Google, so it would not have helped my case).

I dislike most of the online advice that tells you to play a game against the recruiter. Recruiters are human. Full transparency, and being genuine with the recruiter has worked well for me. Try to not make it all about money. If all your questions/comments are around comp, it signals to the team that you're just interested in money, which certainly doesn't help your case.

### repher.me ###

As a closing note, you may have noticed me promoting my site on Blind. It was a side-project I made before I started interviewing. Hope you don't mind another plug. It's completely non-profit, and I made it for fun.

AMA

comments

Want to comment? LOG IN or SIGN UP
TOP 118 Comments
  • Apple kICY04
    What’s tldr here ?
    Aug 1 2
    • Google el googler
      OP
      It’s too nuanced for a good tldr, recommend reading the whole thing.
      Aug 1
    • Salesforce unduless
      TLDR your loss if you DR
      Aug 1
  • Amazon / Eng bLif00
    Good post
    Aug 1 0
  • Cadence xy123
    At repher.me how does it guarante candidate's privacy from their own company?

    does it reveal candidate name to all referrers everyehere including those from his own company?
    Aug 1 12
    • Cadence xy123
      dont understand your post. Dont do stupid shoot the messanger its stupid
      Aug 2
    • Cadence xy123
      Posted profile there, but it makes linkedin url public
      didnt have this issue yesterday
      Aug 2
    • Google el googler
      OP
      Trust me its not visible to others
      Aug 2
    • Google el googler
      OP
      There was a bug where you couldnt see your own profile data which I fixed, so you can see your own stuff. Others wont see it
      Aug 2
    • Cadence opas
      Cool
      Aug 2
  • Saw you on Reddit before. You’re an inspiration!
    Aug 1 0
  • Amazon New Guy!
    Thanks for your feedback
    Aug 1 0
  • Google v.putin
    You must be a Canadian with a Chinese surname for sure. That detail! Were you a front end or backend software engineer at G?
    Aug 1 2
    • Google el googler
      OP
      Not frontend
      Aug 1
    • Why it has to do with being a Canadian with a Chinese surname?
      Aug 2
  • New
    slushie

    New

    PRE
    Google
    slushiemore
    OP I love repher.me. Are you interested in giving advice on rooftopslushie.com ? You are such a rock star.
    Aug 1 0
  • Microsoft / Mgmt CaptCrook
    Thanks bud. Best of luck!
    Aug 1 0
  • This was one long ass post. But damn was it good, bunch of details, offer details, TC, ugh oh my god I LOVE It 😍!!!!!!!
    Aug 1 1
    • Google el googler
      OP
      Love your enthusiasm lol
      Aug 1
  • Google blio
    For reference can you share your offer details? Any that you feel ok sharing of course.
    Aug 1 8
    • Uber WBPM33
      Gotcha, thanks for sharing!
      Aug 1
    • Uber WBPM33
      Be a
      Aug 1
    • Google blio
      Which were the 500k offers?
      Aug 1
    • Google el googler
      OP
      FB and another company came close
      Aug 1
    • Google blio
      Thanks for sharing! That's some insane numbers
      Aug 1
  • SAP kgwezh
    I realized during the course of interviewing with big companies that the stuff on Grokking was very surface level. Most interviewers are looking for depth in terms of trade-offs in specific scenarios versus the high level stuff. I haven't still found good sites that explain this. At least in a couple of interviews, I had covered all the material given in the grokking design and it was still not enough for the interviewer.
    I think proficiency around this mainly comes from experience ( designing such systems)
    Aug 11 3
    • Microsoft leetlleet
      That means design round is truly the right one to evaluate experienced engineers. I wish we focus more on this to discuss about all sort of technical details - kinda open ended discussion rather than giving a specific answer the interviewer is looking for.
      Aug 11
    • Amazon gоd
      We do focus more on that for experienced engineers. It’s usually the college grads and mid-level engineers that get asked LC hard, DP, etc. coding questions. Senior engineers with more than 8 yoe get relatively easy coding interviews and very hard design interviews—usually stuff you can’t teach in Grokking.
      Aug 11
    • Microsoft leetlleet
      With all the dramas people talking about, one thing I like about Amazon is its interview process. I am glad the interviewers at Amazon are aware that hard coding questions for seniors are pointless. I actually like they ask leadership principles as well. It is different and unique and can select the gems from the candidates. Other companies are selecting candidates based on the same criteria which is stupid since anyone who can get through Google or FB will go there.
      Aug 11
  • Visa / Eng Jdmfe
    Man, you are the real inspiration. I am also from non CS degree and I can understand how much pain you are going into this. Thanks for sharing your success story, and I wish I can be like you one day.
    Aug 2 0
  • Intuit / Eng YaUr08
    Where did you get your 10/15 architecture design questions from?
    Aug 1 7
    • Google el googler
      OP
      Most of them were specific, so its different from how its presented online.
      Aug 2
    • Google el googler
      OP
      There were some surprises, like designing a distributed queue, because most of the questions are “design this app feature”
      Aug 2
    • Microsoft / Eng coolbloke
      That's exactly what I wanted to hear. Thanks!

      What is a good place to see many examples of such narrow questions. I can think of the answers myself. I just need to expand my horizon to think of some of those questions I have never heard.

      Grokking, primer, aren't useful, any other?
      Aug 2
    • Google el googler
      OP
      Go through your installed apps features
      Aug 2
    • Microsoft / Eng coolbloke
      Thanks. Blind app may be a good place to start ;)
      Aug 2
  • Hey,
    Is it possible to learn&understand System Design only through " Grokking SD" ?

    I am new Grad and I am not involved in practical system Design,
    So how can I make learning System Design effective?
    Aug 2 2
  • Capital One / Eng sumbodeee
    Age?
    Aug 1 2
    • Google el googler
      OP
      27
      Aug 1
    • Cadence CubicleDog
      I'm 34 and joining Microsoft as an L61. I've never felt this inadequate. Sigh!
      Oct 25
  • Twitch FUI
    Wow thank you so much for the post. How did you schedule your interviews? Did you start with easy ones for practice? How long did it take to get an offer letter from Google?
    Aug 1 1
    • Google el googler
      OP
      I did phone screens over 3 weeks and then onsites a month after that. I didn’t apply to companies I didn’t want to go with, but I started with the ones I liked less. I failed google interview twice (intern, fulltime) before I got in.
      Aug 1
  • Microsoft /More/$$$$
    Finally we have a decent post on Blind. Thanks for sharing and best wishes!
    Aug 1 0
  • Amazon prestige🧐
    Nice 👌👌👌
    Aug 1 0
  • Davey leetRabbit
    Bookmarked the thread after reading the first para.. awesome tips. thanks. for API design, as you mentioned there is not enough content..so any specific places we could look to get that idea..
    Aug 1 1
    • Google el googler
      OP
      I couldn’t find much. It was mostly based on experience, and I’m not sure if I’m right either.
      Aug 1
  • Amazon CsRr26
    Who are you going to pick?
    Aug 1 1

Salary
Comparison

    Real time salary information from verified employees