Open In App

Oracle Interview Experience for Software Engineer

Last Updated : 16 Aug, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

I would like to share my comprehensive interview experience at Oracle for a software engineering position, which comprised three technical rounds focused on Data Structures and Algorithms (DSA) and one HR round. As a machine learning specialist, they were interested in my resume’s machine learning components. The interviewers were friendly, and my final selection was the result of my journey.

Firstly, there was an online assessment. It had a DSA question as:
Given a string s, remove duplicate letters so that every letter appears once and only once. You must make sure your result is the largest in lexicographical order among all possible results.
A similar question can be found here https://leetcode.com/problems/remove-duplicate-letters/

Other questions were mainly aptitude questions, flowchart-based questions, and some geometry and English grammar based questions. A total of 32 students were shortlisted including me.

Round 1: Technical Interview (30 mins)

The first technical round commenced with a warm introduction from the interviewer. They showed genuine interest in my background and experiences, which set a positive tone for the interview. The interviewer asked me a series of questions, including:

  1. What is an out-of-bounds error? I explained that an out-of-bounds error occurs when a program tries to access a memory location beyond the bounds of an allocated data structure, such as an array. This can lead to unexpected behavior or crashes.
  2. What is a segmentation fault error? I described that a segmentation fault error occurs when a program tries to access a memory location it doesn’t have permission to access. This often results from memory-related issues like accessing null pointers or accessing memory outside the program’s allocated space.
  3. What is recursion and why is a base case required? I defined recursion as a programming technique where a function calls itself to solve a problem. I explained that a base case is required to prevent infinite recursion and ensure that the recursive function eventually reaches a stopping condition.
  4. Questions based on pointer arithmetic on arrays and strings. The questions were of easy to moderate difficulty.
  5. What is an unordered map? What is the time complexity for accessing an element in it? Can you store arrays as key-value pairs in a map? I explained the basic concepts of maps and explained we can store the array pointer as a value in a map.
  6. What is TensorFlow and why is it used? I described TensorFlow as an open-source machine learning library developed by Google. It’s used to build and train various machine learning models, including neural networks, for tasks like image and speech recognition, natural language processing, and more.
  7. Write Python code to reverse a string, reversing only the words, not the entire string. I provided a Python code snippet that split the string into words, reversed each word, and then joined the reversed words back together to form the final reversed string.
  8. Why should pass-by reference be used when passing arguments like vectors? I explained that passing arguments by reference (using pointers or references) is more efficient when dealing with large data structures like vectors. It avoids creating unnecessary copies of data, leading to improved performance.
  9. Write a program to print all pairs of numbers whose sum is present in a set. I provided a C++ program that iterated through the set’s elements and checked if the sum existed in the set.

I found the round to be quite simple and relatively easy to crack. The main objective for the interviewer was to test whether the candidate was strong in fundamental concepts.

Round 2: Technical Interview (40 mins)

The second technical round also began with a friendly introduction. The interviewer acknowledged my machine learning specialization and inquired about my projects. The questions in this round included:

  1. Introduce yourself. I shared my background, education, work experiences, and my passion for machine learning.
  2. Where do you live? I shared my current location and briefly mentioned my experiences living there.
  3. What is memory swapping in Unix? I explained that memory swapping is a process where parts of a program’s memory are moved to and from the disk when the physical RAM is running low. This allows the system to free up space for other processes.
  4. Explain the memory layout of C programs. I didn’t know the concept. The interviewer was kind and explained me basic layout.
  5. Describe how a program works in Unix. I outlined the steps of the program execution process in Unix, including how processes are created, how they execute, and how they communicate with the kernel and other processes.
  6. Describe the phases of a compiler. I detailed the compilation process, including lexical analysis, parsing, semantic analysis, code generation, and optimization.
  7. Questions related to Computer Architecture. What is a program counter, and how a computer executes a program? What are microinstructions?
  8. For reversing a string, which is better: a single-linked list or a double-linked list? Provide the structure and function to reverse it. I explained that a single linked list is sufficient for reversing a string. I provided the structure of a single linked list node and the function to reverse the list.
  9. Describe one of the projects I mentioned in my resume. I describe the basic idea, the technologies used, and a high-level overview of the code. At last, I also explained how it can have an impact on the industry.
  10. Write an ML code to predict the square of a number. I provided a simple example of using linear regression to predict the square of a number based on its value.

