In queste aziende, la maggior parte delle interviste consiste in quattro parti:
- Intervista di codifica: O su una lavagna o su un computer vero e proprio. Questo è diventato un prerequisito per ottenere un'offerta. Se non riesci a codificare/risolvere il problema (o hai qualche serio bug nel tuo codice), è abbastanza difficile ottenere un'offerta. Buona risorsa per prepararsi a questo tipo di colloquio: Coderust 2.0
- System Design Interview: Questo testa le vostre abilità di progettazione e la vostra capacità di lavorare con servizi complessi e scalabili. La vostra performance in queste interviste determina la posizione e lo stipendio che vi verrà offerto. Se avete lodevoli capacità di progettazione, otterrete un'offerta più alta. Una buona risorsa per prepararsi a questa intervista: Grokking the System Design Interview
- Cultural fit interview. Durante questo colloquio, le aziende vedono se un candidato è adatto alla loro cultura. Il candidato non deve mostrare alcuna bandiera rossa.
- OO Intervista di progettazione: Queste domande sono poste a volte, a seconda del team. Esempi: Progettare un parcheggio, un sistema di prenotazione aerea, ecc.
Di recente ho condotto molte interviste di progettazione di sistemi (SDI) e, come per le interviste di codifica, i candidati che non hanno speso abbastanza tempo a prepararsi per le SDI si comportano spesso male. Questo si aggrava quando si fanno colloqui nelle migliori aziende come Google, Facebook, Uber o Dropbox. In queste aziende, se un candidato non si comporta sopra la media, ha una possibilità limitata di ottenere un'offerta. Inoltre, una buona prestazione in queste interviste si traduce sempre in un'offerta migliore (finanziariamente), poiché la tua prestazione si riflette sulla tua capacità di lavorare con sistemi complessi.
Inoltre, tutte queste aziende amano i candidati che hanno familiarità con concetti di sistemi distribuiti come Hashing coerente, partizionamento dei dati, bilanciamento del carico, ridondanza e replicazione, teorema CAP, ecc.
Alcuni esempi di problemi di progettazione sono:
- Designing a URL Shortening service like TinyURL
- Designing Instagram
- Designing Twitter
- Designing Youtube
- Designing Facebook Messenger
- Designing Dropbox
- Designing Typeahead Suggestion
- Designing Facebook’s Newsfeed
- Designing Yelp
- Designing Uber
Hope this helped.