Summary
I interviewed at BlueOptima for a Graduate Software Engineer + Internship position in August 2021 and successfully received an offer. The interview process involved an online test, a technical interview covering OOPS, SQL, and DSA, a take-home work sample, and a final discussion round.
Full Experience
I recently interviewed for the Graduate Software Engineer + Internship position at BlueOptima in Bangalore, India, in August 2021. As a new graduate from a Tier 3 college, this was a significant opportunity. My interview journey consisted of four distinct rounds.
Round 1: Online Test
This round was conducted on HackerEarth and comprised 20 technical aptitude questions, primarily focused on Java-related coding and theory, along with two challenging coding problems.
Round 2: Technical Interview
Out of 48 students, I was among those who qualified for this quick 30-minute interview. The interviewer delved into several core computer science concepts. We discussed Object-Oriented Programming (OOPS) principles like Abstraction, Inheritance, Polymorphism, and Encapsulation. Specifically, I was asked to differentiate between Inheritance and Polymorphism, explain types of polymorphism, and compare overloading versus overriding, including functions on both. A question on the ternary operator also came up. In SQL, topics covered included Indexing, DDL vs DML, Normalization vs Denormalization, Sharding, and general SQL queries. A practical scenario was posed: 'What to do when a database can handle only 100 votes but 1000 are coming from a bank?' I also had to explain my past internship experience. For Data Structures and Algorithms (DSA), the discussion revolved around Stacks vs. Queues, explaining Binary Search and its time complexity, Merge Sort (nlogn, divide and conquer), and Recursion, including the importance of base cases.
Round 3: Work Sample
This round involved a production-level problem as a work sample. I was given five days to solve, document, and submit my code. This was a collaborative effort, as teams of 2-3 people were formed for this task.
Round 4: Work Sample Discussion
Our team was called for this final round to discuss our work sample. I had to explain our approach to the problem statement and discuss potential scopes for improvement. Questions arose about our choice of JavaScript, how the project could handle multiple inputs, and a comparison between Java and JS. We also touched upon any online tools that perform similar jobs. The interviewer asked about NoSQL, what a database offers (ACID properties), why it's a web application, and what constitutes a responsive web application that works on mobile. My individual contributions were assessed, and I had the opportunity to ask questions, including if a role change was possible. More questions were posed regarding file storage. Code-related questions came up about asynchronous JavaScript, promises, setTimeout, how to fix specific issues, and the use of global arrays. Finally, the discussion covered optimization, performance, handling huge data, and extracting the right data.
Ultimately, I received an offer from BlueOptima!
Interview Questions (21)
Explain the differences between Inheritance and Polymorphism in Object-Oriented Programming.
Describe the different types of polymorphism (e.g., compile-time, runtime) and provide examples.
Explain the concepts of method overloading and method overriding, highlighting their differences and use cases.
Explain the ternary operator and provide an example of its use.
Explain the concept of database indexing, its purpose, and how it improves query performance.
Differentiate between Data Definition Language (DDL) and Data Manipulation Language (DML) in SQL, providing examples of commands for each.
Explain the concepts of database normalization and denormalization, their advantages, disadvantages, and when to apply each.
Describe what database sharding is, why it's used, and its implications for distributed databases.
Scenario: A database can only handle 100 votes per second, but 1000 votes are coming from a bank. Propose a solution to handle this high volume of incoming votes.
Compare and contrast Stacks and Queues data structures, explaining their operations (LIFO/FIFO) and common use cases.
Explain the Binary Search algorithm, its prerequisites, and analyze its time complexity.
Describe the Merge Sort algorithm, its divide and conquer strategy, and its time complexity (O(n log n)).
Explain the concept of recursion, providing examples and emphasizing the importance of base cases.
Discuss the differences between JavaScript and Java, highlighting their use cases, strengths, and weaknesses.
Discuss strategies and considerations for designing a project to efficiently handle multiple inputs concurrently or sequentially.
Explain what NoSQL databases are, their characteristics, and when they are preferred over relational databases.
Describe the ACID properties (Atomicity, Consistency, Isolation, Durability) in the context of database transactions.
Explain what a responsive web application is and the techniques used to make a web app work effectively on mobile devices.
Explain asynchronous JavaScript, Promises, and the setTimeout function. Discuss common issues and how to fix them, particularly regarding timing and global array usage.