This round was the most challenging for me as it focused more on core concepts of operating systems, compiler design, and computer architecture.

Round 3: Technical Interview (40 mins)

In the third technical round, the interviewer again engaged me in a conversation about my background and experiences. The questions included:

  1. Introduce yourself. Similar to previous rounds, I provided an overview of my educational and professional background.
  2. Pointer referencing and dereferencing questions with double pointers. The interviewer asked me about pointer referencing and dereferencing, and how they apply to double pointers in C or C++. I explained the concept and provided examples. He then gave a medium-tough problem on pointers.
  3. Pointer Referencing and Dereferencing with Double Pointers: The interviewer asked questions related to pointer referencing and dereferencing, particularly focusing on double pointers. I explained how single and double pointers work and demonstrated how to use them to modify values and structures indirectly. I also discussed memory allocation and deallocation using double pointers.
  4. Type Casting Problems: I was presented with scenarios involving typecasting in programming. The interviewer wanted to assess how well I understood data types and their interactions during typecasting. I explained the importance of being cautious with type conversions to avoid data loss or unexpected behavior.
  5. Reverse a String Using Recursion, Loop, Stack, and Two Pointer: The interviewer challenged me to reverse a string using different methods. I explained each approach:
    • Recursion: I provided a recursive function that reverses a string by swapping characters from the beginning and end of the string.
    • Loop: I presented a loop-based solution that iteratively reverses the string by swapping characters in a symmetric manner.
    • Stack: I described how a stack data structure can be used to reverse the order of characters in the string, by pushing characters onto the stack and then popping them off in reverse order.
    • Two Pointer: I explained how to use two pointers, one pointing to the beginning and the other to the end of the string, to swap characters until they meet in the middle, effectively reversing the string.
  6. Determine Longer Array with Pointers: The interviewer posed a problem where I had to determine which of two integer arrays was longer, using only pointers to the arrays. I described how I could iterate through both arrays using pointer arithmetic and compare their addresses to find the array with a greater length.
  7. Print “Hello” Using Object-Oriented Programming and Loops: The interviewer asked me to demonstrate object-oriented programming (OOP) concepts by printing “Hello” ten times using a loop. I created a class containing a method to print “Hello” and instantiated an object of that class to call the method in a loop.
  8. Concepts on Classes, Inheritance, and Access Specifiers: I discussed my understanding of object-oriented programming concepts, explaining the concepts of classes, objects, inheritance, and access specifiers. I highlighted the importance of encapsulation, polymorphism, and code reusability achieved through these concepts.
  9. Virtual Memory and Demand Paging: The interviewer delved into operating system concepts, querying me about virtual memory and demand paging. I expounded on virtual memory as a technique that allows programs to execute as if they have more memory than is physically available. I described demand paging as a mechanism where pages of memory are loaded into RAM only when required, minimizing initial memory consumption.
  10. Friend Function and Demonstration: The interviewer introduced the concept of a friend function and asked for my explanation of its purpose and use cases. I described a friend function as a function granted access to private and protected members of a class. I then went on to provide a simple code example illustrating the scenario where a friend function is used to access private members of a class, emphasizing the controlled breach of encapsulation for specific requirements.

This round delved deeper into technical concepts and problem-solving skills. The questions aimed to gauge my understanding of programming principles, memory manipulation, and object-oriented concepts. The interviewers were encouraging and allowed me to showcase my knowledge in a supportive environment.

Overall, my interview experience at Oracle was enriching and collaborative. The interviewers were not only well-versed in technical concepts but also showed genuine interest in my experiences and ideas. The questions in each round assessed different aspects of my technical knowledge and problem-solving abilities, making the experience well-rounded. The friendly and encouraging demeanor of the interviewers contributed to a positive atmosphere throughout the process, and I was thrilled to receive the news of my selection as a result.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads