Quali sono alcune tipiche domande da colloquio di design per ingegneri del software?

Ecco alcune che ricordo dai miei colloqui:

  1. Design instagram o qualche tipo di feed di contenuti. Questo è in realtà SUPER comune, devo averlo ricevuto 3 o 4 volte in varie aziende. E' abbastanza da cookie cutter ed è probabilmente ciò che gli intervistatori che sono troppo pigri per trovare una domanda migliore chiederanno.
  2. Design type-ahead/autocomplete. Anche questa l'ho ricevuta più volte, a volte con leggere variazioni. Di solito si basa su una struttura dati Trie. Questo è un ottimo esercizio!
  3. Progettare un bus di messaggistica (apache kafka/zeromq/rabbitmq). Potreste ottenere qualcosa del genere se state facendo un colloquio per un ruolo software orientato all'infrastruttura. Questa è un'ottima domanda che può generare molte diverse aree di attenzione e sotto-domande.
  4. Progettare una cache LRU. Di solito si tratta di implementare una lista doppiamente collegata per ottenere una rimozione a tempo costante degli elementi usati più di recente quando la cache è piena.
  5. Progettare una cache distribuita. Di nuovo, potrebbe essere per un ruolo che è infra-orientato. Può anche essere preso in molte direzioni diverse.
  6. Progettare tabelle di database/data warehouse. Questo potrebbe essere per un ruolo più orientato all'ingegnere dei dati, ma è anche comune per gli SWE, dato che una buona progettazione dei dati è estremamente importante.

Ecco alcuni che NON ho visto personalmente, nonostante siano generalmente accettati come comuni:

  1. Progettare un accorciatore di URL
  2. Progettare un sito web-shop/e-commerce

Spero che questo aiuti! Sarei pronto a scommettere che i primi 4-5 copriranno la maggior parte dei vostri colloqui di progettazione di sistemi, e per quelli che non coprono, la conoscenza che otterrete studiandoli dovrebbe trasferirsi bene a diverse varianti delle domande.