Summary
I interviewed for a C++ Developer role at Euronet in Berlin, which focused heavily on C++ internals, concurrency, and some SQL. Despite positive feedback on my technical skills, I was ultimately rejected.
Full Experience
I stumbled upon an opening for a C++ Developer role at Euronet, a fintech company primarily operating in the USA and Europe, and decided to apply. As I'm based in India and looking for opportunities in Europe, the Berlin location was appealing. After a few weeks, HR sent me an Online Assessment link, which I successfully cleared. Subsequently, HR reached out to schedule the first round (R1).
R1 (C++ Concepts)
This round involved two interviewers: a Senior SDE and the Hiring Manager. The discussion primarily revolved around C++ concepts.
- We started by comparing
unordered_mapandmap, with a deep dive into the internal workings ofunordered_map, especially collision handling. I struggled a bit with explaining collision resolution correctly. - There was a brief mention of RB Trees and AVL Trees.
- Next, we moved to
std::movesemantics, where I was asked to write templatized code. I successfully did this, but when I includednoexcept, I couldn't explain its significance. - Following that, I was asked why one would set
obj.data = nullptrafter a move operation, to which I correctly answered that it prevents double deletion. - The interviewer then inquired about the different types of
deleteoperators in C++. - We also discussed smart pointers, mutexes, locks, and threads, and I had to write some code demonstrating their usage.
- A memory-based question came up: "How is -2 stored in C++ memory?"
- Finally, I was asked to write a lambda function.
After the C++ focused questions from the European interviewer, the Hiring Manager took over, asking about SQL concepts like indexing and sharding. He also asked me to write a few SQL queries for a given table, which I found challenging as I haven't used SQL extensively in my current role. This was followed by some behavioral questions.
The HM then asked about my willingness to relocate to Berlin, which I confirmed. He mentioned they also have an office in Pune, implying another option for me, and stated this was the only interview round.
A couple of days later, HR informed me that they wouldn't be moving forward with my application. This came as a surprise, especially when HR conveyed that the interview feedback was positive, and the decision to proceed with another candidate was solely the HM's. Sometimes, things just don't work out, and you have to accept it.
Interview Questions (11)
Discuss the differences between std::unordered_map and std::map. Explain the internal workings of std::unordered_map, particularly focusing on how it handles collisions.
Implement the concept of std::move semantics in C++, demonstrating its usage with a templatized code example.
Explain the significance and implications of using the noexcept specifier in C++.
When implementing move semantics (e.g., in a move constructor or move assignment operator), why is it important to set the source object's data pointers (e.g., obj.data) to nullptr after moving resources?
Describe the different types of delete operators available in C++ and their uses.
Discuss the concepts of smart pointers (std::unique_ptr, std::shared_ptr), mutexes, locks, and threads in C++.
Write C++ code demonstrating the usage of threads, mutexes, and locks to achieve concurrency and ensure thread safety.
Explain how the integer value -2 is represented and stored in memory in C++.
Write a C++ lambda function demonstrating its syntax and basic usage.
Explain the concepts of database indexing and sharding in SQL.
Given a specific table schema (implicitly assumed), write a few SQL queries to retrieve or manipulate data.