Quali sono alcune tipiche domande del colloquio di progettazione per gli ingegneri del software?


Migliore risposta

Eccone alcune che ricordo dal mio scappatelle di interviste:

  1. Progetta instagram o qualche tipo di feed di contenuto. Questo è in realtà SUPER comune, io deve averlo ottenuto 3 o 4 volte presso varie aziende. È piuttosto uno stampino per biscotti ed è probabilmente quello che chiederanno gli intervistatori che sono troppo pigri per trovare una domanda migliore.
  2. Design type-ahead / autocomplete. Ho ricevuto anche questo più volte, a volte con leggere variazioni. Di solito è basato su una struttura dati Trie. Questo è fantastico per esercitarsi!
  3. Progetta un bus di messaggistica (apache kafka / zeromq / rabbitmq). Potresti ottenere qualcosa del genere se stai facendo un colloquio per un ruolo software infra-oriented. Questo è ottimo che può generare molte diverse aree di interesse e domande secondarie.
  4. Progetta una cache LRU. Di solito si tratta di implementare un elenco a doppio collegamento per ottenere una rimozione costante del tempo per gli elementi utilizzati meno di recente quando la cache è piena.
  5. una cache distribuita. Ancora una volta, potrebbe essere per un ruolo che è infra-oriented. Può anche essere preso in molte direzioni diverse.
  6. Progettare tabelle di database / data warehouse. Potrebbe trattarsi di un ruolo più orientato allingegnere dei dati, ma è comune anche per gli SWE dato che una buona progettazione dei dati è estremamente importante.

Eccone alcuni che NON ho visto personalmente , nonostante sia generalmente accettato come comune:

  1. Progetta un accorciatore di URL
  2. Progetta un negozio web / sito di e-commerce

Spero che questo aiuti! Sarei disposto a scommettere che i primi 4-5 copriranno la MAGGIOR PARTE delle tue interviste sulla progettazione del sistema e per quelle che non coprono, la conoscenza che ottieni studiandoli dovrebbe trasferirsi bene a diverse varianti delle domande.

Risposta

Colloqui di progettazione del sistema mette alla prova le tue capacità di progettazione e la tua capacità di lavorare con servizi complessi e scalabili. La tua performance in queste interviste determina la posizione e lo stipendio che ti verranno offerti. Se hai capacità di progettazione lodevoli, otterrai unofferta più alta. Una buona risorsa per prepararsi a questa intervista: Grokking the System Design Interview

Alcuni problemi di progettazione di esempio sono:

Inoltre, è una buona idea familiarizzare con concetti di sistemi distribuiti come Hashing coerente, Partizionamento dei dati , Bilanciamento del carico , Ridondanza e replica , Teorema CAP , ecc.

Nella mia esperienza, i candidati che hanno ottenuto risultati migliori nel progettare le interviste hanno seguito questi sette passaggi:

Passaggio 1: chiarimenti sui requisiti: poni sempre domande per trovare lambito esatto del problema che stai risolvendo.

Passaggio 2: definizione dellinterfaccia di sistema: definire quali API ci si aspetta dal sistema. Ciò garantirà anche che tu non abbia sbagliato alcun requisito.

Passaggio 3: stima finale: È sempre una buona idea stimare la scala del sistema che intendi progettare.

Passaggio 4: definire il modello di dati: sebbene sia non richiesto allinizio, questo chiarirà come i dati fluiranno tra i diversi componenti del sistema e in seguito ti guiderà anche verso il partizionamento dei dati.

Passaggio 5: Progettazione di alto livello: Disegna un diagramma a blocchi con 5-6 caselle che rappresentano i componenti principali del tuo sistema.

Passaggio 6: progettazione dettagliata dei componenti : Scava più a fondo in 2-3 componenti; il feedback degli intervistatori dovrebbe sempre guidarti verso quali parti del sistema vuole che tu spieghi ulteriormente.

Passaggio 7: colli di bottiglia: prova a discutere il maggior numero possibile di colli di bottiglia e diversi approcci per mitigarli.

Spero che questo abbia aiutato.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *