The overall interview process was well-structured and professional, consisting of four stages over about three weeks. Each stage had a short preparation call with a recruiter which I found very helpful. Communication was timely and polite throughout.
1. Initial Call:
A short introductory call with the recruiter to discuss background, motivations, and basic role details. Discussed CQRS, Event-Sourcing, DDD in high level terms.
2. Stage 1 – Technical (Load Balancer Design):
Implement load balancer with Random/Round Robin algorithms in TDD style. Covered concurrency handling, locking mechanisms, and TDD approach. Focus was on covering all scenarios with tests and SOLID.
3. Stage 2 – Coding + Database (Account Skeleton & Postgres):
Involved implementing an thread safe account service given a skeleton and answering a lot of detailed questions about Postgres — isolation levels, indexes (BTree vs BRIN), transactions, and performance optimizations. Replication, sharding and partitioning. DDD, CQRS, Event Sourcing was covered again
4. Stage 3 – System Design (Apartment Booking System):
Full system design round: designing an appartment booking platform with a 3rd party API that may be unreliable. Expected to discuss service decomposition, consistency, and avoiding double-bookings through idempotancy. TCC, SAGA patterns mentioned, transaction outbox was asked.
5. Stage 4 – Behavioral:
Final round covering previous projects, decision-making, and collaboration style. Asked to describe in dept best project delivered end to end.
The process was thorough and technically challengin, but there was a lack of transparency around the internal leveling system. Despite being evaluated at a senior level throughout, the final offer corresponded to a mid-level grade, which led to a significant compensation mismatch.
Also worth a mention that even though there was very good feedback after each step during the end offer discussion there was suddenly bad feedback for each stage some of which I personally find absurd (no mention of VPN during System Design even though there was mention of OAuth2 protocol). Even if unintentional I feel as if this a "bait and switch" scenario. Further for such a challenging technical interview I feel that the compensation was not adequate.