Am avut un interviu cu GS la biroul lor din Bengaluru. Am 4 ani de experiență în dezvoltarea full stack folosind Java. Primisem un telefon de la un consultant.
Runda 1
Ce concepte sunteți confortabil în Java? Am spus colectii. El a întrebat ce clase de colecție ați folosit? Am spus HashMap ArrayList și HashSet.
Când ați folosi Set și când o listă? Am spus că Set acceptă elemente unice non-nule și List nu are această constrângere. Deci, dacă vreau elemente unice, voi folosi Set. A întrebat vreo altă considerație? Am spus tipul de interogări care trebuie efectuate asupra colecției. Ca și căutare. A întrebat vreun exemplu? Am spus – baza de date a angajaților. Angajații trebuie să fie unici, astfel încât să putem folosi Lista și căutarea prin căutare binară sau o tehnică similară, deoarece, în general, sunt sortați într-o anumită ordine. Dar cred că se aștepta la răspunsul de la ora de căutare O(1) sau la Set. Am explicat modul de funcționare a HashMap și HashSet și cum ar ajuta un dezvoltator să obțină cu ușurință unicitatea elementelor, dar intervievatorul nu a fost convins de răspunsul meu la întrebarea sa inițială.
Care este contractul equals() și hashCode()? Ce se întâmplă dacă unul este anulat, dar celălalt nu?
Găsiți al doilea minim într-o matrice dată .
Găsiți punctul de pivot într-o matrice sortată și rotită.
O întrebare pentru mine?
Runda 2
Oferă o scurtă introducere despre experiența ta de muncă.
Oferiți o imagine de ansamblu asupra designului recent al proiectului dvs.
Să presupunem că am o interfață de utilizare în care există o listă sau un tabel de articole și fiecare articol are un atribut de profit, un atribut de reducere etc. Cum să mă asigur că mai mulți utilizatori nu părăsesc starea niciunui articol inconsecventă. Utilizatorul poate actualiza atributele sau un alt serviciu web poate face același lucru. Am sugerat sincronizarea metodelor de setare ale articolului. A întrebat cum să sorteze articolele. Am spus că articolele vor locui într-o listă de matrice și am implementat interfața Comparable. A cerut un cod de lucru. Când am scris expresia în cadrul metodei compareTo(), el a spus că designul nu este flexibil, deoarece există criterii de codificare rigidă de sortare. El a spus că atunci când cineva dorește să sorteze după un alt atribut, ar deveni imposibil să gestionezi atât de multe obiecte duplicat. Am spus că o putem face cu modelul de metodă din fabrică. La aceasta el a încheiat efectiv runda de interviuri. Undeva între el a menționat interfața Comparator și i-am explicat cum funcționează. Am spus că este o alegere bună dacă nu vrei să modifici clasele existente. Cred că se aștepta la implementarea metodei compare(), deoarece aceasta nu ar necesita obiecte duplicate, iar sortarea după criterii diferite poate fi realizată prin simpla implementare a Comparator în diferite clase o clasă pentru fiecare criteriu de sortare și apoi invocând metoda sort() a clasei Collections cu acea implementare Comparator.
O întrebare pentru mine?
I s-a spus să plece pentru a doua zi. Sfat: Încercați să nu prezentați modele de design decât dacă vi se solicită acest lucru sau dacă aveți experiență în rezolvarea problemelor cu modelele de design. Ascultă intervievatorul și fii atent. Ele oferă indicii. Și în runda 1 am făcut o greșeală la întrebarea matricei rotite. A dat un caz de testare în care codul meu ar eșua. Am corectat capcana. Dormiți suficient înainte de ziua interviului. Toate problemele de practică pentru Goldman Sachs ! Creați un test