
Allegro Tech & Data
Proces
rekrutacyjny
1. Zadanie Devskiller
Pytania testowe wielokrotnego wyboru dotyczące ogólnej wiedzy ze świata JVM (żeby uzyskać punkt, należy zaznaczyć wszystkie prawidłowe odpowiedzi).
Pytanie otwarte dotyczące szeroko pojętej bezpiecznej komunikacji, wątków.
Code review, gdzie należy dopisać swoje komentarze – skupiamy się na dobrych praktykach programowania.
Programowanie – napisanie testów do zaproponowanej klasy – oprócz jakości i pokrycia przypadków, sprawdzamy również ich czytelność i nastawienie na rozszerzalność.
Wskazówki
Przed przystąpieniem do rozwiązywania zapoznaj się z instrukcją i zwróć szczególną uwagę na przygotowanie potrzebnych narzędzi takich jak git czy IDE.
Na realizację tego etapu masz 90 minut (możesz wcześniej wejść w link i przeczytać instrukcję, ale od momentu kliknięcia “start test”, liczy się czas i nie masz możliwości przerwania). Jeśli zabraknie czasu, możesz ewentualnie dopisać na koniec swoje “to do”, czyli co jeszcze chciałbyś/aś dopisać w kodzie.
Warto nie otwierać innych okien w przeglądarce podczas wykonywania testu – Devskiller czasem interpretuje to jako chęć podglądania i blokuje dotychczas udzielone odpowiedzi przed możliwością edycji.
2. Rozmowy techniczne
Ta część rozmowy nastawiona jest na weryfikację wiedzy potrzebnej do codziennej pracy inżyniera nad pojedynczą usługą. Rozmawiamy o dobrych praktykach w programowaniu, szczegółach języka i znanych frameworkach. Zależy nam nie tylko na jakości kodu, ale także na wydajności i metrykach naszych serwisów, dlatego możesz spodziewać się pytań o działanie technologii “pod maską”. Często prosimy też o zrobienie przeglądu kodu oddającego nasz codzienny proces wytwarzania oprogramowania.
Co badamy?
- Dobre praktyki programowania – TDD, SOLID
- Znajomość podstaw języków programowania – Java
- Współbieżność: wątki i pule wątków
- Serwery i klienci HTTP
- Przetwarzania asynchroniczne
- JVM: Java Memory Model, algorytmy GC
Pomocne materiały
- Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship
- Scott Oaks Java Performance: The Definitive Guide:
- Getting the Most Out of Your Code
- Adam Dubiel – Powrót do podstaw: wątki
- Adam Dubiel – Klienci HTTP: bohaterowie systemów rozproszonych
- Adam Dubiel – Przychodzi request do usługi
Wskazówki
Oprócz twardej wiedzy szukamy też głębszego zrozumienia zagadnień, dlatego nawet jeżeli nie jesteś pewny/a odpowiedzi warto odnieść się do swojego doświadczenia.
2.1. Rozmowa algorytmiczno-architektoniczna
W tej części wspólnie z rekruterem technicznym podejmiesz się zaprojektowania systemu rozproszonego spełniającego określone wymagania biznesowe. Rozmowa wymaga zmierzenia się z zagadnieniami skalowalności, wydajności, stabilności monitoringu oraz bezpieczeństwa.
Co badamy?
- Logiczne myślenie,
- Umiejętność zbierania wymagań systemowych,
- Znajomość proponowanych technologii,
- Wiedzę nt. monitoringu oraz wdrażania, uruchamiania, skalowania i utrzymywania aplikacji na produkcji
- Podejście produktowe (rozumienie dla kogo i po co rozwiązujemy problem)
Pomocne materiały
Jeżeli chcesz przygotować się lepiej do tej rozmowy zachęcamy Cię do zapoznania się z poniższymi pozycjami.
- Sam Newman: Building Microservices: Designing Fine-Grained Systems
- Martin Kleppmann: Designing Data-Intensive Applications: The Big Ideas Behind Reliable,
Scalable, and Maintainable Systems
Wskazówki
Zaprojektowanie systemu podczas godzinnej rozmowy to bardzo mało czasu, dlatego ważniejsze od finalnego rozwiązania jest poznanie Twojego sposobu myślenia i szukania rozwiązań.
Nie bój się głośno myśleć. Jeśli czujesz, że trafiłeś(-łaś) w ślepą uliczkę i nie wiesz co dalej, jasno to komunikuj. Wspólnie z rekruterem znajdziecie wyjście z tej sytuacji.
- Pomyśl o skali projektowanego rozwiązania.
- Analizuj alternatywne technologie.
- Generuj pomysły, proponuj rozwiązania i rozważaj za i przeciw.
- Jeśli coś nie jest dla Ciebie jasne – pytaj.
- Analyze alternative technologies.
- W trakcie rozmowy często wykorzystujemy narzędzie Jamboard od Google, aby mieć możliwość rysowania razem z Tobą.
3. Spotkanie z liderem oraz rekruterem
To ostatni etap procesu rekrutacyjnego, który prowadzony jest przez osobę z HR oraz Team Leadera/Team Managera pracującego na co dzień w obszarze, do którego zdecydowałeś(-łaś) się aplikować.
Podczas godzinnej rozmowy poruszamy trzy ważne dla nas aspekty:
Po pierwsze, chcemy lepiej Cię poznać. Na samym początku skupimy się na Tobie, Twojej motywacji do zmiany, zweryfikujemy dotychczasowe doświadczenie oraz zbadamy kompetencje, które dla nas, Allegrowiczów są niezwykle istotne, aby móc efektywnie pracować i realizować ambitne cele. Skupimy się też na Twoich oczekiwaniach względem Allegro.
Po drugie, chcemy abyś poznał/a nas lepiej, dlatego opowiemy o kulturze pracy i jej specyfice. Lider/Manager przybliży obszar, do którego zdecydowałeś(-łaś) się aplikować. Dowiesz się nad jakimi rozwiązaniami pracują nasze zespoły developerskie i jak radzą sobie z wyzwaniami. Poruszymy aspekty techniczne, ale też te związane z samą organizacją pracy.
Po trzecie, praca w Allegro daje wiele możliwości i benefitów – opowiemy o nich wszystkich!
Co badamy?
- Innowacyjność
- Współpracę
- Nastawienie na cel
- Analizę i skalowanie
- Przywództwo
Jak badamy?
Wykorzystujemy wywiad behawioralny (metoda STAR).
Tak naprawdę to rozmowa o Twoich doświadczeniach
i sytuacjach z pracy zawodowej.
Wskazówki
Przygotuj się do rozmowy – przejrzyj jeszcze raz swoje CV, przypomnij sobie realizowane projekty, zastanów się jaki był zakres Twoich odpowiedzialności.
Odpowiadając na pytania, bazuj na przykładach. Przywołuj sytuacje, które faktycznie potwierdzą Twoje doświadczenie.
Odwołuj się do danych, w Allegro podejmujemy decyzje na podstawie liczb.
Nie bój się pytać! Pamiętaj, że ta rozmową jest również dla Ciebie, a nam zależy abyś ocenił/a czy Allegro to faktycznie miejsce, w którym chcesz się rozwijać.
Pamiętaj o ustrukturyzowanej formie przekazywania informacji. Więcej nie zawsze znaczy lepiej. Na tą rozmowę mamy zarezerwowaną godzinę, a sporo tematów do poruszenia.
Nie denerwuj się 🙂 My tylko chcemy Cię lepiej poznać!