image

My Samsung R&D Interview Experience (SRI-D)

June 9, 2025

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.