Rekrutacja do dużych firm na stanowiska IT – zadania rekrutacyjne

Za niecałe dwa tygodnie będę bronił doktorat i skończy się moja przygoda ze studiowaniem. Zaproponowano mi pozostanie na uczelni w charakterze pracownika naukowego, ale mimo tego – trochę z ciekawości – postanowiłem wysłać swoje CV do kilku firm z branży IT w Polsce i w USA. Praca w USA to dla mnie pewien cel na przyszłość. Na razie rozmowy o ew. przeprowadzce zostały odsunięte w czasie, żeby choć trochę odchować potomstwo (a druga córka w drodze).

Google

Pierwsza przygoda z poszukiwaniem pracy związana była z polskim oddziałem Google. Wysłałem CV i po ok. tygodniu odezwał się rekruter z Londynu. Pierwsza rozmowa z rekruterem trwała ok. pół godziny. Po kilku dniach zaproponowano mi termin rozmowy technicznej. Pozwolono mi wybrać język programowania (C++, java lub Python, którego wybrałem). Rozmowa odbyła się przez telefon (wyświetlił mi się numer ze Szwajcarii) i trwała 40 minut. Swoją odpowiedź tworzyłem w specjalnie do tego celu przygotowanym dokumencie google, który w momencie zakończenia rozmowy stał się tylko do odczytu i chwilę później zniknął. Pierwsze zadanie to prosta łamigłówka (nie trzeba było nic kodować):

Bawisz się z dziećmi w rzuty monetą (do dyspozycji jest wiele monet). Monety nie są idealne i prawdopodobieństwo reszki wynosi 3/7 a orzełka 4/7. Zaproponuj dzieciom najprostszy sposób uzyskania “mniej więcej” uczciwego wyniku losowania (czyli takiego, który wypada z prawdopodobieństwem ok. 0.5).

Po powyższym dostałem zadanie z właściwego programowania i muszę przyznać, że zajęło mi chwile zrozumienie o co chodziło autorowi. Teraz jak patrze z perspektywy czasu treść jest oczywista a rozwiązanie banalne. Zadanie brzmiało:

Twój kolega prowadzi nieskończony eksperyment fizyczny, gdzie mierzona jest wartość liczbowa. Napisz dla niego program w pythonie, który umożliwi ciągłe obliczanie średniej kroczącej z tych pomiarów. Zaproponuj interfejs pomiędzy eksperymentem a twoim programem.

Po około tygodniu otrzymałem telefon, że proces rekrutacji nie będzie kontynuowany.

Tesla Motors

Druga próba była związana ze stanowiskiem inżyniera oprogramowania map i nawigacji w Tesla Motors. Tutaj cały kontakt był przez e-mail a czas pomiędzy wiadomościami liczony był w tygodniach. Po 3 mailach zostałem poproszony o rozwiązanie zadania programistycznego (Tesla Coding Challenge). Zadanie zostało mi udostępnione do pobrania. Miałem tydzień na zabranianie się za rozwiązywanie, ale od pobrania do odesłania zadania czas miał nie przekroczyć 4h (rekomendowane 3h). Rozwiązanie miało być w C++. Zadanie brzmiało:

Napisz program działający w wierszu poleceń, którego zadaniem będzie rozwiązanie układu równań zapisanego w pliku tekstowym. Uproszczenia polegały na tym, że układ ma mieć jedno rozwiązanie, po lewej stronie każdego równania jest tylko jedna zmienna, a po prawej stronie każdego równania mogą być inne zmienne i liczby całkowite dodatnie. Jedyną operacją po prawej stronie może być dodawanie. Zadaniem programu jest rozwiązanie układu i wypisanie zmiennych z wartościami w kolejności alfabetycznej.

Tak dział mój program:

screenshot_31

Po trzech tygodniach dostałem maila, że doszli do wniosku, że potrzebują kogoś od zaraz, a mnie trzeba by “sprowadzić”.

HSBC

Wysłałem CV również na stanowisko specjalisty ds. oceny ryzyka w banku – było to jedno z niewielu stanowisk, gdzie oczekiwano znajomości matlaba. Praca niestety w Krakowie, ale zostałem zaproszony na rozmowę przez telekonferencję do siedziby w Warszawie. Zostałem poproszony o próbki mojego kodu w matlabie, a że nie mam nic, co nie byłoby tajemnicą mojego dotychczasowego pracodawcy poproszono mnie o rozwiązanie zadania:

1. Zapytanie użytkownika o numer telefonu.
2. Na klawiaturze telefonu kazda cyfra, ma odpowiadające jej kilka
literek (1: ABC, 2:DEF, 3:GHI, …, 9:XYZ, 0:spacja). <- to sobie sam zmieniłem na układ zgodny z faktyczną klawiaturą telefonu
3. Utworzyć w Matlab skrypt, który będzie zamieniał cyfry, na
odpowiadające im litery. (Każdy numer wiele wariantów utworzonego słowa).
4. Z utworzonych wariantów słów wybrać 3 ciekawe – np. poprzez
podłączenie do google i wybranie 3, które zwracają najwięcej wyników
wyszukiwania (lub podłączenie do jakiegokolwiek innego źródła danych –
słownika czy tym podobne i wybranie słów istniejących).

Nie wiem czy dostali moje rozwiązanie, bo wrzuciłem w załącznik duży plik ze słownikiem sjp.pl, ale już się nie odezwali.

Nie publikuję na razie rozwiązań – pobawcie się sami, kiedyś pokażę swoje. Tak na prawdę najbardziej szkoda mi było pracy w google. Ani do USA, ani (tym bardziej) do Krakowa w obecnej sytuacji nie zdecydowałbym się jechać całą rodziną. Google był na miejscu. Niestety była to moja pierwsza rekrutacja – nie miałem pojęcia czego się spodziewać i poległem na banalnym zadaniu. Zachęcali mnie, żeby spróbować w przyszłości i pewnie się jeszcze skuszę. Na razie mam nową pracę.

|

Komentarze (3) »

  1. Dariusz:

    5 Oct 2016 @ 23:40

    Zabawa w monety.
    Na 7 rzutów anulujemy 1 wynik orzełka, czy to jest rozwiązanie ?
    Albo na każde 7 rzutów automatycznie dajemy 8 rzut jako reszka ?

  2. KoZoL:

    6 Oct 2016 @ 11:00

    Zerkam na zadanie od google.
    Z pozoru proste ale pojawiają się problemu jeżeli coś ma działać w nieskończoność :).
    Inkrementacja dzielnika nie wchodzi w grę (chyba, że wstrzymamy proces na maksymalnej wartości wynikającej z typu zmiennej).
    I jaką średnią kroczącą wybrać ? 😛
    Fajne – cały czas myślę 😛

  3. Maniek:

    6 Oct 2016 @ 19:44

    Zabawa w monety to od razu dalbym kto wyrzuci jak najwiej np orla lub reszke, kazdy ma ta sama szanse wiec w stosunku di siebie 50% na wygrana.

    Drugie to wydaje mi sie aby w programie trzymac srednia i wartosc iteracji, cos typu
    Srednia 5 z 100 badan, nastepne badanie 80, czyli (5*100 +8 ) / (100 + 1) gdzie 100 to ilosc krokow,

    jezeli chodzi o tesle widze ze wszystko spoko, pewnie czas 🙂 rekomendowany 3h ale czlowiek od zaraz zrobil by to w pare min 🙂

RSS komentarzy · adres TrackBack

Odpowiedz