Dans ces entreprises, la plupart des boucles d'entretien se composent de quatre parties :
- Entretien de codage : Soit sur un tableau blanc, soit sur un ordinateur réel. C'est devenu une condition préalable pour obtenir une offre. Si vous ne pouvez pas coder/solvabiliser le problème (ou si vous avez de sérieux bugs dans votre code), il est assez difficile d'obtenir une offre. Une bonne ressource pour se préparer à ce type d'entretien : Coderust 2.0
- Entretien de conception de système : Cela teste vos compétences de conception et votre capacité à travailler avec des services complexes et évolutifs. Vos performances lors de ces entretiens déterminent le poste et le salaire qui vous seront proposés. Si vous avez des compétences de conception louables, vous obtiendrez une offre plus élevée. Une bonne ressource pour se préparer à cet entretien : Grokking the System Design Interview
- Entretien d'adéquation culturelle. Au cours de cet entretien, les entreprises vérifient si le candidat s'adapte bien à leur culture. Le candidat ne doit montrer aucun drapeau rouge.
- L'entretien de conception de systèmes : Ces questions sont posées parfois, en fonction de l'équipe. Exemples : Concevoir un parking, un système de réservation d'avions, etc.
Récemment, j'ai mené de nombreux entretiens de conception de systèmes (SDI) et, comme pour les entretiens de codage, les candidats qui n'ont pas passé assez de temps à se préparer aux SDI ont la plupart du temps de mauvais résultats. Cela s'aggrave lorsque vous passez des entretiens dans des entreprises de premier plan comme Google, Facebook, Uber ou Dropbox. Dans ces entreprises, si un candidat n'obtient pas des résultats supérieurs à la moyenne, ses chances d'obtenir une offre sont limitées. De plus, une bonne performance lors de ces entretiens se traduit toujours par une meilleure offre (financièrement), car votre performance reflète votre capacité à travailler avec des systèmes complexes.
De plus, toutes ces entreprises aiment les candidats qui connaissent bien les concepts des systèmes distribués comme le hachage cohérent, le partitionnement des données, l'équilibrage des charges, la redondance et la réplication, le théorème CAP, etc.
Les quelques exemples de problèmes de conception sont :
- Designing a URL Shortening service like TinyURL
- Designing Instagram
- Designing Twitter
- Designing Youtube
- Designing Facebook Messenger
- Designing Dropbox
- Designing Typeahead Suggestion
- Designing Facebook’s Newsfeed
- Designing Yelp
- Designing Uber
Hope this helped.