Колонки

Как правильно подготовиться к собеседованиям в компании-гиганты — часть 1

Колонки
Руслан Манаев
Руслан Манаев

Software Engineer в компании Google

Алина Алещенко

Руслан Манаев работает в компании Google в Варшавском офисе на позиции Software Engineer. Он поделился опытом, как подготовиться к собеседованиям в компании FAANG (MAMAA).

В этой части материала — о том, как добиться собеседования в технологических IT-гигантах и какими знаниями нужно для этого обладать, а во второй автор расскажет про специфику технических собеседований и о том, как учить английский язык, чтобы их пройти.

Как правильно подготовиться к собеседованиям в компании-гиганты — часть 1

До собеседований в FAANG

Сначала хочу пояснить, что такое FAANG (MAMAA). Это устоявшийся акроним для обозначения технологических гигантов мирового уровня. По буквам можно понять, что сюда относят Facebook, Amazon, Apple, Netflix и Google. Неявно также могут иметь в виду Microsoft, Twitter, Spotify и др.

В таких больших компаниях на одну вакансию претендуют тысячи соискателей со всего мира, поэтому вам нужно приложить больше усилий, чтобы показать, что вы круче, чем остальные кандидаты.

Попасть на собеседование в FAANG можно несколькими путями:

  • Получить приглашение от рекрутера;
  • Самостоятельно найти позицию на сайте компании и подать заявку.

Чтоб увеличить шансы быть заметным для рекрутеров FAANG, нужно поработать над своим CV, которое вы публикуете в интернете (например, на LinkedIn). В сети доступны различные видео с лайфхаками, как оформить резюме (например, Create Your Resume for Google: Tips and Advice или Amazon Recruiter Shares 5 Insider Tips to Applying Online for Jobs).

Я приложил довольно много усилий, чтобы создать хорошо оформленный профиль в LinkedIn, который смог описать весь мой опыт. Рекрутеры меня заметили и связались со мной. Мне оставалось пройти собеседования.

 

Ак Барс Банк начал прием заявок по программе льготной ипотеки для сотрудников IT-компаний. Подробнее по ссылке

Что нужно знать для прохождения собеседований

Во время своего собеседования в Google я решал алгоритмические задачи средней сложности (если классифицировать как в Leetcode). Вообще нужно быть готовым решать задачи разного уровня сложности и понимать теорию по алгоритмам и структурам данных. Собеседования, естественно, проходят на английском языке.

При подготовке к собеседованиям я порекомендовал бы обратить внимание на четыре основных блока знаний:

  • Язык программирования;
  • Алгоритмы и структуры данных;
  • Специфика собеседований;
  • Английский язык.

Важно проработать их по отдельности и уметь использовать вместе.

 

Язык программирования

Собеседования чаще всего можно проходить на C++, Java, Python, Go или C.

Выбранный язык программирования нужно очень хорошо знать и уметь писать код на доске или в Google Docs. Рекомендую знать стандартную библиотеку выбранного языка, ведь когда в вашем решении нужно использовать сортировку, то совсем не обязательно писать сортировку с нуля.

Хорошим тоном является спросить собеседущего про возможность использовать алгоритм из стандартной библиотеки.

В разное время я пробовал писать на всех языках программирования из этого списка, но мне комфортнее всего писать собеседования на C++. Он очень сложный, но при этом он более выразителен, чем остальные языки.

 

Как я учил С++

Первое знакомство с C++ я начал с книги Роберта Лафоре «Объектно-ориентированное программирование в С++», после которой я много практиковался в олимпиадном программировании. Кроме того, я часто обращался к сайту cppreference.com, когда изучал стандартную библиотеку языка.

До работы в Google я читал «Эффективный и современный С++» Мейерса Скотта, а также смотрел много лекций с конференций C++ для того, чтобы понять лучшие практики этого языка программирования и начать их использовать на работе и на собеседованиях.

 

Алгоритмы и структуры данных

Алгоритмы — основное, что спрашивают в FAANG. И это не удивительно, ведь неэффективный код может очень дорого стоить таким компаниям.

Эффективность алгоритма измеряется его сложностью (Big O) по времени и по памяти. Алгоритмов существует очень много, причем могут спросить вопрос, который собеседующий придумал сам. Поэтому нужно быть готовым к любому вопросу.

Хочу отметить важный момент: алгоритмы и структуры данных нужно не учить, а понимать.

Существует несколько базовых подходов зная которые можно решить практически любую алгоритмическую задачу:

  • Рекурсия (recursion);
  • Разделяй и властвуй (divide-and-conquer);
  • Динамическое программирование (dynamic programming);
  • Жадный подход (greediness);
  • Полный перебор (brute-force search);
  • Поиск с возвратом (backtracking).

 

