Richard Zhao

New Grad Job Search

Semesters come to an end, and I thought it would be nice to reflect on the new grad job hunt. Statistics are shown below, and if you don't want to read everything, a summary's also below that.

Statistics:
Companies applied to: 137
Responses: 37
Hackerranks/Online Assessments: 19
Total Phone Interviews (initial and post-OA): 23
Onsites: 10
Total Offers: 3 (1 return)
Withdrawn Applications: 17

Summary/Takeaways From my Experience:
- Keep applying; I didn't receive other offers until late October.
- Leetcode is insanely prevalent in techhubs. I was asked LC style questions in almost every interview.
- Heaps, Tries, and Intervals come up very often. DP does not. I was quite surprised that I ran into questions using heaps and tries so frequently. Apart from the typical topics (strings, linked lists, trees, array, graph, etc.), I would definitely spend more time on those topics if I could redo this cycle. I also ran into Merge Intervals (and variants of it) at least 5 times. I was asked a fat 0 dynamic programming questions and spent the most time preparing for it. That being said, my friend was given like triple DP hard questions for his Google interview, so YMMV.
- System Design is just as important as Leetcode - I was asked to explain the structure of one of my projects or a typical sys-design question in many of my interviews and had at least 1 system design round in every onsite, but I didn't have to deeply address topics like scalability or things that are probably more relevant to senior devs. I'd say this is really just Object-Oriented Programming, but I had occasional chances to talk about scalability and real world implications which was cool.
- Career fairs are busted: My response rate at career fairs was considerably higher. (58% vs 21%). I was rejected from Bloomberg from my online application, but got to a final round interview from my career fair.
- Browse /r/cscareerquestions in moderation. I browsed the subreddit almost everyday (to the detriment of my mental health). I saw so many doom and gloom posts, posts from students (some not even in college yet) giving advice as if they were industry veterans (I am guilty of this too, but I try to only answer questions geared towards people like me and give disclaimers when I can), and people just generally shitting on other people/companies not in FAANG (or the reverse of shitting on someone because they want to join a FAANG). I found that noting certain users who were experienced, level-headed and gave good advice/insights was pretty helpful as far as filtering through some of the chaos. (/u/talldean and /u/nutrecht in particular are people who come to mind)
- Take this post with a grain of salt. I'm just some college student who wants to share his experience in recruiting. I am not experienced enough to make judgments on the industry, nor am I some super genius coding whiz. I am honestly a quite below-average student at CMU.

For context:

I felt that I had a better-than-average recruiting season. However, I also felt that I ran into more obstacles that I had not experienced in previous years- namely, companies only hiring for interns and being rejected because I moved my application too slowly. I know that intern classes fill up too, but this was the first time I've received responses from recruiters that I had performed well on the interview , but was being rejected because there were no more spots. (i.e Redfin)

My preparation involved skimming CTCI (for behavioral and core topics to address), Leetcode, and skimming Competitive Programmer's Handbook. I did not whiteboard or code out any of the practice problems for CTCI; I only looked at the question and thought of the solution in my head to check. I mostly used CPH for Dynamic Programming preparation, which I ended up not being asked at all for the entire cycle.

I began applying at the start of September and sent 137 applications. I applied to almost exclusively tech-hubs (around 10% NYC, 10% Seattle, 70% SF/Bay Area, and 10% other). I had my return offer from Capital One that expired on October 25, but I was surprised to find that I was unable to speedup the process for most companies.

My overall response rate was 27%, but I found a huge difference between shotgunning online applications and going to career fairs. I had an insane 58% response rate from companies I talked to at my school's career fairs, and a lot of these companies didn't even have openings online for new-grad; they recruited almost exclusively from these events.

I was pretty overwhelmed with balancing recruiting and classwork. After around the 2nd week of September, I was getting responses everyday and my schedule quickly filled up. I had an interview (sometimes multiple) everyday from mid-September to late October. I was missing weeks of classes due to onsiting and often scheduled interviews 2-3 weeks in advance because I couldn't do them earlier.

This probably ended up messing up some of my interviews and recruiting. Because I was scheduling so far in advance, my timeline was greatly increased and it resulted in some rejections due to the company being done with new-grad recruiting, my requested location running out of spots, or just being too burnt-out to continue interviewing. Once I had received an offer I was happy with, I didn't want to interview anymore and withdrew the rest of my active applications. My grades had also began to seriously suffer from missing class and I just wanted the season to end. I ended up withdrawing my application from Google, Amazon, Bloomberg, TripAdvisor, Epic, Roblox, and a host of other smaller companies. I felt especially guilty about Bloomberg and Amazon because I had spent so much time on their intermediate interviews to get to their final rounds only to quit.

The Blind 75 List was very efficient as far as studying Leetcode went. I felt pretty comfortable with almost all of my online assessments and interviews. I was unable to finish only 1 leetcode-style coding challenge (although I found that passing hackerranks did not guarantee moving on to the next round; I finished Samsara's in 10 minutes to get ghosted). Of the phone screens and onsites I did not pass, one was due to forgetting the syntax for raising an error in Python, one was due to blanking out on generating permutations, and one was due to being completely stuck and not knowing what data structure to use. (k-sorted array). I also failed a couple of trivia/quiz based hackerranks and failed a non-trivial amount of behaviorals. (if I wasn't feeling it/couldn't make a connection with the recruiter, I usually just completely bombed it)

Of the questions I was asked, the topics I ran into the most were trees and intervals by far. I was also asked a non-trivial amount of strings, linked-list, array, trie, and heap/priority queue based questions. I was asked 0 dynamic programming questions. The system-design I was asked mostly involved designing a simple application/product, (like UML diagrams) although I was often given the opportunity to discuss other things like scalability/parallelism, implications on user experience, real world feasibility, and tradeoffs.

My first onsite was in early October and was with Mastercard(formerly APT). I ended up being so nervous for that interview that I didn't end up with much sleep and ended up completely bombing the first round. I did pretty well the rest of the day, but I already knew in my heart that I had failed, which ironically lifted a lot of the pressure off of me and probably made me perform well on subsequent rounds. I was feeling really bad after that so I ended up taking a couple days off from recruiting after I flew back.

I ended up with 2 offers (not counting return). One was with a late stage startup in LA (Clutter) and the other was a public fintech company in SF (LendingClub). I was very satisfied with both companies (contrary to what I had read online, and was very happy with what I saw in person) so I knew I was going to decide between the 2 of them. In the end, my decision came down to solely personal reasons, so I ended up taking the latter. I wouldn't be surprised if the former became a unicorn in 2020 though and exploded in evaluation.

So that was my recruiting season; I felt like a huge mountain was lifted off my shoulders once I signed. The highlight of recruiting was definitely the hotels and meal reimbursement; delivering $20 worth of boba to my hotel and showering in glorious bathrooms were definitely 10/10 experiences. This process definitely has a lot of luck involved - and I know that it probably doesn't mean much coming from some random person, but if you're struggling and losing hope, I get it. I felt especially awful in October and felt that I was a complete idiot who couldn't hope to pass any onsite. I was watching people I knew secure huge offers from well known companies and I couldn't help but feel jealous and ask why that couldn't be me. The only advice I have in regards to that is to keep applying and that it only takes 1 company. If you applied to 1000 places and get 1 offer that you enjoy, then does it really matter what the results were for the 999 other applications? And also, take /r/cscareerquestions in moderation; my mental state was definitely not helped from religiously browsing the subreddit.