My Study and Interview Journey: March-May

TL;DR walls of text 4YOE in startups, below avg gpa @ top 10 cs school TC 170k HCOL -> Google L4 TC 290k M-HCOL 85 hrs EPI/interviews, 22hrs behavioral/resume/applications 100 EPI scenario 4 problems, 5 LC targeted companies Been a while since but wanted to tell my story and share my process. I initially tried studying in January, but only stuck with it for about 2 weeks, doing 17hrs. Decided to go all in after a tentative scheduling with the Google recruiter to light a fire under my ass. Compared to last studying attempts, I focused on quality over quantity-- on weaknesses, taking breaks, and being ok with failing. I'm really lazy, so I only scheduled onsites with companies I wanted to work at, and didn't do any throwaway interviews. Started studying 3/14, scheduled Google + cold applications to others 4/1, interviewed 4/27 with Google and signed their offer 5/31. Had a two month break until start date. Phone screens with 9/33 companies paying above 250k Seattle/HCOL - AWS, Google, Asana, Indeed, Qualtrics, Redfin, Twitch, SoFi, Cruise - Referral to Google/Redfin, pre-existing recruiter contacts w/Google, Meta. - All else cold applications online, same resume Passed 6/7 recruiter screens, Passed 5/5 technical phone screens - skipped Qualtrics, SoFi, Twitch, since I was already at the offer stages when they responded - skipped Google screens due to referral (maybe) - funnily enough, AWS OA was by far the hardest of all the problems throughout the whole process. 2 dp questions, which had to be solved bottom up 5 Onsite invites: Redfin SDEII, fully remote (no offer) Asana L4, SF only (skipped due to AWS offer, responded with invite very late) Indeed L2/L2-II, Seattle (delayed them then skipped after AWS) AWS L5, fully remote Seattle/Colorado - 320k flat per 4 years. 7k pre tax relocation Google L4, hybrid Colorado - 262.5k avg: 290Y1, 290Y2, 250Y3, 220Y4. 24.5k post tax relocation Went with Google due to the WLB, resume boost, and TC+benefits being close to AWS, assuming I stay for only 2 years, or 2+ years having refreshers. I think I got a lucky loop, and I probably wouldn't pass if I got some of the infamously hard problems. The Google loop took sooo long, even with my recruiter expediting things (team matching 2-3 weeks after onsite, HC + verbal 1 week after that, formal offer + round of negotiation + signing ending 1 week after that). I wouldn't want to do it again, it really sucks. Aside from some typical courtesy responses, I wouldn't receive any info unless there was an update in my packet, and I was still awaiting interviewers' gradings during team matching. The loops: Difficulty-wise, Google > AWS > Redfin. Code component design in each. All LC mediums-low mediums except for Google with 1 medium-hard. With Google, all of the questions started out easy, and got to varying levels of followups (1, 2, 2, 3). I believe my curiosity, composure, and justifications (even for suggestions that were not my own) really carried me here. I had bugs in all of my Google loops, and some were things like not recognizing DFS, or using a sorted list instead of just a stack. I got pretty lucky here, I didn't get any DP or weird algo problems, with the most complicated being familiar with, but not implementing Djikstras. Google was the advertised 4 coding loops and 1 googleyness. AWS' questions were easy-medium and I recognized all of them, but it was still a pressure to finish coding in time for the behaviorals/LP. I didn't study system design at all, and luckily did not receive any for AWS or Redfin, even though AWS specifically said I would. In each, coding was just brief 1-5m chores of translating described approaches, or specifically explaining some ideas if the interviewer was confused. Negotiations/post loop: Redfin closed my app due to HC/layoffs, but I'm pretty sure I wouldn't have passed since I bombed the main coding loop. Negotiated with Google using AWS, but they wouldn't budge their initial offer, due to L4 peer bands in the area. I initially gave 230-240 as ballpark starting numbers with them. AWS said I had very strong interview feedback, so I asked for "top of band". They offered 320. I did not give them any numbers throughout the process, but did mention I was in post onsite with Google. When I declined AWS, there was definitely wiggle room to go 340+. I would have liked to negotiate more, but by the time I finished AWS matching and got the offer, 1/3 Google team matches were shortly 'expiring', with no guarantees for further matches or the strength of my packet. With long vacations happening right around the corner, I declined taking the chance with more Google matching calls. About me: I've never been passionate about CS or LC, but I do enjoy the work within a 30-40hr week. I went to a top 5-10 CS school, passed with below average GPA in CS and several failed classes/quarters. Never did an internship, and after I got my first job, was content to just focus on life. Have about 4 YOE in startups, always meeting expectations on the higher end, but still meeting expectations nonetheless. After Blind and thinking about my school though, I thought--in my senior capstones I felt as smart as my peers, and if they went to FAANG, I could do it too. I just have to apply myself and stop being lazy, passion is only worth so much. I've done 3 study sessions before, ~50-100hrs for my first job, ~20-50 for my second, ~10 for my third. Each of these times were in one month. Scheduling: I scheduled Google as my first onsite, 6 weeks since I started studying. Historically I've tried to do throw away onsites before target ones, but I get very lazy and accept the first 1-2 offers. I did have technical screens over zoom with Asana and Indeed (karat) first to get over some of the nerves. Had Asana, Indeed, AWS, Redfin all scheduled two weeks after, but postponed Asana and Indeed due to feeling decent about my Google onsite and seeing if AWS would offer (they have a few days SLA to respond with feedback). What I used to Study: Not really a master in any language, having moved from stack to stack with each job, so I used python for the terseness. I used the EPI book and LC premium before to prepare, and I almost solely used EPI this time, for the bang for buck in time vs breadth+depth. I followed the Scenario 4 plan, and aimed to do 2 hours of focused studying per day. I would do passes through all the sections, 1-2 questions per each, instead of entire sections at a time. I kept a daily time log and notes about each problem. Unless I had a simple bug on the problem, I would redo them until I had at least the approaches understood. I bought LC premium, which was really only helpful for the targeted companies lists. I only looked at LC once I finished EPI. In tandem, I reimplemented: DS: LinkedLists, HashTables, Trees (except the balancing), Heaps, Graphs Algs: Merge/quick/insert/selection sorts, DFS, BFS, Binary search A fair amount of this was done in my prior 17hr study stint in Jan Study numbers: I did 85 hours of studying + live technical interviews total, over ~100 EPI problems and 5 targeted company LC. Tried about 30-50 LC problems, but those were largely a waste of time and already covered by EPI. I'd study in 1-2 chunks of 1.5 hours before and during lunch at work. I didn't take weekends off, but I really should have. 22-30ish extra hours were for resume/job applications/behaviorals. I only studied until the Google onsite. Was planning on doing system design after for the other loops, but got lazy. I specifically aimed to do an uncomfortably low amount of studying, because before when I set higher targets (X hundred hours+, blind 75 + some LC target, or prepping for 3+ months), I would quit. Because fuck it I don't enjoy LC, and I feel pretty good about my process in the interview, as long as I've prepared technically. It was still a crapshoot on whether I could recognize a pattern, but if I did, I could solve LC mediums in about 15-20 minutes, and get the gist of LC hards in 20-30m (but not solve). I wouldn't get too hung up over bugs as long as I had the right approach, unless I kept hitting those bugs over and over again. I was leading a project at work, and felt burnout most days. I'd spend about 6-9 hours at work, and 1.5-3 studying. Since my teammates needed a lot of guidance, I spent a lot more brainpower at work than anticipated from the outset. Near the end, I framed the interviews as celebrating the study/work hell. My problem solving process: For actually solving problems, either at home or in the interview, I aim to have the actual coding just be the tedious translation task, NOT where I try to devise my approach. 1) Restate problem and clarify constraints 2) DRAW THE PROBLEM -- this is key in the beginning, lay out all the facts in front of you and just start playing around. In the interview, most of my questions were easy enough that I didn't have to do this 3) Come up with approaches. Always give their big-O, and tradeoffs between approaches. If you don't know a valid one, just start brainstorming with your interviewer. Creativity and curiosity are good signals to show. 4) Suggest an approach, and look for what the interviewer wants 5) Code. I personally don't speak my thoughts when I code as it interrupts my flow heavily. I generally only explain my code after big chunks/functions unless the interviewer interrupts. 6) Debug 1-6) Don't interrupt the interviewer, really listen and watch. Believe that they are on your side and look for hints and seek rapport. You need to show you're not a PITA to work with. For nerves, I thought of the interviews as being determined almost entirely by the luck of my interviewers, and the efforts of my studying. I just had to act normal, layout what I had, and hope for the best.

