Summary
I recently completed a challenging four-round interview process for an IC3 software engineering role at OCI in the USA, which thoroughly assessed my technical coding, system design, and behavioral skills.
Full Experience
I recently went through an intensive interview process for an IC3 role at OCI in the USA. The entire experience was structured across four distinct rounds, each designed to evaluate a different aspect of my software engineering capabilities. It felt quite comprehensive, covering everything from core algorithms to complex system architecture.
Round 1: Technical Coding (HackerRank)
This round was a HackerRank coding challenge focused on Greedy Algorithms and Heap data structures. The specific problem involved minimizing the total cost of an array of prices using a given number of tokens. It was a good test of my algorithmic problem-solving and optimization skills.
Round 2: Behavioral Interview
The second round was purely behavioral. It consisted of scenario-based questions, similar to Amazon's leadership principles interviews. The focus was on my past work experience, projects I've handled, and the decision-making processes I employ. I was asked to discuss situations where I demonstrated leadership principles.
Round 3: System Design
This round was a deep dive into system design. The core problem was to design a Distributed Rate Limiter. The discussion revolved around ensuring scalability, understanding distributed systems concepts, evaluating various trade-offs, and architectural thinking. We covered topics like load balancing, data consistency, and performance optimization.
Round 4: Advanced Coding
The final round was an advanced coding challenge. I was tasked with implementing an LFU (Least Frequently Used) Cache. This problem thoroughly tested my knowledge of data structures, cache replacement algorithms, and my ability to achieve optimal time and space complexity, particularly in balancing frequency tracking with efficient operations.
Key Observations
- Every single round, not just the dedicated behavioral one, included questions related to leadership principles, mirroring Amazon's interview style.
- The technical depth was significant, ranging from intricate algorithmic optimization to high-level system architecture, effectively testing both my coding prowess and my system-level thinking.
- The difficulty felt progressive, with each round building upon different technical skills: algorithms, then behavior, then systems, and finally advanced data structures.
Overall, the process was very well-structured and comprehensive, effectively evaluating both my technical expertise and my potential for leadership within a software engineering context. Each round clearly had a specific purpose in assessing different facets of my competency.
Interview Questions (3)
Given an array of prices and M tokens, use all tokens to reduce costs and return the minimum total cost.
Design a Distributed Rate Limiter. The discussion focused on scalability, distributed systems concepts, trade-offs, and architectural thinking, covering areas such as load balancing, data consistency, and performance optimization.
Implement LFU (Least Frequently Used) Cache. This problem required demonstrating strong understanding of data structures, cache replacement algorithms, and aiming for optimal time and space complexity while balancing frequency tracking with efficient operations.
Preparation Tips
To prepare for interviews like these, I focused on several key areas:
- Extensively practicing greedy algorithms and operations involving heaps.
- Thoroughly reviewing various system design patterns, especially for distributed systems.
- Implementing classic cache replacement algorithms from scratch, such as LRU and LFU, to solidify my understanding.
- Preparing my behavioral stories using the STAR format to effectively address leadership principle questions.
- Practicing articulating my technical decisions and explaining trade-offs clearly and concisely.
Summary
I interviewed for a Senior Member of Technical Staff position at OCI India, which included eliminator and multiple loop rounds. Despite clearing some technical challenges, I was ultimately rejected.
Full Experience
Hey community, I recently gave interview for Senior MTS position with OCI India. Got negative feedback, but still here are the questions that were asked.
Eliminator Round:- Check if words are anagrams. EASY. LRU Cache. MEDIUM Couple of behavioural questions. Some questions on concurrency.
Got call 2 days later that they will take my loop interview. My interviews were scheduled for 2 days. Daily 2 interview
Loop Interview 1: Group Anagrams from a list of strings. MEDIUM Maximum Subarray Print odd even using two threads concurrency problem. Some behavioural questions
Loop Interview 2: This was taken by someone from US. Rain water trapping problem. HARD Generate valid parenthesis (backtracking problem). MEDIUM Some behavioural questions. This was where I froze completely and could not communicate properly at all.
Loop Interview 3: This was with Hiring manager from India. He asked lots of technical questions from my resume. He also gave lots of system design situational based questions. I was asked to design CONFLUENCE.
Loop Interview 4: This was my bar tender/bar raiser round. Plenty of behavioural questions were asked.
Result: REJECTED.
I hope it helps the community in their prep. I applied through their web page. Good luck guys.
Thank you
Interview Questions (8)
Given two words, determine if they are anagrams of each other.
Design and implement an LRU (Least Recently Used) cache.
Given an array of strings, group anagrams together.
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
Write a program that prints odd and even numbers in sequence using two separate threads.
Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it can trap after raining.
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
Design a system similar to Atlassian Confluence.
Summary
I successfully interviewed for the SMTS role at OCI in Bengaluru during May 2024 and received an offer. The interview process consisted of a phone screen and five onsite rounds, covering data structures and algorithms, low-level design, high-level design, and various behavioral questions.
Full Experience
Phone Screen
In this round, the interviewer presented me with a couple of medium-level LeetCode questions. I was able to provide optimal and workable code for both problems:
- A Dynamic Programming problem similar to Wildcard Matching.
- A question on finding the Least Common Ancestor.
I successfully cleared this round and was invited for four onsite rounds.
LLD with SMTS
This round focused on Low-Level Design for a management system. We discussed various aspects, including database schema choices, API endpoints, and class diagrams. I also encountered behavioral questions, particularly how I would handle conflicts within a team. Additionally, there was a deep dive into one of my past projects.
HM Round
The hiring manager round involved a deep dive into two of my past projects, where I was asked how I could have improved them. This round also included several behavioral questions.
Problem Solving Round with LMTS
This round featured a couple of hard-level LeetCode problems. I provided optimal approaches and wrote workable code for both:
There were also some behavioral questions in this round.
BarRaiser with LMTS
This round was entirely focused on behavioral questions, with a particular emphasis on my background and interests.
Overall, all my initial rounds went well. I appreciated that every interviewer was polite and had their camera on, which isn't always common in my experience.
About seven days later, the recruiter called to inform me about an additional round, which was scheduled within two days.
Round with CMTS
In this final round, I was asked to solve a couple of coding problems:
- Removing even-valued nodes from a given linked list.
- A string compressor problem.
Following the coding questions, I had a High-Level Design discussion about designing a TinyURL service with additional features. We extensively discussed various components and their alternatives.
The debrief happened three days later, and I was fortunate to receive an offer!
Interview Questions (9)
I was asked a Dynamic Programming problem related to implementing wildcard pattern matching with '?' and '*' characters.
I was given a problem to find the least common ancestor of two nodes in a binary tree.
I had to design a management system, covering aspects like database schema choice, API endpoints, and class diagrams.
I was asked behavioral questions, specifically how I handle conflicts within a team.
I was asked to write code to remove all nodes that have an even value from a given singly linked list.
I was given a problem to implement a string compressor, which typically involves replacing repeating characters with the character followed by its count (e.g., 'aaabbc' -> 'a3b2c').
I had an HLD round focused on designing a TinyURL service with additional features, discussing every aspect and its alternatives.