📍TomTom Software Engineer Intern | Interview Experience
Summary
I had two technical rounds for the Software Engineer Intern position at TomTom, which covered a wide range of topics including data structures and algorithms, system design, object-oriented programming, and various logical puzzles.
Full Experience
There were 2 technical rounds.
Interview Round 1
This round focused heavily on DSA, logic building and core CS fundamentals.
1. Move Positives Left, Negatives Right
Problem:
Given an array containing positive and negative integers, rearrange it such that all positive numbers appear on the left and all negative numbers appear on the right.
We discussed brute force and optimal approaches.
2. Missing Number from 1 to n
Problem:
Given an array of size n containing numbers from 1 to n with one number missing, find the missing number.
Discussion around multiple approaches including hashing and mathematical tricks.
3. 8 Balls Puzzle (One Heavier)
Problem:
You have 8 balls. One ball is heavier than the others. Using a traditional weighing balance, find the heavier ball in minimum weighings.
4. 25 Horses, 5 Tracks Puzzle
Problem:
25 horses, 5 tracks.
Only 5 horses can race at once.
Find the fastest and second fastest horse in minimum races.
5. Tricky OOP Questions
- Core OOP principles
- Edge cases in inheritance
- Runtime vs compile time behavior
6. Resume Based Questions
Deep dive into projects:
Interview Round 2
This round was more design heavy and concept deep.
1. SOLID Principles
Asked to explain each principle with real world examples:
- Single Responsibility
- Open Closed
- Liskov Substitution
- Interface Segregation
- Dependency Inversion
Follow up questions on:
- Violations
- Refactoring approaches
- Practical industry examples
2. University System Design (OOP Design)
Problem:
Design a university system where:
A person may be:
- Only a student
- Only a faculty member
- Both student and faculty
A student has:
studentIdstudyingDegree
A faculty member has:
facultyIdteachingDegree
Constraints:
- A person may start teaching later
- A person may stop teaching later
- Avoid unnecessary fields
- Avoid invalid IDs
- Handle role changes at runtime
- Follow good OOP principles
Expected to design class structure and explain reasoning.
The discussion started around inheritance, but later moved from inheritance to composition.
3. Bouncing Ball Problem
Function takes:
- Initial height
- Depreciation factor
Ball bounces repeatedly and height reduces by factor each time.
Find number of bounces until it comes to rest.
4. King and 10 Jewellers Puzzle
- 10 jewellers
- Each makes 10 rings
- Each genuine ring weighs 1 gram
- Exactly one jeweller makes rings that are 1 gram lighter
- Difference is whole number only
- You have a digital scale
- You can weigh only once
Find the greedy jeweller.
5. Stream Pattern Matching
Function takes:
- A stream of characters
- A pattern string
Find all occurrences of the pattern in the stream.
Expected discussion around efficient pattern matching (KMP).
6. 8 Apples Puzzle
- 8 apples
- 7 identical
- 1 faulty
- Faulty apple can be lighter or heavier
Using traditional weighing scale, identify the faulty apple and determine whether it is lighter or heavier.
7. Rope Burning Puzzle
- 2 ropes
- Each rope takes exactly 30 minutes to burn
- Burn rate is non uniform
Measure exactly 45 minutes.
8. HashSet and HashMap Internals
Deep discussion on:
- Buckets
- Hashing
- Collision resolution
- Load factor
- Rehashing
- Internal working of HashMap in Java
HashMap Internals - Imagine a developer accidentally overrides hashCode() and equals() like this:
hashCode() always returns 1
equals() always returns true
Now consider this:
map.put(stud1, 50);
map.put(stud2, 60);
map.get(stud1);
9. Tough Resume Based Questions
At the end of both rounds, the interviewer asked:
"Do you have any questions for us ?"
Interview Questions (13)
Move Positives Left, Negatives Right
Given an array containing positive and negative integers, rearrange it such that all positive numbers appear on the left and all negative numbers appear on the right.
Missing Number from 1 to n
Given an array of size n containing numbers from 1 to n with one number missing, find the missing number.
8 Balls Puzzle (One Heavier)
You have 8 balls. One ball is heavier than the others. Using a traditional weighing balance, find the heavier ball in minimum weighings.
25 Horses, 5 Tracks Puzzle
25 horses, 5 tracks.
Only 5 horses can race at once.
Find the fastest and second fastest horse in minimum races.
OOP Principles Discussion
- Core OOP principles
- Edge cases in inheritance
- Runtime vs compile time behavior
SOLID Principles Explanation
Asked to explain each principle with real world examples:
- Single Responsibility
- Open Closed
- Liskov Substitution
- Interface Segregation
- Dependency Inversion
Follow up questions on:
- Violations
- Refactoring approaches
- Practical industry examples
University System OOP Design
Design a university system where:
A person may be:
- Only a student
- Only a faculty member
- Both student and faculty
A student has:
studentIdstudyingDegree
A faculty member has:
facultyIdteachingDegree
Constraints:
- A person may start teaching later
- A person may stop teaching later
- Avoid unnecessary fields
- Avoid invalid IDs
- Handle role changes at runtime
- Follow good OOP principles
Expected to design class structure and explain reasoning.
Bouncing Ball Problem
Function takes:
- Initial height
- Depreciation factor
Ball bounces repeatedly and height reduces by factor each time.
Find number of bounces until it comes to rest.
King and 10 Jewellers Puzzle
- 10 jewellers
- Each makes 10 rings
- Each genuine ring weighs 1 gram
- Exactly one jeweller makes rings that are 1 gram lighter
- Difference is whole number only
- You have a digital scale
- You can weigh only once
Find the greedy jeweller.
Stream Pattern Matching
Function takes:
- A stream of characters
- A pattern string
Find all occurrences of the pattern in the stream.
8 Apples Puzzle
- 8 apples
- 7 identical
- 1 faulty
- Faulty apple can be lighter or heavier
Using traditional weighing scale, identify the faulty apple and determine whether it is lighter or heavier.
Rope Burning Puzzle
- 2 ropes
- Each rope takes exactly 30 minutes to burn
- Burn rate is non uniform
Measure exactly 45 minutes.
HashMap Internals and Edge Case
Deep discussion on:
- Buckets
- Hashing
- Collision resolution
- Load factor
- Rehashing
- Internal working of HashMap in Java
HashMap Internals - Imagine a developer accidentally overrides hashCode() and equals() like this:
hashCode() always returns 1
equals() always returns true
Now consider this:
map.put(stud1, 50);
map.put(stud2, 60);
map.get(stud1);