DataRobot qVsE13 Oct 1, 2022

Wtf does EPI stand for

Google QWuJ53 OP Oct 1, 2022

It's a prep book. Elements of Programming Interviews, available in Python, Java, C++.

DataRobot qVsE13 Oct 1, 2022

Ah, thank you! And great post, sorry I just kept seeing EPI in the first paragraph and didn’t understand til I read it was a book later in your post. Appreciate you doing a full write up of your process though, and congratulations on making it to Big G!

JPMorgan Chase eastofed Oct 1, 2022

Congratulations on the offers and joining Google! You mentioned that you didn't recognize you needed to use DFS. So did the interviewer have to give you a hint about that? Also, for AWS, were all your interviews just coding+LP, or did you also have an OOP interview?

Google QWuJ53 OP Oct 1, 2022

I was basically doing it in a backwards way but with a list and some other structures instead. After that interviewer specifically mentioned DFS I facepalmed but explained how I understood it and wrote it up real quick. For AWS instead of a system design I had OOP+LP with an sdm. The others were coding+LP.

JPMorgan Chase eastofed Oct 1, 2022

Thanks for the info! Would you say you received a lot of hints like that throughout your other Google interviews?

TikTok TikTox Oct 1, 2022

Dm for TikTok / bytedance referral if interested

Paycom kngfshr Oct 3, 2022

Awesome write up. Really appreciate the detailed post. Can I Dm you? Have a couple of questions about the AWS interview. Have mine in a couple of days!

Google QWuJ53 OP Oct 3, 2022

Sure

Oracle superb AT Oct 20, 2022

How was cruise phone tech screen?

Google QWuJ53 OP Oct 21, 2022

Sorry didn't make it clear, but that was one of the recruiter screens I didn't pass. There weren't roles for my background yet, and they weren't posted until I was already in the onsite stages