Interview with a FAANG engineer.

An Interview with a FAANG engineer

Interview Summary

Problem type

Job Scheduler

Interview feedback

Feedback about Hipster Samurai (the interviewee)

Strengths:

  1. Gathering requirements
  2. Brings up many good bells/whistles
  3. Knowledge of specific systems of Kafka vs. RabbitMQ; consumer groups for worker farm
  4. Brings up DockerHub/docker image

Areas of improvements:

  1. Spend a bit of time on napkin math

Advice for future interviews:

  1. Don't spend too much time designing bells/whistles to begin with; ask if it's the right thing to focus on
Feedback about Deliberate Alligator (the interviewer)

General Comments: I am not sure. He's an incredible interviewer. I'm not sure what feedback I can even provide. This is also a guidance session on systems design so it's harder to provide feedback. I hope to schedule another interview but maybe a mock interview instance of a guidance interview.

Interview Transcript

Hipster Samurai: Hello?

Deliberate Alligator: Hey, can you hear me?

Hipster Samurai: Yes. Can you hear me?

... [truncated for brevity] ...


Deliberate Alligator: So I want us to design a Job Scheduler for our cloud service. And it'll be used by any customer in the world, so it'll be a public-facing service. And what I really want to have customers be able to do is they can specify a job. And a job is kind of any kind of code or algorithm that they want to upload. And I want them to be able to run that job either as a one-off. So kind of like a manual trigger or on a schedule.

Hipster Samurai: Okay, I'm going to write that out on a text file. Job scheduler, public-facing. I'm going to make these kind of like the functional requirements because my understanding of the first section is outline use cases and constraints to the system.

Deliberate Alligator: Yeah, I love that idea. Let's start off really simple and just say that the maximum execution time for a job is 24 hours. And if we have time at the end, we can design more of these bells and whistles.


Proposed System Design

Considerations


Conclusion

The design can cater to extensive user needs efficiently by combining the flexibility of job scheduling with robust architectural components, ensuring both functionality and performance are prioritized.

Overall feedback: Focus on core components during interviews and clarify the details of distributed systems to effectively manage expectations.