Quelles sont les questions typiques d’entretien de conception pour les ingénieurs logiciels ?


Voici quelques-unes dont je me souviens de mes escapades d'entretien:

  1. Design instagram ou un certain type de flux de contenu. Celui-ci est en fait SUPER commun, j'ai dû l'avoir 3 ou 4 fois dans différentes entreprises. C'est assez cookie cutter et c'est probablement ce que les interviewers qui sont trop paresseux pour trouver une meilleure question vont demander.
  2. Design type-ahead/autocomplete. J'ai également reçu celle-ci plusieurs fois, parfois avec de légères variations. C'est généralement basé sur une structure de données Trie. C'est un grand pour la pratique!
  3. Design a messaging bus (apache kafka/zeromq/rabbitmq). Vous pourriez obtenir quelque chose comme ça si vous passez un entretien pour un rôle logiciel orienté infra. C'est une excellente question qui peut engendrer de nombreux domaines d'intérêt et sous-questions différents.
  4. Concevoir un cache LRU. Se résume généralement à mettre en œuvre une liste doublement liée pour obtenir un retrait en temps constant pour les éléments les moins récemment utilisés lorsque le cache est plein.
  5. Concevoir un cache distribué. Encore une fois, pourrait être pour un rôle qui est orienté infra. Peut également être pris dans de nombreuses directions différentes.
  6. Design database tables/data warehouse. Cela pourrait être pour un rôle plus orienté vers l'ingénieur de données, mais est également commun pour les SWE étant donné qu'une bonne conception de données est sauvagement importante.

En voici quelques-uns que je n'ai PAS vus personnellement, bien qu'ils soient généralement acceptés comme communs :

  1. Designer un raccourcisseur d'URL
  2. Designer une boutique en ligne/un site de commerce électronique

J'espère que cela vous aidera ! Je serais prêt à parier que les 4-5 premiers couvrent LA PLUPART de vos entretiens de conception de systèmes - et pour ceux qu'ils ne couvrent pas, les connaissances que vous acquerrez en les étudiant devraient bien se transférer à différentes variations des questions.