Stanowiska w dziale Software Development
Jakie tematy techniczne będą poruszane?
Zanim przejdziesz do tematów technicznych, o które możesz zostać zapytany/-a podczas rozmowy kwalifikacyjnej, skontaktuj się z osobą prowadzącą rekrutację, aby poznać tematy/umiejętności, które najprawdopodobniej będziesz omawiać i przedstawiać. Z reguły nasze techniczne rozmowy kwalifikacyjne wymagają od kandydata rozwiązania ćwiczeń związanych z kodowaniem i projektowaniem systemowym na tablicy suchościeralnej. Należy także pamiętać, że inwencja leży w naszym DNA, a technologia jest podstawowym narzędziem, jakim posługujemy się w celu rozwoju i ulepszenia każdego aspektu doświadczeń zapewnianych naszym klientom. Podczas omawiania poniższych tematów zachowuj świadomość marki klienta.
Rozmowa kwalifikacyjna na stanowisko inżyniera oprogramowania, które wymaga co najmniej 2 lat doświadczenia? Dowiedz się, jak skutecznie zaprezentować swoje umiejętności podczas rozmów kwalifikacyjnych.
Tematy techniczne
Język programowania
Przed rozmową kwalifikacyjną na stanowisko techniczne nie wymagamy od Ciebie znajomości konkretnego języka programowania. Jednak znajomość wiodącego języka jest zwykle warunkiem decydującym o sukcesie. Kandydat powinien znać składnię takich języków jak C, C++, C++14, C#, Go, Java7, Java8, JavaScript, Kotlin, Objective-C, PyPy2, PyPy3, Python2, Python3, Ruby, Scala lub Swift. Powinien także orientować się w niuansach językowych, np. jak działa zarządzanie pamięcią, jakie są najpopularniejsze kolekcje, biblioteki itd.
Struktura danych
Głównie nasza praca polega na wydajnym wykorzystywaniu i zapewnianiu dostępu do danych. To wymaga doświadczenia w strukturze danych. Kandydat musi rozumieć wewnętrzne mechanizmy popularnych struktur danych oraz być w stanie porównać i konfrontować ich użycie w różnych aplikacjach. Od kandydatów oczekuje się znajomości czasu wykonania w przypadku popularnych operacji, a także wiedzy, jak wykorzystują one pamięć.
Algorytmy
Twoja rozmowa kwalifikacyjna nie będzie polegać na uczeniu się algorytmów na pamięć. Jednak rozumienie najczęściej używanych algorytmów z pewnością ułatwi odpowiadanie na niektóre pytania. Warto przejrzeć popularne algorytmy, takie jak przechodzenie drzewa, dziel i zwyciężaj, przeszukiwanie wszerz w porównaniu do przeszukiwania w głąb, i zrozumieć zależności między nimi. Znajomość czasu wykonania, teoretycznych ograniczeń i podstawowych strategii wdrażania różnego rodzaju algorytmów jest ważniejsza niż uczenie się na pamięć szczegółów dotyczących danego algorytmu.
Kodowanie
Podczas rozmowy kandydat może zostać poproszony o napisanie poprawnego składniowo kodu – nie pseudo-kodu. Jeśli nie czujesz się pewnie w kodowaniu bez IDE lub kodowania w danym języku, dobrze jest przypomnieć sobie ich cechy i zaznajomić się z kodowaniem na papierze. Najważniejszą rzeczą, jaką robi programista (Software Development Engineer) w firmie Amazon jest pisanie skalowalnego, trwałego i przetestowanego kodu. To są najważniejsze kryteria oceny Twojego kodu. Upewnij się, że sprawdziłeś/-aś kod pod kątem problemów „edge case”, oraz że nie przeoczyłeś/-aś żadnych błędnych parametrów. To Twoja szansa, by wykazać się umiejętnością kodowania.
Projektowanie zorientowane obiektowo
Dobry projekt jest kluczowy dla rozszerzalnego, pozbawionego błędów, trwałego kodu. Wiemy, że problem z oprogramowaniem można rozwiązać na nieskończenie wiele sposobów, jednak kiedy program ma być rozszerzalny i stały, dobry projekt oprogramowania jest kluczowy dla sukcesu. Jednym ze sposobów na stworzenie trwałego programu jest zastosowanie najlepszych praktyk projektowania zorientowanego obiektowo. Kandydat powinien posiadać praktyczną znajomość kilku popularnych i użytecznych schematów projektowania wraz z wiedzą, jak napisać program w sposób zorientowany obiektowo. Najprawdopodobniej kandydat nie zostanie poproszony o szczegółowe opisanie, jak działają konkretne schematy projektowania, lecz o obronę wyboru sposobu projektowania.
Bazy danych
Większość programów, które piszemy, jest oparta o zbiór danych. Podczas opracowywania najefektywniejszego sposobu odzyskiwania i przechowywania danych dla przyszłego użytku przed pracownikami technicznymi pojawia się wiele wyzwań. Firma Amazon znajduje się w czołówce nurtu nierelacyjnych baz danych. Udostępniliśmy naszym programistom usługi Amazon Web Services, takie jak DynamoDB, by mogli z łatwością korzystać z nierelacyjnych baz danych. Mimo że nie oczekujemy konkretnego doświadczenia w obchodzeniu się z nierelacyjnymi bazami danych, kandydat powinien znać obszerne założenia baz danych i ich zastosowanie. Im większa wiedza o różnicach pomiędzy relacyjnymi a nierelacyjnymi bazami danych, tym lepsze przygotowanie do rozmowy kwalifikacyjnej.
Obliczenia rozproszone
Systemy Amazon muszą odpowiadać ścisłym normom jakościowym i pracować przy dużym obciążeniu. Posiadamy wewnętrzne narzędzia, które pomagają w ich skalowaniu, jednak ważne jest, by rozumieć kilka podstawowych założeń obliczeń rozproszonych. Rozumienie zagadnień, takich jak architektura zorientowana na usługi, model Map Reduce, rozproszenie pamięci podręcznej, równoważenie obciążenia i innych, pomoże Ci sformułować odpowiedź na niektóre, trudniejsze pytania dotyczące architektury rozproszonej.
Systemy operacyjne
Nie musisz wiedzieć, jak stworzyć własny system operacyjny od zera, ale powinieneś/powinnaś posiadać wiedzę na tematy związane z systemami operacyjnymi, które mogą wpływać na Twoje kodowanie (np. zarządzanie pamięcią, procesy, wątki, synchronizację, stronicowanie i wielowątkowość).
Tematy internetowe
Oczekujemy od naszych programistów znajomości podstawowych zasad działania Internetu. Odśwież sobie informacje na temat pracy przeglądarek na wyższym poziomie, od modeli DNS i TCP/IP, aż po połączenia gniazd. Rzetelna wiedza na temat podstawowych mechanizmów działania sieci internetowej jest wymagana.
Ogólne uczenie maszynowe i sztuczna inteligencja
Możesz spodziewać się pytań o modelowanie oparte na danych, protokoły szkoleń/testów, analizę błędów i poziom istotności. Na przykład po określeniu problemu, powinieneś/powinnaś umieć sformułować problem uczenia maszynowego i zaproponować rozwiązanie, wraz z pomysłami na źródła danych, adnotacjami, sposobami modelowania i potencjalnymi przeszkodami. Zapoznaj się z podstawowymi metodami i algorytmami języka znaczników AIML – przejrzyj swoje ulubione podręczniki na temat języka znaczników i sztucznej inteligencji.
Wiemy, że była to stosunkowo długa lista tematów, które warto sobie przypomnieć. Pamiętaj, że osoba prowadząca rozmowę kwalifikacyjną nie będzie oceniać Twojej zdolności zapamiętania wszystkich szczegółów dla każdego z tych tematów. Będzie chciała poznać Twoją zdolność wykorzystania tego, co wiesz w celu sprawnego i skutecznego rozwiązania problemów. Ze względu na (czasami) ograniczony czas na przygotowanie do technicznej rozmowy kwalifikacyjnej, zalecamy przejrzenie podstaw informatyki i przećwiczenie kodowania poza integrowanym środowiskiem programistycznym. To z pewnością przyniesie najlepsze rezultaty.
Masz więcej pytań?
ZAJRZYJ NA STRONĘ ROZMOWA KWALIFIKACYJNA W FIRMIE AMAZON. SPRAWDŹ CZĘSTO ZADAWANE PYTANIA.
DOWIEDZ SIĘ WIĘCEJ O ŚWIADCZENIACH DODATKOWYCH. SPRAWDŹ NASZE LOKALIZACJE.
Software Development Engineer Interview Preparation (SIP)
Amazon Leadership Principles
This video provides valuable insight to help you be successful when interviewing for Amazon’s Leadership Principles.
Amazon Coding Sample
This video dives into a coding example and how candidates should approach, analyze and solve such problems when interviewing at Amazon.
Amazon System Design Preparation
This video tackles a system design example question and how candidates should approach, analyze and solve such technical questions.