logo

Doświadczenie w rozmowie kwalifikacyjnej Goldman Sachs | Zestaw 19

Odbyłem rozmowę z GS w ich biurze w Bengaluru. Mam 4-letnie doświadczenie w programowaniu full-stack przy użyciu języka Java. Miałem telefon od konsultanta.
    Runda 1
    1. Jakie koncepcje czujesz się komfortowo w Javie? Powiedziałem, że kolekcje. Zapytał, z jakich klas kolekcji korzystałeś? Powiedziałem HashMap ArrayList i HashSet.
    2. Kiedy użyłbyś zestawu, a kiedy listy? Powiedziałem, że Set obsługuje unikalne elementy inne niż null, a Lista nie ma takiego ograniczenia. Jeśli więc chcę unikalnych elementów, użyję Set. Zapytał o inne względy? Powiedziałem, jaki rodzaj zapytań należy wykonać w odniesieniu do kolekcji. Podobnie jak wyszukiwanie. Poprosił o jakiś przykład? Mówiłem – baza danych pracowników. Pracownicy muszą być unikatowi, abyśmy mogli użyć Listy i wyszukiwać za pomocą wyszukiwania binarnego lub podobnej techniki, ponieważ zazwyczaj są sortowani w określonej kolejności. Ale myślę, że spodziewał się odpowiedzi dotyczącej czasu wyszukiwania O(1) lub ustawienia. Wyjaśniłem działanie HashMap i HashSet oraz w jaki sposób pomogłoby to programiście w łatwym osiągnięciu niepowtarzalności elementów, ale osoba przeprowadzająca wywiad nie była przekonana moją odpowiedzią na jego pierwotne pytanie.
    3. Jaka jest umowa równości() i hashCode()? Co się stanie, jeśli jedno zostanie zastąpione, a drugie nie?
    4. Znajdź drugie minimum w podanej tablicy .
    5. Znajdź punkt obrotu w posortowanej i obróconej tablicy.
    6. Jakieś pytanie do mnie?
    Runda 2
    1. Krótko opowiedz o swoim doświadczeniu zawodowym.
    2. Omów projekt swojego najnowszego projektu.
    3. Załóżmy, że mam interfejs użytkownika, w którym znajduje się lista lub tabela elementów, a każdy element ma atrybut zysku, atrybut rabatu itp. Jak zapewnić, że wielu użytkowników nie pozostawi niespójnego stanu żadnego elementu. Użytkownik może zaktualizować atrybuty lub inna usługa internetowa może zrobić to samo. Zasugerowałem synchronizację metod ustawiających elementu. Zapytał, jak posortować przedmioty. Powiedziałem, że elementy będą znajdować się na liście tablic i zaimplementowałem interfejs Comparable. Poprosił o działający kod. Kiedy pisałem wyrażenie wewnątrz metody CompareTo(), powiedział, że projekt nie jest elastyczny, ponieważ istnieje twarde kodowanie kryteriów sortowania. Powiedział, że gdy ktoś chce sortować według innego atrybutu, zarządzanie tak dużą liczbą zduplikowanych obiektów stanie się niemożliwe. Powiedziałem, że możemy to zrobić za pomocą wzorca metody fabrycznej. W tym momencie skutecznie zakończył rundę wywiadów. Gdzieś w międzyczasie wspomniał o interfejsie komparatora i wyjaśniłem mu, jak to działa. Mówiłem, że to dobry wybór, jeśli nie chce się modyfikować istniejących klas. Myślę, że spodziewał się implementacji metody Compare(), ponieważ nie wymagałaby ona duplikatów obiektów, a sortowanie według różnych kryteriów można przeprowadzić po prostu implementując Comparator w różnych klasach, po jednej klasie dla każdego kryterium sortowania, a następnie wywołując metodę sort() klasy Collections z tą implementacją Comparatora.
    4. Jakieś pytanie do mnie?
    Powiedziano mi, żeby wyjechać na cały dzień. Rada: Staraj się nie poruszać wzorców projektowych, chyba że zostaniesz o to poproszony lub nie masz doświadczenia w rozwiązywaniu problemów związanych ze wzorcami projektowymi. Słuchaj rozmówcy i bądź czujny. Dają wskazówki. W rundzie 1 również popełniłem błąd w pytaniu o obróconą tablicę. Podał przypadek testowy, w którym mój kod się nie powiedzie. Poprawiłem pułapkę. Wyśpij się wystarczająco dużo przed dniem rozmowy kwalifikacyjnej. Wszystkie problemy praktyczne Goldman Sachs ! Utwórz quiz