I interviewed for Samsung R&D (SRI-D) and cleared all three rounds. Here's what each looked like.
Round 1: Aptitude
Mixed bag of questions covering:
- Train crossing problems
- Blood relations and direction-based puzzles
- Work done by X and Y individually, then together
- Number sequence prediction
Nothing too tricky, standard aptitude prep covers it.
Round 2: Technical Round 1
OOPs — polymorphism (static vs dynamic, overloading vs overriding), virtual functions
A virtual function enables runtime polymorphism — the correct function is resolved at runtime via vtable lookup, not at compile time.
DSA
Number of Islands:
#include <vector>
using namespace std;
void dfs(vector<vector<char>>& grid, int i, int j) {
if (i < 0 || i >= grid.size() || j < 0 || j >= grid[0].size() || grid[i][j] != '1')
return;
grid[i][j] = '0';
dfs(grid, i+1, j);
dfs(grid, i-1, j);
dfs(grid, i, j+1);
dfs(grid, i, j-1);
}
int numIslands(vector<vector<char>>& grid) {
int count = 0;
for (int i = 0; i < grid.size(); i++)
for (int j= 0; j < grid[0].size(); j++)
if (grid[i][j]= '1') { dfs(grid, i, j); count++; }
return count;
}
Merge two arrays without duplicates:
#include <vector>
#include <algorithm>
using namespace std;
vector<int> mergeWithoutDuplicates(vector<int>& a, vector<int>& b) {
vector<int> merged;
for (int x : a) merged.push_back(x);
for (int x : b) merged.push_back(x);
sort(merged.begin(), merged.end());
vector<int> result;
for (int i = 0; i < merged.size(); i++)
if (i= 0 || merged[i] = merged[i-1])
result.push_back(merged[i]);
return result;
}
Can this be done in-place? Technically yes if both arrays are already sorted — use two pointers and write back. But without sorting, you need O(n) space to track seen elements. Worth clarifying in the interview.
Sorting — worst case complexities and best use cases:
- Bubble — O(n²) — nearly sorted small arrays
- Insertion — O(n²) — small or nearly sorted data
- Selection — O(n²) — when writes are expensive (minimizes swaps)
- Quick — O(n²) worst, O(n log n) avg — general purpose large arrays
- Heap — O(n log n) — when guaranteed O(n log n) is needed
ML — identifying supervised learning from a list
Networking — OSI layers
OS — system calls and what they trigger
Round 3: Technical Round 2
REST API — HTTP methods (GET, POST, PUT, PATCH, DELETE) and their differences, server error codes (5xx vs 4xx, common ones like 500, 502, 503, 404, 401, 403)
CNN basics — architecture, convolution operation, pooling, how filters learn features
Portfolio question — difference between dB and LUFS
dB is a general unit for relative signal level. LUFS (Loudness Units Full Scale) is a perceptual loudness measure that accounts for how humans hear — it integrates loudness over time using ITU-BS.1770 weighting. dB SPL tells you amplitude, LUFS tells you perceived loudness.