Logo

Oliver Gao

Finding a Software Engineering Internship in My Junior Year

May 8, 2023 My experience applying to positions and preparing for interviews.

Artsy illustration of code with a pink and purple background

After spending a significant number of hours applying to and preparing for software engineering internship positions, I wanted to share my experience with those who might be interested and find this helpful. For some context, everything written below is from the perspective of me as a junior studying Computer Science at the University of Michigan in the fall of 2022.

Note: This post was inspired by this post I came across on LinkedIn.

General

📆 When did you start applying?

Early August. I continued applying through September, but I had the most (and only) success with my earliest applications. This point cannot be understated. Apply Early!

📄 What did your resume look like?

I had one software engineering internship at a small tech company, a web developer role on campus, an undergraduate research experience, and some personal & class projects.

🔎 Where did you find internship applications?

I found all the applications on this Pitt CSC repository and applied exclusively on company websites.

🔢 How many positions did you apply to?

I submitted a total of 56 applications → got 12 online assessments → 4 interviews (later withdrew from 1) → 2 offers. I received around 24 resume rejections and was ghosted by the rest.

🤝 How did you prepare for your interviews?

I prepared for my technical interviews by loosely following the Tech Interview Handbook. I first reviewed every topic, taking some conceptual notes and doing 2-3 practice problems for each. Then, I started working through the Neetcode 150 and Blind 75. I did about 60 questions total, focusing on the medium difficulty ones.

My strategy for practicing included attempting the problem by myself for 15-20 minutes and then watching a Neetcode video for ones I were stuck on (and the ones I solved just to confirm). I also attempted to talk out loud when practicing because that’s what you will be doing during interviews. For every question I did, I wrote up some notes in Notion about the general solution and my thought process, as well as any patterns I started to notice or mistakes I made.

I also did two practice interviews on Pramp, which was good to get some live practice and to get the “first-time mistakes” out of the system before my first real interviews.

🗣️ Behavioral interview advice

Prepare 5-8 stories that you can tell for any behavioral question. You should prepare stories about successes, failures, teamwork, and conflicts. I ended up spending a fair amount of time on this because talking about myself and my own experiences does not come naturally to me. I found that practicing while recording myself was really helpful.

Company Specific

Uber

In early August, I applied without a referral on the Uber careers site. About two weeks later, a recruiter reached out to me to schedule my first interview.After completing the first interview, the recruiter reached out to me two days later to schedule my final interview, which happened three weeks later. The interviews consisted of one to two leetcode-style questions each with no behavioral questions. The questions I got in both interviews were roughly leetcode medium difficulty. After my final interview, I heard back after 10 days with an offer that I ultimately accepted.

Amazon

There’s a lot of content about the Amazon interview online already and I agree with most of it. The technical OA was not easy, probably 2 leetcode medium questions that I successfully brute forced. Then, there was a “work-style” assessment that consisted of sliders where you had to align your answer with the Amazon Leadership Principles. The 45 minute final interview consisted of 2 classic behavioral questions and a leetcode easy/medium question involving strings and hashmaps. I fumbled a little bit during second behavioral question, but I cruised through the coding question and answered all 3 follow up questions. I heard back 7 days after my final interview with an offer.

Palantir

The Palantir interview process is a long and grueling one. It started with an online assessment through hackerrank that wasn't easy. However, I was able to study for the exact topic because of the problem title. After successfully completing the OA, I was invited to complete a Karat Interview, which is conducted by a third-party company. I was asked a couple conceptual, debugging, and big O questions, and then two leetcode easy-medium questions that involved hashmaps. After this interview, I didn’t get a response within a week, so I emailed my recruiter who moved me on to the next step almost immediately. The virtual onsite consisted of one system design question and one “learning” interview. I think I did relatively well on the system design, but no idea how I did during the learning interview. The last stage was the hiring manager interview. I answered the behavioral questions really well (I thought) but the technical portion did not go well at all. I think I wasn’t expecting a coding question which threw me off. I was asked to implement a hashmap, and I was just stumbling through collision resolution in particular. In the end, I wasn’t able to finish the implementation. About 3 days later, I received the rejection email. My recruiter and everyone I interacted with were quite nice and pleasant. The recruiter even gave me some feedback on a call after the rejection email.