Oracle Interview Experience (2020 Summer Internship on -Campus)
I was selected as a software engineering intern at Oracle India from BITS-PILANI ,Goa (through on-campus recruitment process).I had appeared for many technical interviews before in companies like D.E. Shaw and Flipkart.But I finally got selected for Oracle India, Server Technology group, Bangalore.
First Round : Online Round
The online test was same for both full time hires and summer interns in our college . It had a lot of logical reasoning, math problems and puzzles.The coding section had MCQs on java implementation of tries – how to search in a trie , insertion in a trie and deletion in a trie and what are the ways you can impement all these functions (multiple correct answers). It had questions on mirroring of height balanced BSTs when they are represented as arrays and we had to comment on their inorder traversal. There were problems on Operating Systems(which I had no idea about) , DBMS(simple 2PL protocols) and OOP(some basic polymorphism based output problems). The test was of 2 hours.
Second Round : Technical Interview
The interviewer started off slow by asking my favourite topic which was DSA. He started with how would I implement a data structure that can act as both queue and stack. I said a deque or a bidirectional linked list could be used with a head and a tail. He wanted a solution more basic than this and he didn’t care about the complexity, to which I suggested array shifting. He asked me to find the height of a tree inductively. I proved it to log(n) for height balanced BST, and worst case O(n) for a skew BST using induction. height(n)=max(height(n->left), height(n->right)) + 1 .
He then asked me when would I prefer C and when would I prefer C++. I said that since we can’t implement OOP principles in C so we would go for C++ to represent natural entities . And we would prefer C when we have to write a simple descriptive procedure. I told him that C is more closer to hardware to which he told me that both of them are same in terms of abstractness and closeness to hardware.Finally I think he was more or less satisfied by the arguments.
The third problem was on DBMS on locking protocols and which protocol has which advantage and which would I prefer. I started off with defining locks (S and X lock) and stated problems like dirty read, deadlock and cascading roll-backs. I started with simple 2 phase locking protocols and then went on rigorous 2-PL, strict 2-PL and conservative 2-PL and how each of them went on to correct problems like deadlock , serializability and recoverability. And the problem of cascading roll-backs which can be solved by graph based protocols.Even he asked the negative points about them like extra work of unlocking which has to be done. He also asked about indexing for which I suggested B trees or hashmaps.
He later asked me about what should be preferred as a key value to which I luckily had an answer as I was asked the same question in in D.E. Shaw second round .I said that since we use range based searching most of the time so we should use a B+ tree , as these k-ary trees support O(height) searching. He later asked a few OOP concepts like what all you know about encapsulation, abstraction and run-time polymorphism.
Third Round : Technical Round 2
She asked me about my projects.First about my bootstrap project and whether I want to do an M.S. or not. Then she asked me to design a text editor which supports insertion, deletion, undo and redo. We do it with 2 stacks storing undo and redo respectively. The value in the stack should hold the value and the iterator to the last undo or redo. We have to think through all corner cases like insertion in middle of text ,deletion at random locations , then undo ,and lets say then redo.
Then she asked me a puzzle: burning a thread needs 60 minutes and how would you use the infinite supply of these threads to check for 45 minutes , if the thread burns non-uniformly across its length and we are not allowed to fold or cut the thread at any position. We burn one thread from both ends and another thread from one end. First thread burns in 30 minutes and at this very moment we burn the other end of the already burning thread and it takes 15 minutes more.
She at last asked me about my Deep learning Research project which I completely explained it to her.
Fourth Round : HR round
It was as late as 9:00pm (12+ hours of grinding) as the full time hirings was also done concurrently. We were all asked to sit together in a row in a lecture theatre and asked if we had any doubts on the position offered. They later shortlisted students on GPA and chose only 8 out of 14 who attended HR round.
Overall I think it was Team Demux which transformed me into someone who can fight all odds like, gender preference, extreme pressure of failure and what not.They nurtured us throughout our summer holidays and every topic taught was covered inside out.The project which we completed as part of Demux was a major positive point in my resume.
So I would suggest anyone who wants to get an IT job to go for DEMUX as early as you can and get the best out of it.