Thank you for considering a career with Oracle! We have reimagined what the cloud can do for businesses, and are looking for creators who want to influence the future.
You are the builder here and, as such, we want to help you show off the best of your abilities throughout the technical interview process. Know that we’ll be testing your coding skills and problem-solving abilities, as well as considering how well you’ll fit into our company culture. We want to see how you think, how you solve a problem, and how you embody our values.
How to prepare
Whether you’re a new coder or an experienced engineer, it’s always a good idea to do some prep work before a technical interview. We don’t expect you to spend days preparing, so we rounded up our best advice from Oracle engineers and made a list of (optional) resources that will help you get up to speed if you need a refresher.
Step 1: Refresh on core computer science concepts
Interviewers will present problems and coding challenges from an array of topics, so it’s best to re-familiarize yourself with coding principles such as:
- Data structures: arrays, strings, linked lists, trees & binary search trees, hash maps, queues & stacks, graphs
- Algorithms: Sorting, Recursion, Searching, Graph and Tree algorithms, Dynamic Programming
- Time and Space efficiency (big-O analysis)
Read up
Your own bookshelf, local library, or eReader likely has a number of books that can refresh your knowledge with a quick scan. Cracking the Coding Interview is certainly one of the most detailed guides available, but here are a few other recommendations from our engineers:
- Introduction to Algorithms by Charles E. Leiserson is the classic, but could be augmented by any of the following: The Algorithm Design Manual by Steven S. Skiena, Algorithms (4th ed.) by Robert Sedgewick and Kevin Wayne, Algorithms by Sanjoy Dasgupta, Christos Papadimitriou and Umesh Vazirani or Jeff Erickson’s book-length algorithms notes.
- Programming Pearls by Jon Bentley provides a great overview—and for those who really want to deep, there’s always The Art of Computer Programming by Donald Knuth!
- Open data structures textbook is also a solid resource.
Tune in
You may also wish to watch lectures on coding concepts and distributed systems topics. Our engineers recommend:
- REST API best practices (various sources on the web).
- Paxos algorithm
- CAP theorem and NOSQL
- Martin Fowler’s talk on Intro to NoSQL
- MIT OCW Introduction to Algorithms (the video lectures are excellent)
Step 2: Practice problems
Throughout the process, you’ll be presented with a problem to solve and asked to present a solution using code and, time permitting, create a test case. You can solve coding problems in whichever language you feel most comfortable, unless otherwise noted. Many of the books above include exercises, as well as these sites: https://hackerrank.com, http://www.spoj.com, https://uva.onlinejudge.org.
Here are a couple examples from our engineers:
- Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.
- Given values of two values n1 and n2 in a Binary Search Tree, find the Lowest Common Ancestor (LCA). You may assume that both the values exist in the tree.
When you’re practicing, try writing out solutions long-hand on paper. This better mimics the conditions of an interview in most cases, rather than using an IDE with code-completion. Things you struggle to remember are good things to review. Also, consider how you would communicate your work as you go; remember, we want to understand how you solve problems and not just see the code.
Step 3: Ace the interview
The big day has come! Now here are some additional tips to ace the live interview process.
- Ask clarifying questions about requirements. In many cases, problem descriptions are intentionally left vague to force you to ask clarifying questions. If the question isn’t 100% clear to you, please speak up! Sometimes there are ways to dramatically simplify a problem if you can impose a restriction on input, for example.
- Talk through your plan before jumping into code. We’re trying to figure out how you think about solving problems, not just how you write code. We’re looking to see how you tackle real-world problems. Communicate; think out loud. Make it collaborative. Interviewers will often let you know if you’re on the right track, or guide you along the problem, if you take them along for the journey.
- Refrain from assuming anything. If you get stuck, ask a question. It’s OK to speak up during the coding process if you’re not sure of the next step in the process.
- Describe the algorithm you are about to implement. Once you’ve written out something, take a moment to come up with a simple test case and walk through it, if you have the time. Even if you don’t have time to fully walk through a test run, take a minute to talk about how you would test your code.
- Don’t worry if you don’t complete the entire problem. A lot of coding interview questions are designed to be open-ended, and are (almost) impossible to complete on time. If you manage to describe the algorithm correctly and in enough detail, you shouldn’t worry too much about finishing the actual coding. Again, it comes down to communication!
With virtual interviews becoming the norm, here are bonus tips on how to ace the video interview.
Finally, remember that these resources are optional and to be used as you wish. However, if this list feels intimidating in scope, or something you’re not reasonably fresh on, feel free to request more time to brush up before continuing your interview process.
Eager for more? Check out these other resources on how to answer interview questions, avoid common interview mistakes, and read these top tips from our recruiter.