Introduzione a System Design Intervista Domande e risposte
La progettazione del sistema è la procedura per definire gli elementi di un sistema come l'architettura, i componenti e i moduli, le varie interfacce di quei componenti e le statistiche che attraversano quel sistema. Attraverso la progettazione di un sistema logico ed efficace, è destinato a soddisfare requisiti e esigenze specifici di un'azienda o organizzazione. Implica un approccio organizzato alla progettazione di un sistema. È necessario un approccio dal basso verso l'alto o dall'alto verso il basso per considerare tutte le variabili correlate del sistema. I linguaggi di modellazione sono utilizzati da un progettista per trasmettere i dati e le conoscenze in una struttura di un sistema definita da un insieme compatibile di regole e definizioni. I disegni possono essere descritti in linguaggi di modellazione testuali o grafici.
Alcuni esempi di linguaggi di modellazione grafica sono:
- Unified Modeling Language (UML): descrive il software sia a livello comportamentale che strutturale con notazione grafica.
- Notazione di modellizzazione dei processi aziendali (BPMN): viene utilizzata per la modellazione dei processi
- Systems Modeling Language (SysML): viene utilizzato per l'ingegneria dei sistemi.
- Diagramma di flusso: una rappresentazione simbolica o graduale di un algoritmo.
Cosa bisogna prevedere in un'intervista di progettazione del sistema?
Tale intervista normalmente inizia con un problema molto aperto come la progettazione del proprio social network (come Facebook, Twitter). Man mano che la discussione avanza, l'intervistatore aggiungerà ulteriori restrizioni o ipotesi per ridurre la portata del problema.
Per affrontare queste domande, le cose che ti aiutano sono la pratica e l'approccio strutturato.
Ora, se stai cercando un lavoro legato alla progettazione del sistema, allora devi prepararti per le domande di intervista sulla progettazione del sistema 2019. È vero che ogni colloquio è diverso secondo i diversi profili professionali. Qui, abbiamo preparato l'importante Domande e risposte sul colloquio di progettazione del sistema che ti aiuteranno ad avere successo nel tuo colloquio.
In questo articolo del 2019 sulle domande di intervista sulla progettazione del sistema, presenteremo le 10 domande di intervista più importanti e più frequenti sulla progettazione del sistema. Queste domande sono divise in due parti:
Parte 1 - Intervista Domande sulla progettazione del sistema (Base)
Questa prima parte copre le domande e le risposte di intervista sulla progettazione di sistemi di base
Q1) Progetta TinyURL o bit.ly (un servizio di accorciamento degli URL)?
Risposta:
Trova le funzionalità che il sistema dovrebbe supportare per primo. In secondo luogo, elaborare i numeri stimati di quanto può essere scalabile il sistema.
Durante la progettazione di un servizio ci sono tre cose da considerare:
- API (API REST) - Approccio di comunicazione del cliente con il servizio insieme a un bilanciamento del carico che è il front-end del servizio.
- Livello applicazione: thread di lavoro o host che accettano l'URL e generano l'URL minuscolo per esso e li memorizzano entrambi nel livello di persistenza.
- Livello di persistenza - Database
Cose da analizzare:
- Genera un ID univoco per ciascun URL e genera ID su larga scala poiché migliaia di richieste di accorciamento degli URL arrivano ogni secondo.
- Il servizio gestisce i reindirizzamenti.
- Supporta URL personalizzati.
- Tieni traccia delle statistiche sui clic
- Elimina gli URL scaduti
2) Progettare YouTube / Netflix (un servizio di streaming video globale)?
Risposta:
Cose da analizzare:
- Nei video, il servizio memorizzerà e trasmetterà un'enorme quantità di dati che un gran numero di utenti può guardarli e condividerli contemporaneamente.
- Registra statistiche sui video, ad esempio il numero complessivo di visualizzazioni, voti positivi / negativi, ecc.
- Aggiunta di commenti sui video in tempo reale.
componenti:
- OC - Nuvole come AWS, OpenConnect che fungono da rete di distribuzione dei contenuti.
- Backend - Database
- Client: qualsiasi dispositivo (desktop, Android, iPhone) da cui riprodurre il video su YouTube / Netflix.
Passiamo alle prossime domande di intervista sulla progettazione del sistema.
3) Progettare Quora / Reddit / HackerNews (un social network + un servizio di bacheca messaggi)?
Risposta:
Cose da analizzare:
Le persone che utilizzano i servizi possono condividere collegamenti o pubblicare domande. Altri utenti possono rispondere a domande o commentare i collegamenti condivisi. Quindi il servizio dovrebbe effettuare le seguenti operazioni:
- Registra le statistiche per ciascuna risposta, ad esempio il numero complessivo di visualizzazioni, voti positivi / negativi, ecc.
- Gli utenti dovrebbero essere in grado di seguire altri utenti o argomenti
- Elenco delle principali domande sulla sequenza temporale di tutti gli utenti e degli argomenti che seguono (simile alla generazione di newsfeed).
4) Progetta Facebook Messenger o WhatsApp (un servizio di chat globale)?
Risposta:
Queste sono le domande di base dell'intervista di System Design poste in un'intervista. Cose da analizzare:
- Progetta conversazioni individuali tra utenti.
- Amplia il tuo design per supportare le chat di gruppo.
- Cosa si può fare quando l'utente non è connesso a Internet?
- Quando inviare notifiche push?
- Come fornire la crittografia end-to-end?
Struttura:
Client> Bilanciamento del carico> Nodi> Cache (Redis)> Database (Casandra)
5) Ricerca del design Typeahead (completamento automatico)?
Risposta:
Cose da analizzare:
- Suggerimenti tipeahead da fornire.
- Criteri per la scelta dei suggerimenti.
- Il sistema deve essere in tempo reale?
- Supportare la personalizzazione con i suggerimenti.
- Query al secondo che verranno gestite dal sistema.
- Quantità di dati da archiviare.
Parte 2 - Domande sul colloquio di progettazione del sistema (avanzate)
Diamo ora un'occhiata alle domande di intervista di progettazione di sistema avanzate.
6) Progettare Dropbox / Google Drive / Google Foto?
Risposta:
Cose da analizzare:
- Come caricare / visualizzare / cercare / condividere file o foto?
- Tieni traccia delle autorizzazioni per la condivisione di file.
- Consentire a più utenti di modificare lo stesso documento.
7) Progetta Facebook, Twitter o Instagram?
Risposta:
Caratteristiche da considerare:
- Alcune delle funzionalità di Twitter / Facebook / Instagram da supportare.
- È necessario supportare le risposte ai tweet / raggruppare i tweet per conversazioni.
- Controlli sulla privacy intorno a ciascun tweet.
- Supportare i tweet di tendenza
- Messaggistica diretta
- Menzioni / Tagging
Cose da analizzare:
- Il numero di utenti e il traffico che devono essere gestiti dal sistema.
- Numero di follower dell'utente.
- Il numero di volte in cui il tweet è stato preferito.
Componenti che devono essere progettati:
- Generazione di newsfeed
- Grafico sociale
- Ricerca e archiviazione sistematiche per post / tweet.
Passiamo alle prossime domande di intervista sulla progettazione del sistema.
8) Progettare un web crawler?
Risposta:
È richiesto un servizio scalabile in grado di eseguire la scansione dell'intero Web e di raccogliere centinaia di milioni di documenti Web.
Cose da analizzare:
- Trovare nuove pagine Web.
- Dare la priorità alle pagine Web che cambiano in modo dinamico.
- Garantire che il crawler non sia associato in modo illimitato allo stesso dominio.
9) Design Uber:
Risposta:
Queste sono le domande più frequenti dell'intervista di System Design in un'intervista. Architettura: servizi monolitici / micro (servizio in tempo reale, front-end (applicazione) e database)
- Il back-end è al servizio del traffico di telefonia mobile e i client si connettono al back-end tramite dati mobili.
- I clienti si collegano al sistema di spedizione che abbina guidatori e piloti.
- La spedizione è scritta quasi interamente in node.js.
- Mappe / ETA: affinché la spedizione possa essere una scelta intelligente, è importante ottenere mappe e dati di routing.
- Servizi: servizi di logica aziendale per lo più scritti in Python.
- Database: Postgres, Redis, MySQL.
Cose da analizzare:
- Cliente che richiede un passaggio e come abbinarlo economicamente ai conducenti vicini.
- Memorizzazione di tonnellate di posizioni geografiche per conducenti e motociclisti sempre in movimento.
- Gestione degli aggiornamenti nelle posizioni dei driver.
10) Progettare un limitatore di velocità API (Github)?
Risposta:
Cose da analizzare:
- Limitare il numero di richieste che un'entità può inviare a un'API in una finestra temporale, ad esempio dieci richieste al secondo.
- Il limite di velocità dovrebbe funzionare per una configurazione sparsa, poiché le API sono raggiungibili attraverso un gruppo di server.
Articoli consigliati
Questa è stata una guida all'elenco delle domande e risposte dell'intervista di progettazione del sistema in modo che il candidato possa facilmente reprimere queste domande di intervista di progettazione del sistema. Qui in questo post, abbiamo studiato le principali domande di intervista sulla progettazione del sistema che vengono spesso poste nelle interviste. Puoi anche consultare i seguenti articoli per saperne di più -
- Domande sul colloquio di AutoCAD
- Domande di intervista a Photoshop
- Adobe Illustrator per principianti
- Assistente alla progettazione grafica