19.01.2022

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

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

Поначалу хочу пояснить, что такое FAANG. Это закоренелый акроним для обозначения технологических гигантов мирового уровня. По буковкам можно понять, что сюда относят Facebook, Amazon, Apple, Netflix и Гугл. Неявно также могут иметь в виду 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, который сумел описать весь мой опыт. Рекрутеры меня увидели и связались со мной. Мне оставалось пройти собеседования.

 

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

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

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

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

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

 

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

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

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

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

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

 

Как я учил С++

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

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

 

Методы и структуры данных

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

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

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

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

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

 

Как я учил

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

  • MAXimal

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

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

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

  • Codeforces

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

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

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

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

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

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

  • Stepik

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

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

  • Leetcode

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

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

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

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

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

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

По материалам: rb.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *