My Oracle Internship

Another blog with unsolicited advice.

Posted by Parth Shah on November 1, 2023 [5 minutes]

I have been in school since 2017 and during this time, I have completed a few internships. The latest was with Oracle. During the summer of 2023, I moved to Belmont to be a part of Oracle's internship program. I was a Linux performance engineer and experienced my first in-person internship. The short version - I had a blast. I met a bunch of cool people, got to work with industry titans, and got a chance to explore Silicon Valley! Since it is internship hunt season, I have decided to record my interview experience with some unsolicited advice. Consume at your peril.

"Unlike happiness, system performance is measurable." -A very wise engineer

Since I meticulously documented my entire internship search, I have some statistics to report. I applied to 137 unique job listings. Many with referrals, many without. I started applying as early as August 15th. I heard back from four companies, interviewed with three, and finally received two offers. I applied to Oracle on the 27th of October and received my final offer only by the 7th of March. The internship itself was for 12 weeks and I started on the 15th of May. Please note that these statistics may not be representative of when you are reading this. As you may be aware, the entire tech industry is in a hiring slump post the pandemic. There have been thousands of layoffs at big tech corporations and most of them are in conditional hiring freezes. This has impacted internship programs too as they are uncertain about full-time conversions. But enough about the current situation, I could go on forever about it.

Oracle had a general "Summer Internship - 2023" job posting that I applied to with my resume and other relevant information. I was contacted by a recruiter in the last week of February and she asked for an introductory call to determine what teams would be a good fit for me. After this semi-formal call, she decided I would be a good fit for the corporate architecture line of business and specifically, the performance engineering team. This was (speculatively) because of my former research work at the Indian Institute of Science (IISc) in high-performance computing. After confirming with the hiring manager if the team was looking for a summer intern, she worked with me to schedule my two interviews. Shoutout to the entire recruiting team at Oracle, they have been extremely helpful and have worked hard to ensure a good team fit.

I prepare for my interviews in a fairly methodical way. One of the things I do is go over my resume with a fine-toothed comb. I make sure to recall all my past experiences and projects but most importantly, the outcomes of each. I then go over relevant past coursework. I extensively use LMNs as a launch pad, diving into concepts I haven't touched upon recently. I also practice some live coding using easier LeetCode problems. Simulate the worst conditions to ensure there are no surprises on the day of your interview. Yes, I do practice writing compilable C++ code in a Google Doc, however crazy that sounds. Another extremely important resource to refer to is the company website. I ensure I am aware of the latest developments, the upper management, the core values, and the mission. Lastly, I go over some reverse interview questions like these.

Round 1

My first round was with an engineer on the team from Australia. After pleasantries were exchanged, we jumped right in. He made me aware of the way he liked to interview potential employees. We were going to start at 40,000 ft, nosedive, and he would hold that line of questioning until we hit a brick wall and I was unable to answer further. I enjoyed this format as it allowed us to get deep into the subject matter. We started with the basics of memory (virtual/physical), paging, and TLBs, and proceeded to discuss NUMA, distributed memory systems, and cache latencies. We covered instruction sets, processor architectures, parallel programming with OpenMP/MPI, and progress in critical sections. Lastly, we spoke about performance using tools like perf, static code analysis, and Profile Guided Optimization (PGO), etc. This was way out of my depth but I enjoyed building upon ideas presented to me. The interview lasted for an hour. Overall, I was satisfied with my performance in this interview and awaited further instructions.

Round 2

After a couple of days, my recruiter reached out to me to schedule the next round which was with two other engineers on the team. It was also going to be an hour-long interview but divided into two thirty-minute chunks. I like to get to know my interviewer(s) before the actual interview by reading up on any publicly available information. In this case, I found both their doctoral thesis. They were fascinating reads, to say the least! The first chunk was more behavioral than technical and vice-versa for the second chunk. Firstly, my team and company fit was evaluated by the interviewer. Additionally, I was asked about past projects and work experience. Secondly, I was presented with an easy LeetCode problem and was asked to live code it. A few variations of the same were presented to evaluate my logical thinking. For the curious, my live-coding question was devising an algorithm to de-duplicate a continuous stream of sorted integers as efficiently as possible. As practiced, I went from the least to the most efficient solution while thinking out particularly loud. I found this round relatively easy and eagerly awaited further communication from my recruiter.

And that was it! I received a verbal offer within the week. The formal offer followed shortly after. The entire interviewing experience was smooth thanks to my future team and the recruiting team. I enjoyed the process and was confident that this was the right fit for my skills.

Here is the most pretentious, unasked-for part of this blog; my two cents.

  • Referrals are most effective for small companies as they lack the resources big companies can expend for talent acquisition. I would recommend following startups on Linkedin and connecting with current employees. Follow their work, understand it, and engage with the people who are contributing to the growth of these companies.

  • Learn to focus on the things that you can control. You cannot control the state of the job market. You cannot control the responsiveness of recruiters. You cannot control the hiring process a company has in place. However, you can control how prepared you are for OAs and interviews. You can control your outlook and attitude. You can control your routine and ensure you are staying healthy.

  • Make the most of your time at the internship! It is a great time to evaluate the company culture, meet new people, and have unique experiences. Determine a few goals for yourself. Some could be professional but most should be personal.

  • I have said this in the past and will say it again; do not give up on your workout routine, hobbies, or idle time during this internship hunt. Grinding 24/7 will do you no good. Not only will it reduce your productivity, but it will also adversely impact your mental health. Take care of yourself.

Line Graph

You can read my other experiences here and here. They link to a few useful resources. Feel free to connect with me on Linkedin here and ask me any questions you may have! May the force always be with you.