I interviewed for a Senior Software Engineer position at Oracle in Colorado in March . I applied online through their job portal. The interview process consisted of a technical phone screen followed by a virtual onsite.
The phone screen was a typical design question. I solved it completely with 20 minutes remaining. Two weeks later, I was invited for a virtual onsite.
The onsite consisted of five rounds, each lasting one hour. Each round included 20 minutes of behavioral questions and the rest was dedicated to a programming question.
The first round involved a trie-based design question. I couldn't write the complete code but explained the algorithm and approach well. I thought the interviewer agreed with my approach.
The second round was a string manipulation question. I solved almost all the scenarios but could have done it faster.
The third round involved a question I don't remember. I couldn't complete it.
The fourth round was a binary indexed tree question. I completed the brute force solution but struggled to come up with the optimal solution.
The fifth round was a typical linked list question. I found it lengthy to code as I had to create the boilerplate code for the linked list. However, this was my best round, and I completed all the scenarios.
After the onsite, I had mixed feelings about the result. I received an email three weeks later stating that I was no longer being considered for the position.
In retrospect, I think two things went wrong for me. First, I focused on preparing for recent Oracle-tagged questions based on the technical phone screen. However, none of the questions from that list were asked during the onsite. I should have practiced questions from a wider range of categories. Second, after a lot of behavioral questions, I felt like I wasn't able to switch gears completely to focus on the programming questions. I need to work on keeping my focus on the programming section.
Overall, I was disappointed with the outcome. I felt like I had a good chance, but my performance wasn't up to par. However, it was my first big tech interview in over a decade, so I'll try again later.
I learned a few key takeaways from this experience. First, LeetCode is the best resource for interview preparation. The interview prep guide sent by the recruiter included some links, but they seemed optional. LeetCode has the best collection of questions. In some of the questions asked during my interview, even the input example values were unchanged! Second, don't stress too much. It's hard to devote time to LeetCode when you have a full-time job and a family. Find some time to relax as well. LeetCode questions are not what you typically accomplish every day, solving them takes a different level of expertise and requires time and patience. Third, practice timed learning. Pick a category, learn the theory, and then practice. Repeat this process for each category. If you have time limitations, try to broaden your knowledge by solving different types of problems instead of focusing on one category. Finally, build your problem-solving muscle. Learn how to break down complex problems into subproblems and explore different approaches to solve them. This is crucial in addition to your ability to write code with an IDE.