Esperienza di intervista a Goldman Sachs | Serie 19
Ho avuto un colloquio con GS nel loro ufficio di Bangalore. Ho 4 anni di esperienza nello sviluppo full stack utilizzando Java. Avevo ricevuto una chiamata da un consulente.
Giro 1
Con quali concetti ti trovi a tuo agio in Java? Ho detto collezioni. Ha chiesto quali classi di raccolta hai utilizzato? Ho detto HashMap ArrayList e HashSet.
Quando utilizzeresti Set e quando una lista? Ho detto che Set supporta elementi univoci non nulli e List non ha questo vincolo. Quindi se voglio elementi unici userò Set. Ha chiesto qualche altra considerazione? Ho detto la tipologia di interrogazioni da effettuare sulla collection. Come la ricerca. Ha chiesto qualche esempio? Ho detto: database dei dipendenti. I dipendenti devono essere univoci in modo da poter utilizzare l'elenco ed effettuare la ricerca tramite ricerca binaria o una tecnica simile poiché generalmente vengono ordinati in un certo ordine. Ma penso che si aspettasse la risposta al tempo di ricerca O (1) o Set. Ho spiegato il funzionamento di HashMap e HashSet e come ciò avrebbe aiutato uno sviluppatore a ottenere facilmente l'unicità degli elementi, ma l'intervistatore non era convinto della mia risposta alla sua domanda originale.
Qual è il contratto tra equals() e hashCode()? Cosa succede se uno viene sovrascritto ma l'altro no?
Trova il secondo minimo in un dato array .
Trova il punto cardine in un array ordinato e ruotato.
Qualche domanda per me?
Turno 2
Fai una breve introduzione sulla tua esperienza lavorativa.
Fornisci una panoramica del design del tuo progetto recente.
Supponiamo di avere un'interfaccia utente in cui è presente un elenco o una tabella di articoli e ogni articolo ha un attributo di profitto, un attributo di sconto ecc. Come garantire che più utenti non lascino lo stato di alcun articolo incoerente. L'utente può aggiornare gli attributi o qualche altro servizio web può fare lo stesso. Ho suggerito di sincronizzare i metodi setter dell'elemento. Ha chiesto come ordinare gli articoli. Ho detto che gli elementi risiederebbero in un elenco di array e ho implementato l'interfaccia Comparable. Ha chiesto un codice funzionante. Quando ho scritto l'espressione all'interno del metodo compareTo(), ha detto che il design non è flessibile poiché esiste un hard coding dei criteri di ordinamento. Ha detto che quando qualcuno vuole ordinare in base a un altro attributo diventerebbe impossibile gestire così tanti oggetti duplicati. Ho detto che possiamo farlo con il Factory Method Pattern. A questo punto ha effettivamente interrotto il giro di interviste. Da qualche parte nel frattempo aveva menzionato l'interfaccia del Comparator e gli ho spiegato come funziona. Ho detto che è una buona scelta se non si vuole modificare le classi esistenti. Penso che si aspettasse l'implementazione del metodo compare() in quanto ciò non richiederebbe oggetti duplicati e l'ordinamento in base a criteri diversi può essere eseguito semplicemente implementando Comparator in classi diverse una classe per ciascun criterio di ordinamento e quindi invocando il metodo sort() della classe Collections con quell'implementazione di Comparator.
Qualche domanda per me?
Mi è stato detto di partire per la giornata. Consiglio: provare a non richiamare i modelli di progettazione a meno che non venga richiesto di farlo o se non si ha esperienza nella risoluzione di problemi con i modelli di progettazione. Ascolta l'intervistatore e stai attento. Forniscono suggerimenti. Anche nel primo round avevo commesso un errore nella domanda sull'array ruotato. Ha fornito un caso di prova in cui il mio codice avrebbe fallito. Ho corretto la trappola. Dormi abbastanza prima del giorno del colloquio. Tutti i problemi pratici per Goldman Sachs ! Crea quiz