Amazon

В края на миналия месец бях на onsite интервю в Amazon за позицията Software Development Engineer, която щеше да ме закара в офиса им във Ванкувър. Ставаше въпрос за екипа в AWS, който работи по Step Functions.

Не ме харесаха.

Тъй като нямат практиката да обясняват защо са отказали на кандидат, мога само да гадая какво съм сбъркал. Уж си реших задачите, макар и на едната да се наложи да ме побутнат леко, а на другата да се забавя.

Интервютата в Amazon са много интересно преживяване. Общо взето минават така:

  1. Някаква комуникация с рекрутър, инициирана от една от двете страни,
  2. Онлайн оценяване,
  3. Телефонен разговор с рекрутър,
  4. Onsite интервю.

Онлайн задачите бяха лесни. Едната се свеждаше до BFS върху матрица, а другата – продължително сортиране на списък, сумиране и премахване на първите му два елемента, докато не остане само един.  След решаването на задачите трябваше да им напиша асимптотична оценка и обоснование на алгоритмите.

На едната задача покрих само 10 от 16 теста, но въпреки това минах напред към телефонния разговор. Там мина добре и с рекрутърката си говорихме много странични неща. След разговора започна организирането на onsite интервюто.

Прекарах около месец в почти денонощно учене на всевъзможни неща от компютърните науки. Започнах от основните структури от данни и алгоритми и реших доста примерни задачи от интервюта в Google, Microsoft и Amazon. Освен основите се очаква и познание по системен и архитектурен дизайн. За това наблегнах на примери като “как скалирахме Dropbox” и “как се оправяме с хилядите (буквално) microservice-и в Uber”. Това че вкъщи имам Kubernetes клъстър и си играя с истински сървъри също помогна много.

Bit manipulation в самолета към Виена

Onsite интервюто беше в Будапеща. За тези интервюта пише всевъзможни страшни истории, но моето беше приятно и с много по-лесни въпроси, отколкото очаквах. Цялото нещо представлява 4 интервюта от по час. Всички са едно след друго и има малка почивка, ако си поискаш.

Хората бяха интересни, приветливи и с удоволствие ми обясняваха подробности за работата в Amazon.  Заради NDA-а не мога да споделя по-конкретни детайли.

Едно интервю протича основно в три части:

  1. Интервюиращият се представя (не винаги) и задава въпроси за поведение, които се базират на Amazon-ските лидерски принципи. “Кажи ми за случай, в който си получил отрицателна оценка в работата си”, “случай, в който си постигнал добри резултати за кратко време” и всякакви такива. Очакват отговорите да са структурирани по определен начин и да покриват възможно най-много от принципите,
  2. Задача за програмиране върху бяла дъска (моето беше на лист хартия). Тук освен стандартните алгоритмични задачи има и едно интервю за системен дизайн,
  3. Въпроси към интервюиращия. Питах почти всички дали им харесва да работят в Amazon. Не питах само този, който е там от 16 години. Отговорите бяха различни варианти на “Сериозно ли?” и “Ти как мислиш?”. Някои питах как спят спокойно, знаейки че ако нещо се счупи, ще влезе в новините. От това научих много за начина им на работа и всички failsafe-ове, които имат.

Не очаквах езикът да е проблем, но се наложи да обяснявам на единия интервюиращ какво е Kubernetes. Не знам дали в крайна сметка всички успяха да разберат всичко, което им говорех или не им е пукало достатъчно, за да питат за неясните неща.

Последното ми интервю беше с hiring manager-а (този, който има най-много тежест в решението за наемане). С него си говорихме много странични неща и се смяхме доста. Не знам колко е добре това, защото всички интервюиращи си водят обилни записки, които сравняват после и на база тях се взема решение за наемане. Този по едно време си затвори лаптопа и започнахме да обсъждаме дизайна, който му рисувам. Накрая ми каза, че ме е харесал и е почти сигурен, че ще си говорим пак. Явно това е заучена фраза, за да не се шашкат кандидатите.

Особеното при Amazon е, че много държат на познаването и прилагането на техните си Leadership Principles. Разликата с други компании, които имат големи твърдения е, че тези наистина спазват нещата, които говорят. Поне по моите наблюдения и разкази от хора, които работят там.

Това интервю ми беше поредното за тази година, но първото, за което се готвя сериозно. На някои от предишните интервюта, на които бях, не можах да отговоря на срамно елементарни въпроси за неща, които ползвам всеки ден.

От цялото преживяване съм доволен, защото си припомних много теория, която успешно прилагам, а и научих много нови неща, които ще ми помогнат занапред. Освен това ме разходиха до Будапеща безплатно. Архитектурата е страхотна, гулашът е супер. Ще отида пак само за да се разходя из града и да огледам всичко на спокойствие 🙂

Представите на Amazon за начин на разработване на софтуер са много близки до моите и ще ми е много интересно някой ден да успея да играя с големите деца. Дотогава – return; return; и ще решавам задачи в LeetCode от време на време.