Interview Experience – Multiple Companies (IBM, Adobe, Siemens, Microsoft)
Summary
I went through interview processes at IBM, Adobe, Siemens Healthineers, and Microsoft, which included online assessments, coding challenges, system‑design discussions, and deep C++ concept questions.
Full Experience
🔹 IBM ISDL (Bangalore) – EDA Developer Tools
🟢 Online Assessment (HackerRank)
- 2 DSA questions (Graph + DP)
- 10 MCQs
🟢 Screening Call
- Work related discussion
- Introduction and discussion on C++ and DSA
- What is
thispointer in C++? - Can we have a "virtual constructor"? If not, why?
- Can we have a "virtual destructor"? Use cases?
- When would you use "Array vs Linked List"?
🔹 Adobe (First Attempt)
🟢 Technical Interview
-
Reverse a linked list (coding)
-
Output‑based questions on:
- Virtual functions
- Inheritance
-
Constructor & Destructor behavior
-
Impact of using
vectoras an object
🔹 Adobe Noida (Second Attempt – Jan 2026)
🟢 Round 1
-
LeetCode: Insert Interval
-
Design Problem:
-
Interface to fetch "next upcoming birthday"
-
Data structure involving:
- Name
- Parents
- Birth date
-
🟢 Round 2
-
Design a "Logger system"
- Asynchronous logging
- File logging vs console logging
🟢 Round 3
-
Design a "Rate Limiter"
- Scale from small system → millions of users
- Follow‑up on optimizations and edge cases
🔹 Siemens Healthineers
🟢 Round 1 (1 hr 45 min)
"Coding + C++ Core Concepts"
-
Reverse a string Implemention using class with:
- Copy constructor
- Assignment operator
- Operator overloading
-
Demonstrate "virtual functions"
-
Find most frequent element in array
"Conceptual Questions"
-
STL:
- Difference between
set,map,multiset - Use cases of
vector
- Difference between
-
When and why to use
virtualkeyword
🟢 Round 2 (1.5 hrs)
"System + OS + Debugging"
-
Experience with OS (Windows/Linux)
-
Unit testing approach
-
Debugging production issues using crash dumps
-
IPC concepts
-
Multithreading:
- Mutex vs Critical Section vs Condition Variable
"Design & Principles"
- SOLID principles (with example)
- Knowledge of C#, .NET (basic discussion)
"Coding"
-
Find "2nd most frequent word" in a string
-
OOP implementation:
- Abstract class
- Inheritance
- Operator overloading
- File handling
🔹 Microsoft ( Feb 2026)
🟢 Round 1 (DSA)
-
Discuss a "recent bug you solved end‑to‑end"
-
Graph problem:
- Connected components
- Queries on component size
🟢 Round 2 (System Design)
-
Discussion on "current work (cache systems)"
-
Design a "Distributed Cache"
-
Cache eviction strategies:
- FIFO
- LRU
- LFU
-
Implement FIFO cache
Interview Questions (14)
Reverse a Linked List
Given the head of a singly linked list, reverse the list and return the new head.
Insert Interval
You are given an array of non‑overlapping intervals sorted by start time, and a new interval. Insert the new interval into the array and merge if necessary so that the resulting array remains sorted and non‑overlapping.
Upcoming Birthday Data Structure
Design an interface that can efficiently fetch the next upcoming birthday given a collection of records, where each record contains a name, parents, and a birth date.
Logger System Design
Design a logger system that supports asynchronous logging. Discuss how you would handle file logging versus console logging, rotation, and performance considerations.
Rate Limiter Design
Design a rate‑limiting service that can be used by millions of users. Explain the core algorithm, data structures, scaling strategy, and possible optimizations or edge‑case handling.
Reverse String Class Implementation
Implement a class in C++ that stores a string and provides a method to reverse it. The class must include a copy constructor, assignment operator, and overload the appropriate operators for copying and output.
Most Frequent Element in Array
Given an array of integers, find the element that appears most frequently. If multiple elements have the same highest frequency, return any one of them.
Second Most Frequent Word
Given a string containing words separated by spaces, find the word that appears second most frequently. Ignore punctuation and case differences.
Connected Components Queries
For a given undirected graph, answer queries that ask for the size of the connected component that a particular node belongs to. The graph may be static or receive edge additions.
FIFO Cache Implementation
Implement a cache that evicts entries using a First‑In‑First‑Out (FIFO) policy. Provide methods for insertion, retrieval, and eviction when the cache reaches its capacity.
What is `this` pointer in C++?
Explain the purpose of the this pointer in C++ member functions and how it can be used.
Can we have a virtual constructor?
Discuss whether a virtual constructor is possible in C++ and, if not, why it cannot be implemented.
Virtual destructor use cases
Explain why a virtual destructor is needed in C++ and provide scenarios where it is essential.
Array vs Linked List
Compare arrays and linked lists in terms of memory usage, access time, insertion/deletion performance, and typical use cases.