Inside My Challenging Onsite Interview for Software Engineer at xai: Cache & Multithreading

xai | Software Engineer | Interview Experience

Interview Date: Not specified
Result: Not specified
Difficulty: Not specified

Interview Process

The interview consisted of three rounds. The first round was friendly, while the second round felt rushed. The interview was conducted on-site, and there were some technical issues with the setup, which wasted time. Each round lasted approximately forty-five minutes.

  1. Round 1: The candidate was given a code template and asked to utilize existing classes, including a distributed cache class and a token bucket class, to implement two functions: refillTokenBucket and check for remaining tokens for a user ID from the cache. The interviewer provided several hints throughout this round.

  2. Round 2: The candidate was tasked with writing a multi-threaded solution for sorting arrays. The interviewer allowed for reference to multi-threaded syntax, but the candidate struggled to find an optimal solution in the given time. They ended up discussing a priority queue merge array in a multi-threaded context. The interviewer appeared disengaged during this round.

  3. Round 3: The final round focused on designing a rate limiter that allows different token usage for each user ID. For example, one user might be allowed 10,000 tokens per second, while another might only be allowed 100. The candidate felt unprepared for this question, and the interviewer seemed to lose patience.

Technical Questions

  1. Cache
  2. Multithreading
  3. Rate Limiter Design

Tips & Insights

  • Be prepared for technical setups and ensure you are familiar with the tools and platforms used during the interview.
  • Practice designing systems like rate limiters, as they can be unexpectedly included in interviews.
  • Manage your time effectively, especially in multi-threaded coding tasks.