Wraz z drugim wielkim boomem technologicznym w Dolinie Krzemowej inżynierowie byli niezwykle poszukiwani przez startupy i technologicznych gigantów. Dla tych, którzy mają wykształcenie inżynierskie lub studiują informatykę, świat jest teraz Twoją ostrygą.
To powiedziawszy, firmy nie tylko rozdają pracę. Programiści wciąż muszą przejść specjalistyczne procesy wywiadów - w tym czasem przerażający wywiad techniczny.
Przygotowanie się na nie może być mylące. Czy powinieneś uczyć się konkretnych projektów technicznych lub ogólnie odświeżać wiele tematów? Czy powinieneś ćwiczyć na komputerze czy z przyjacielem?
Jako trzeci inżynier w Pocket Gems, który zatrudnia około 165 pracowników technicznych, przeprowadziłem setki wywiadów telefonicznych i na miejscu. W tym czasie wiele się nauczyłem, jak się odpowiednio przygotować. Oto porady, których potrzebujesz, aby przygotować kolejny wywiad techniczny.
Skoncentruj się na podstawach
Ankieterzy zadają głównie pytania na temat twoich podstaw: struktur danych, analizy złożoności algorytmicznej, projektowania klas i tym podobnych. Będą to zarówno pytania bezpośrednio o podstawy (np. Użyj X, aby wykonać Y), jak i pytania, do których wykorzystasz swoje podstawy (więcej na ten temat poniżej).
Pomyśl o podstawach jako o narzędziach w swoim zestawie narzędzi. Pozostaną takie same, bez względu na to, jaka nowa technologia się pojawi. Dzięki solidnym podstawom będziesz lepiej przygotowany do rozwiązywania problemów otwartych - problemów, które my i wiele innych startupów rozwiązujemy na co dzień. Koncentrując się na podstawach, ankieterzy mogą poświęcić mniej czasu na przygotowanie pytań do wywiadu i więcej czasu na sprawdzenie, jak myślisz.
Na przykład możesz zostać poproszony o coś takiego: Otrzymasz drzewo binarne i dwa węzły w drzewie. Znajdź najniższego wspólnego przodka dwóch podanych węzłów w czasie O (n).
Poprzez to pytanie ankieter chce sprawdzić, jak dobrze możesz przekazać swój proces myślowy i rozwiązanie. Sposób, w jaki rozwiązujesz problem, porządkujesz myśli i przekazujesz swoją odpowiedź, jest często tak samo ważny jak twój wniosek. Pracujemy w złożonych i ciągle zmieniających się środowiskach i potrzebujemy ludzi, którzy potrafią zarówno rozwiązać trudne problemy, jak i skutecznie komunikować je swoim technicznym i nietechnicznym członkom zespołu.
W tym obszarze wywiadu powinieneś swobodnie omawiać takie rzeczy jak ciągi znaków, tablice, podstawowa składnia, typy danych, listy połączone, drzewa, wykresy, stosy, kolejki i tabele skrótów. Aha, i upewnij się, że możesz odpowiedzieć na FizzBuzz bez mrugnięcia okiem.
Przygotuj się na rozwiązywanie różnych problemów
Każda z twoich podstaw ma zalety i wady i oferuje unikalne rozwiązanie dla określonego rodzaju problemu. Po tym, jak ankieterzy zadadzą ci pytanie wyłącznie na temat twoich podstaw, prawdopodobnie zobaczą, jak możesz je wykorzystać w praktyce. Osiąga się to poprzez zadawanie otwartych pytań, które można rozwiązać na różne sposoby.
Oto przykładowe pytanie: Otrzymasz równanie arytmetyczne jako ciąg. To równanie będzie miało pojedyncze cyfry 0–9, dodawanie, odejmowanie, mnożenie i nawiasy. Napisz funkcję, która przyjmuje to równanie i oblicza poprawną odpowiedź. Przykładowe dane wejściowe obejmują „1 + 1” i „2 * (1 + 9) - ((2 + 5) -9”).
Tak jak poprzednio, ankieter chce zobaczyć, w jaki sposób rozkładasz pytania otwarte i proces myślenia przy wyborze rozwiązania. Co najważniejsze, chcą widzieć, że możesz skutecznie komunikować złożone problemy.
Bez względu na pytanie lub jakie rozwiązanie wybierzesz, pamiętaj, aby przemyśleć na głos! Jeśli masz różne sposoby rozwiązania problemu, przed podjęciem decyzji o wyborze należy omówić opcje. Pomaga ankieterowi zobaczyć i zrozumieć twój proces myślowy. Ankieter może również zalecić jedno rozwiązanie w stosunku do innych, ponieważ wie, że inni mogą mieć pewne pułapki lub mogą być poza zakresem rozmowy.
Nie bój się zadawać pytań, jeśli coś jest niejasne lub nie ma zbyt wielu szczegółów. To pokazuje, że też myślisz - i daje ankieterowi poczucie, jak będziesz pracować z innymi. Upewnij się, że zadajesz pytania wyjaśniające, aby w pełni zrozumieć pytanie i że nie poszerzasz zakresu problemu (np. Jakie są przykładowe dane wejściowe? Czy muszę się martwić dzieleniem przez 0? Czy muszę się martwić czas letni?)
Na koniec upewnij się, że werbalnie przejrzysz kilka przypadków testowych, zanim powiesz, że jesteś skończony. Pozwala to zarówno sprawdzić kod, jak i pokazać ankieterowi, że sprawdzasz kod. Choć byłoby to tak łatwe, jak rozmowa kwalifikacyjna, niestety nie możemy przeczytać twoich myśli.
Przygotowując się, przećwicz rozwiązywanie pytań za pomocą innych narzędzi z zestawu narzędzi, aby uzyskać intuicję. Wiedz, kiedy użyć każdego ze swoich narzędzi, abyś nie potknął się podczas rozmowy kwalifikacyjnej. I upewnij się, że ćwiczysz pełne opisywanie swojego procesu myślowego - może to być najtrudniejsza część dla programistów przyzwyczajonych do pracy w izolacji.
Ćwicz, ćwicz, ćwicz
Im więcej ćwiczysz, tym lepiej będziesz przygotowany na wywiad dotyczący programowania. Dotyczy to większości rzeczy, ale szczególnie dotyczy wywiadów technicznych - naprawdę wymagają rozgrzania mózgu.
Oto kilka wskazówek, które pomogą Ci maksymalnie wykorzystać czas ćwiczeń:
- Upewnij się, że symulujesz środowisko wywiadu. Daj sobie czas na problemy. Jeśli zamierzasz przeprowadzić wywiad telefoniczny, poćwicz na Dokumentach Stypi i Google. (Wiem dla siebie, że brak autouzupełniania i podświetlania składni potknął mnie w wywiadach telefonicznych.) Jeśli zamierzasz przeprowadzić wywiad osobiście, poćwicz robienie problemów na papierze lub na tablicy.
- Poproś znajomego nietechnicznego, aby zadał ci pytania podczas rozmowy kwalifikacyjnej i poprowadził go przez twoje odpowiedzi. Jeśli potrafisz to wytłumaczyć, jestem pewien, że możesz wyjaśnić to swojemu ankieterowi technicznemu.
- Nie czuj się oszukany, jeśli skorzystasz z niektórych dostępnych narzędzi przygotowawczych. Często oferują świetny wgląd i ćwiczą pytania. Moimi ulubionymi są strony takie jak TopCoder i książki Head First . Niektóre inne książki, które mówią więcej o procesie wywiadu, to Programowanie wywiadów ujawnionych i łamanie kodu .
Techniczne wywiady kodujące mogą wydawać się dość zniechęcające, ale przy odpowiednich rodzajach ukierunkowanych ćwiczeń będziesz gotowy, aby je wykonać. Pamiętaj, aby skupić się na chlebie i maśle, podstawach i dużo ćwiczyć. Postępuj zgodnie z powyższymi wskazówkami, a będziesz przygotowany na następny wywiad dotyczący programowania.
Chcesz więcej informacji? Niedawno przedstawiłem ten temat na konferencji UC Berkeley Engineering / Tech Career. Sprawdź moje slajdy z poniższej rozmowy, aby uzyskać więcej przemyśleń i zasobów!




