Advanced Coding Interview Involving Concurrency / Multi-threading / Distributed System Design Topics

Ever since 2025, there has been an increasing number of in-depth problems involved in the seemingly resolvable coding interviews, which used to be very uncommon. It’s worthwhile noting that being unprepared for such topics but merely showing a problem-solving mindset may not always lead to a desirable passing-level result, given the extremely-competitive job market, while it’s also not recommended to learn by rote - memorizing the answer without thorough understanding could be easily recognized as imposter by the interviewers.

Discord Screen Challenge - Chat Server

Problem Statement

Original Problem Statement

Functional Requirements:

  • The chat server should be capable of handling multiple clients connecting at the same time.
  • Disconnection should be handled in a clean way.
  • Should be able to receive and forward messages among clients (message is not echoed back to sender).
Read more

Post-interview FE Coding Insights in 2025

Uber 60-min FE Interview - mid-July

Problem: on Hackerrank online IDE, given the function definitions, implement certain logic to obtain the expected output while ensuring the function calls running in parallel.

Note that (based on clarification made by the interviewer):

  • Only JS/TS allowed for this problem;
  • The function of getNameById is meant to simulate certain time consuming task; no change should be made other than under TODO inside asyncMap;
  • callback param passed into getNameById is not the same as that in asyncMap.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function getNameById(id, callback) {
// simulating async request
const randomRequestTime = Math.floor(Math.random() * 100) * 200;
setTimeout(() => {
callback("User" + id);
}, randomRequestTime);
}

// Input
const userIds = [1, 2, 3, 4, 5];
async function asyncMap(input, iterateeFn, callback) {
// TODO: implement this function, ensuring parallelism and the correct ordering in the output
}

asyncMap(userIds, getNameById, (names) => {
console.log(names); // * ["user1", "user2", "user3", "user4", "user5"]
});
Read more