Как я учил

Я начал учить алгоритмы еще на первом курсе, когда участвовал в олимпиадах по программированию. Существует много ресурсов, помогающих учить алгоритмы, я перечислю те из них, которые помогли мне.

Тут есть список алгоритмов с краткими описаниями и кодом на C++. Этот ресурс предназначен больше для подготовки к олимпиадному программированию, и там есть решения для так называемых «гробов» (олимпиадные программисты так ласково называют задачи, на решение которых можно потратить пару часов).

На собеседовании такие задачи встречаются крайне редко, но если такая задача попадется, то достаточно будет просто рассказать суть наиболее эффективного решения, при этом реализовывать можно будет не очень эффективное решение, ведь собеседование длится 45 минут.

Я советую использовать этот ресурс как справочник, когда нужно что-то посмотреть по определенному алгоритму. Можно также скопировать список алгоритмов себе в Google Docs и выделять зеленым те их них, с которыми вы познакомились, так можно отслеживать свой прогресс. 

Решать задачи на Codeforces я начал с первого курса учебы в универе. Задачи тут есть как на русском, так и на английском. Много задач на алгоритмы самого разного уровня.

Советую участвовать в соревнованиях (контестах), которые регулярно тут проходят. Сервис нацелен больше на олимпиадное программирование, так что достаточно будет решать первые 2-3 задачи на них. Поначалу очень неплохо будет решать хотя бы одну задачу.

Следующий лайфхак позволит вам не терять мотивацию в начале пути.

Зайдите в архив и отсортируйте задачи по количеству решивших и начните решать их по порядку.

Если первую задачу решило 250 тысяч человек, то уже на третьей странице задачи решили всего 20 тысяч человек.

Такой способ поможет поднять скорость понимания условия задач и нахождения решений, совсем простые задачи тут должны решаться за пару минут. Таким образом мы геймифицировали процесс обучения, теперь легко можно представить, что это гонка или Squid Game на минималках. 

Курс по алгоритмам на этом ресурсе я также начал проходить интенсивно на первом курсе, как присоединился к олимпиадному программированию. Достоинство ресурса в том, что большинство курсов там бесплатные.

Алгоритмический курс может быть достаточно сложным, поэтому если какой то материал не очень понятен, я советую искать по выбранной теме как можно больше материала в интернете. Возможно, вы наткнетесь на объяснение материала более простым языком или другими словами, что приблизит вас к пониманию материала.

Этот сервис — самый рекомендуемый при подготовке к собеседованиям. Задачи тут на английском. Чтобы улучшить процесс обучения, рекомендую купить премиум-режим. Тогда вам будут доступны некоторые скрытые от обычного пользователя задачи и специальные обучающие курсы с теорией и подборками задач. Кроме того, тут есть специальные подборки по компаниям.

Этим сервисом я начал пользоваться уже после окончания университета. Тогда с большинством алгоритмов я уже был знаком, поэтому при подготовке к собеседованиям я выделял себе пару недель непрерывной подготовки, используя названный сервис и pramp.com.

Это был своеобразный спринт перед основным собеседованием. Для меня было гораздо эффективнее готовиться в таком режиме, чтобы разогнать мозг, нежели выделять каждый день 1-2 часа на подготовку. Главное тут — не перестараться и выделить день отдыха перед собеседованием.

Время под спринт можно было найти на новогодних праздниках (10 дней выходных), майских праздниках (тоже можно сделать 10 дней, если грамотно раскидать отпуски), в конце концов, можно просто взять отпуск.

Это основные ресурсы, которые мне помогли при подготовке к собеседованиям. В следующем материале я расскажу о специфике технических собеседований и подготовке к их прохождению на английском языке.


Фото на обложке: Shutterstock / Koshiro K

Иллюстрации предоставлены автором.

Нашли опечатку? Выделите текст и нажмите Ctrl + Enter

Материалы по теме

  1. 1 Приставы взыскали с Google более 7,7 млрд рублей оборотного штрафа
  2. 2 Google остановил показы рекламы в России, Facebook заблокирован: что это значит для рекламного рынка
  3. 3 Свежий взгляд: 15 эко-приложений для вашего телефона
  4. 4 Как правильно подготовиться к собеседованиям в компании-гиганты — часть 2
  5. 5 Что такое скликивание рекламного бюджета и как его победить?
Ак Барс Банк
Начался прием заявок по программе льготной ипотеки для сотрудников IT-компаний
Подробнее