Abhishek Prakash

Building AI chips at AWS

Seattle, WA --:--

All posts

What worked in my job search, round by round

How I prepared for each interview round as a senior engineer, what worked and what didn’t, and the resources I used.

Published
Reading time
6 min
Topic
Tech
Tags
career, interviews, system design

I just started a new role at Annapurna Labs. Before this move, I interviewed outside for a while: about 25 to 30 applications, callbacks from about eight companies, and two offers. Then I decided to move internally instead. More on that at the end.

This post is the guide I’d give a friend who’s starting a search: each round, how I prepared for it, what worked and what didn’t, and the resources I used, so you can follow the same steps.

System design was the round I prepared for the most, and it was also the round I failed the most. I’ll get to why.

My search, from applications to offers
  1. Applied Roles I applied to 25–30
  2. Heard back About 3 in 10 applications 8
  3. Passed the phone round 6 of the 8 6
  4. Offers 2 of the 6 2

Applying for jobs

I applied three ways: to roles tagged security (my background from AWS Security Incident Response), through referrals, and at random. I expected referrals to give me the best chance of a callback. They didn’t. I heard back more often from the security roles, and that surprised me.

My chance of hearing back, by how I applied
  1. Relevant role Tagged security, my background Best
  2. Referral Someone inside put my name forward Next
  3. Random Anything else that looked interesting Lowest

So the best bet is both together:

How I’d apply now
  1. Find the roles you’re relevant for Where your recent work is an obvious match (security, for me)
  2. Get a referral into those Relevance plus a referral gives you the best chance of a callback

Worth a look

Problem solving (data structures and algorithms)

My competitive programming background helped here. After a few days of solving problems I got the groove back, and soon I was solving hard ones again. This was my routine:

My coding prep
  1. Revise the concepts NeetCode, one pattern at a time
  2. Practice the company’s questions LeetCode, by company tag
  3. Move up to hard problems Once the groove is back

If competitive programming isn’t part of your background, give this round more time than I did.

What I used

  • NeetCode Free roadmap of the common patterns, with video explanations
  • LeetCode Company tags (a Premium feature) list questions people report being asked at each company

Also worth a look

Behavioral

I spent some time writing down examples before my interviews, then practiced them. My prep was three steps:

My behavioral prep
  1. Write the stories down High-impact projects, challenging situations and conflicts, leadership moments
  2. Add what you learned For every story
  3. Run mock interviews I used Claude

The second step is the one I’d stress. It’s important to note what you learned for every example. Here’s a simple way to write each story:

Part What to write
What happened The situation, and what you owned
What you did The steps you took
The result What changed, with numbers if you have them
What you learned What you’d do again, or differently

What I used

  • My own story notes The three groups above, with what I learned from each
  • Claude Mock interviews, to practice telling the stories

Also worth a look

System design

I had never done a system design interview before, so this is where most of my preparation went.

My system design prep
  1. Learn the material Hello Interview, Alex Xu’s System Design Interview book, YouTube
  2. Practice every day One problem a day
  3. Research the company Before each round. This is the step I missed.

It was also the round I failed the most. Looking back, the main reason was my tech choices. When there were two good options, I’d pick the one the company didn’t use, or the interviewer wasn’t familiar with. Then I had to spend time explaining it to the interviewer, and that time came out of the deep dives. So for any choice that could go either way, here’s what I’d do now:

For a choice that could go either way
  1. Find out what they run Their engineering blog and job postings are good places to look
  2. Pick the one they use If A and B would both work and they use A, pick A
  3. Justify it properly Never just “because you use it.” Give the real reasons it fits; a smaller learning curve for their team is a good point too.

A few examples of what that research turns up:

Company Safe picks
Amazon, AWS DynamoDB as the database, Kinesis for streaming
Meta PostgreSQL
Airbnb PostgreSQL
LinkedIn Kafka for streaming, which started at LinkedIn

Meta and Airbnb both run MySQL in production, so MySQL is just as safe a pick there.

What I used

Also worth a look

How it ended

I ended up with two offers. Then I decided to move internally to Annapurna Labs instead, to be closer to hardware. Now I work on inference for AWS’s AI chips.

If you’re searching right now, good luck. If you have any questions or need anything from me, connect with me on LinkedIn and send me a message there.