Migliore risposta
Eccone alcune che ricordo dal mio scappatelle di interviste:
- 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.
- 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!
- 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.
- 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.
- una cache distribuita. Ancora una volta, potrebbe essere per un ruolo che è infra-oriented. Può anche essere preso in molte direzioni diverse.
- 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:
- Progetta un accorciatore di URL
- 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:
- Progettazione di un servizio di accorciamento URL come TinyURL
- Progettazione di Instagram
- Progettazione di Twitter
- Progettazione di YouTube
- Progettazione di Facebook Messenger
- Progettazione di Dropbox
- Designing Typeahead Suggestion
- Designing Facebook Newsfeed
- Progettazione di Yelp
- Progettazione Uber
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.