IBM Recruitment Process for Software Developer | 2021
Summary
I navigated IBM's recruitment process for a Software Developer role as a fresher, which generally consisted of an aptitude test, comprehensive technical interviews, and a final HR discussion. The technical rounds particularly emphasized Data Structures and Algorithms through several classic LeetCode problems.
Full Experience
My journey through IBM's recruitment process as a fresher involved three distinct rounds. The initial stage was an Aptitude test, a multiple-choice assessment covering programming concepts in languages like C, C++, and Java, alongside computer science fundamentals such as Operating Systems, DBMS, Theory of Computation, and Computer Networks. It also included a section on general aptitude, featuring questions on probability, cubes, speed and distance, work and time, and blood relations. This round typically lasted between 75 to 120 minutes.
Successfully clearing the aptitude test led me to the Technical Rounds. This stage rigorously tested my foundational knowledge. I was expected to be well-versed in Data Structures and Algorithms, DBMS, Operating Systems, Networking, and OOPs concepts, in addition to having strong command over at least one programming language. The interviewers posed several classic coding problems, including the Coin Change problem (dynamic programming), Quicksort algorithm implementation, finding the minimum number of swaps to sort an array, detecting a loop in a linked list, reversing a linked list, and array rotation. These questions demanded not just theoretical understanding but also practical coding ability.
The final stage was the HR Round. This round focused on assessing my personality, aspirations, and fit within IBM's culture. I encountered typical HR questions such as 'Introduce yourself?', 'What do you know about IBM?', 'Why do you believe you are a good fit for the Software Developer role?', 'What are your strengths and weaknesses?', 'Why do you want to join IBM?', and 'Where do I see myself in five years?'. There were also discussions stemming from my resume and prior projects.
Interview Questions (12)
Coin Change Problem
Given a set of coin denominations and a target amount, find the minimum number of coins needed to make up that amount. If the amount cannot be made, return -1.
Quicksort Algorithm Implementation
Implement the Quicksort algorithm. Discuss its time complexity, space complexity, stability, and worst-case scenarios. Also, explain pivot selection strategies.
Minimum Swaps to Sort an Array
Given an array of integers, find the minimum number of swaps required to sort the array in ascending order.
Detect Cycle in Linked List
Given the head of a singly linked list, determine if it has a cycle in it. A cycle means that some node in the list can be reached again by continuously following the next pointer. Return true if there is a cycle, false otherwise.
Reverse Linked List
Given the head of a singly linked list, reverse the list, and return the reversed list.
Rotate Array
Given an integer array nums, rotate the array to the right by k steps, where k is non-negative.
Introduce yourself
Tell me about yourself.
Why IBM?
What do you know about IBM and why do you want to join us?
Why are you a good fit for Software Developer role?
Why do you believe you are a good candidate for the Software Developer role?
Strengths and Weaknesses
What are your greatest strengths and weaknesses?
Career Goals
Where do you see yourself in 5 years?
Resume/Project Discussion
Discussion about prior projects and questions from your resume.
Preparation Tips
To prepare for this process, I ensured my basics in Data Structures and Algorithms were very strong. I also extensively revised core computer science subjects like DBMS, Operating Systems, Networking, and Object-Oriented Programming (OOPs) concepts. I practiced implementing common algorithms and data structures in my chosen programming language. For the technical rounds, I specifically focused on solving LeetCode problems covering topics like dynamic programming, sorting, linked lists, and arrays, as these were directly asked.