Wywiad Google AE

Nov 26 2022
Google LLC to amerykańska międzynarodowa firma technologiczna, która koncentruje się na sztucznej inteligencji, technologii wyszukiwarek, reklamie online, przetwarzaniu w chmurze, oprogramowaniu komputerowym, obliczeniach kwantowych, handlu elektronicznym i elektronice użytkowej. Została nazwana „najpotężniejszą firmą na świecie” i jedną z najcenniejszych marek na świecie ze względu na dominację na rynku, gromadzenie danych i przewagę technologiczną w obszarze sztucznej inteligencji.

Google LLC to amerykańska międzynarodowa firma technologiczna, która koncentruje się na sztucznej inteligencji, technologii wyszukiwarek, reklamie online, przetwarzaniu w chmurze, oprogramowaniu komputerowym, obliczeniach kwantowych, handlu elektronicznym i elektronice użytkowej. Została nazwana „najpotężniejszą firmą na świecie” i jedną z najcenniejszych marek na świecie ze względu na dominację na rynku, gromadzenie danych i przewagę technologiczną w obszarze sztucznej inteligencji. Jest uważana za jedną z Wielkiej Piątki amerykańskich firm informatycznych, obok Amazon, Apple, Meta i Microsoft.

  • Poziom: średni do trudnego
  • Proces rozmowy kwalifikacyjnej i rekrutacji: średni

Google Recruiter skontaktował się ze mną na linkedIn w sprawie rozmowy kwalifikacyjnej na stanowisko Application Engineer.

O roli : Ta rola zasadniczo koncentruje się na tworzeniu aplikacji używanych przez klientów wewnętrznych (Pracowników Google). W tej roli nacisk kładzie się bardziej na projektowanie systemu, a nieco mniej na struktury danych i algorytmy. Tak więc żądany DSA jest na ogół na średnim poziomie.

Struktura wywiadu/rund
1. Kontakt
2. Runda kodowania 1
3. Runda kodowania 2
4. Runda projektowania systemu (zależy od wyniku rundy kodowania 1+2)

Wyciąganie ręki

Rekruterzy Google skontaktowali się ze mną na linkedIn . Dlatego bardzo ważne staje się aktualizowanie profilu na linkedIn o projekty, umiejętności, doświadczenie i osiągnięcia.

Kodowanie Runda 1

Czas -: 45 min
Platforma -: Google Doc

Ta runda była w pełni oparta na strukturach danych i algorytmach . Poproszono mnie o 1 problem na średnim poziomie.

Problem:
Ten problem został oparty na dynamicznym programowaniu kołowym

Najpierw omówiłem z nimi różne przypadki testowe, a następnie opowiedziałem im o podejściu brutalnej siły, poprosili o czasową i przestrzenną złożoność problemu, a następnie kazali mi go zoptymalizować. Następnie omówiłem z nimi zoptymalizowane podejście i wdrożyłem je.

Kodowanie Runda 2

Czas -: 45 min
Platforma -: Google Doc

Ta runda została przeprowadzona w tym samym dniu Coding Round 1 . Ta runda również opierała się na strukturach danych i algorytmach. Omówiono 1 problem średniego poziomu, z ich zoptymalizowanymi podejściami oraz złożonością czasową i przestrzenną.

Problem:
1)
Był to problem leetcode średniego poziomu oparty na łańcuchu + mapie skrótów.
sol — Problem był modyfikowany na różnych etapach poprzez dodanie większej liczby przypadków testowych. I każde podejście, które im powiedziałem, zostało poproszone o jego wdrożenie, a złożoność czasu i przestrzeni była omawiana za każdym razem, gdy zmieniałem swoje podejście.

UWAGA : Rundy techniczne można łatwo przejść, ćwicząc problemy DSA na leetcode i regularnie organizując konkursy. Tematy z jakich mogą pochodzić pytania to: programowanie dynamiczne, Drzewa, Rekurencja, Linked list, Stringi, Tablice itp. Poziom pytań jest generalnie średni jak na stanowisko inżyniera aplikacji.

Określenie złożoności czasowej i przestrzennej jest bardzo ważne wraz z identyfikacją przypadków skrajnych, dopasowaniem właściwej struktury danych, zastosowaniem odpowiedniego algorytmu, głośnym myśleniem i dobrym wyjaśnieniem.

Runda projektowania systemów

Czas -: 45 min + 15 min (Googlyness)
Platforma -: Google Doc

Ta runda jest przeprowadzana tylko wtedy, gdy wynik kodowania rundy 1 + kodowania rundy 2 jest obiecujący. Moja runda projektowania systemu została zaplanowana 2 dni po moich rundach kodowania.

Ta runda była oparta na projektowaniu systemu na wysokim poziomie. Głównym celem tej rundy było przetestowanie podejścia do projektowania dobrego skalowalnego systemu, projektowania API i bazy danych.
Dostałem do zaprojektowania system, w którym musiałem zbudować witrynę zakupów online dla pracowników Google.

Omówiłem następujące kwestie dotyczące projektowania aplikacji.
1. Różne serwery dla różnych regionów.
2. Równoważenie obciążenia dla serwerów.
3. Skalowanie w poziomie całej aplikacji.
4. Rodzaj bazy danych (sql vs NoSql), której można użyć, a następnie szybkie zapytanie poprzez indeksowanie.
5. Buforowanie danych dla już zarejestrowanego użytkownika.
6. Możliwe Mikroserwisy, które można wykorzystać w aplikacji.
7. Strona trzecia do zarządzania bramką płatniczą (jedna z możliwych mikrousług).

W międzyczasie kontynuowałem dyskusję,

a) Projektowanie bazy danych. Liczba wymaganych tabel, typy wierszy i kolumn, których można użyć do wydajnego wyszukiwania danych.
b) Projektowanie API . To znaczy, jak będą wyglądały punkty końcowe API z typem żądania.

Wyjaśniłem architekturę, rysując ją z grubsza na google doc . Co ułatwiło mi wyjaśnienie.

Ta runda była głównie oparta na kierunku, w którym ją obierzesz. Zostaniesz zapytany w oparciu o Twoje podejście i pomysły.
Ankieterzy udzielają również potrzebnych wskazówek i opowiadają o negatywach i pozytywach określonego podejścia.

Źródło do nauki:https://youtube.com/playlist?list=PLMCXHnjXnTnvo6alSjVkgxV-VH6EPyvoX|| Edukacyjne.io || GFG

Googlyness: W tej części omawiane są zagadnienia związane z projektem zespołowym, pracą zespołową i zarządzaniem czasem. Dyskusja na te tematy trwa około 15 minut.

Podsumowując

Otrzymałem pozytywną odpowiedź od ankietera, a także z formularza zwrotnego. Ale zatrudnienie zostało wstrzymane w międzyczasie z pewnych przyczyn wewnętrznych.

W przypadku jakichkolwiek pytań skontaktuj się ze mną na LinkedIn: https://www.linkedin.com/in/riti-nema-707b1719b/

Wszystkiego najlepszego. Szczęśliwego kodowania!!