Mal som rozhovor s GS v ich kancelárii v Bengaluru. Mám 4 roky skúseností s vývojom full stackov pomocou Javy. Volal mi jeden konzultant.
1. kolo
Aké koncepty vám vyhovuje Java? Povedal som zbierky. Spýtal sa, aké triedy zberu ste použili? Povedal som HashMap ArrayList a HashSet.
Kedy by ste použili Set a kedy zoznam? Povedal som, že sada podporuje jedinečné nenulové prvky a zoznam toto obmedzenie nemá. Takže ak chcem jedinečné prvky, použijem Set. Pýtal si nejakú inú úvahu? Povedal som typ dopytov, ktoré sa majú vykonať v kolekcii. Ako vyhľadávanie. Spýtal sa nejaký príklad? Povedal som – databáza zamestnancov. Zamestnanci musia byť jedineční, aby sme mohli použiť Zoznam a vyhľadávať pomocou binárneho vyhľadávania alebo podobnej techniky, akou sú vo všeobecnosti zoradené v určitom poradí. Ale myslím, že očakával odpoveď v čase vyhľadávania O(1) alebo Set. Vysvetlil som fungovanie HashMap a HashSet a ako to pomôže vývojárovi ľahko dosiahnuť jedinečnosť prvkov, ale anketár nebol presvedčený o mojej odpovedi na jeho pôvodnú otázku.
Aká je zmluva equals() a hashCode()? Čo ak je jeden prepísaný, ale druhý nie?
Predpokladajme, že mám používateľské rozhranie, kde je zoznam alebo tabuľka položiek a každá položka má atribút zisku, atribút zľavy atď. Ako zabezpečiť, aby viacerí používatelia nezanechali stav žiadnej položky nekonzistentný. Používateľ môže aktualizovať atribúty alebo to isté môže urobiť iná webová služba. Navrhol som synchronizáciu metód nastavenia položky. Spýtal sa, ako triediť veci. Povedal som, že položky budú v zozname polí a implementoval som porovnateľné rozhranie. Požiadal o pracovný kód. Keď som napísal výraz do metódy CompareTo(), povedal, že návrh nie je flexibilný, pretože existuje pevné kódovanie kritérií triedenia. Povedal, že keď chce niekto triediť podľa iného atribútu, nebude možné spravovať toľko duplicitných objektov. Povedal som, že to dokážeme pomocou vzoru továrenskej metódy. Tým fakticky ukončil kolo pohovoru. Niekde medzi tým spomenul rozhranie porovnávača a ja som mu vysvetlil, ako to funguje. Povedal som, že je to dobrá voľba, ak nechcete upravovať existujúce triedy. Myslím, že očakával implementáciu metódy Compare(), pretože by si nevyžadovala duplicitné objekty a triedenie podľa rôznych kritérií sa dá urobiť jednoducho implementáciou Comparator v rôznych triedach jednej triedy pre každé kritérium triedenia a potom vyvolaním metódy sort() triedy Collections s touto implementáciou Comparator.
Nejaká otázka na mňa?
Bolo mu povedané, aby odišiel na tento deň. Rada: Pokúste sa neuvádzať návrhové vzory, pokiaľ vás o to nepožiadajú alebo ak nemáte skúsenosti s riešením problémov s návrhovými vzormi. Počúvajte anketára a buďte v strehu. Poskytujú rady. Aj v prvom kole som urobil chybu v otázke otočeného poľa. Poskytol testovací prípad, keď môj kód zlyhal. Nástrahu som napravil. Pred dňom pohovoru sa dostatočne vyspite. Všetky praktické problémy pre Goldman Sachs ! Vytvoriť kvíz