Найти тему
Ick bin ein Berliner

Собеседования в иностранные компании: практическое руководство программиста

Оглавление

Все примеры я привожу на основании интервью с Facebook и Klarna. Facebook пригласил меня на onsite интервью. С Кlarna уже подписан контракт.

С одной стороны, я знал чего ожидать. Так же было с Яндексом: до собеседований я узнал у коллег, что будет и насколько это сложно.

С другой стороны ждёшь, что будут какую-нибудь жесть спрашивать, но в реальности оказывается проще.

Я собеседуюсь на бэкенд-разработчика и SRE. Что спрашивают у фронтендеров или DBA — не знаю.

Из чего состоит собеседование

Начинается всё с общения с HR-ом. Это важный этап, на котором нужно выяснить: что от вас хотят, чего ожидать, к чему готовиться. Задача HR-а — помочь и подсказать нужные материалы.

Собеседования состоят из нескольких секций:

  1. Написание кода.
  2. Системное интервью.
  3. Отдельная секция по сети.
  4. Секция по дизайну систем.

Подробнее о каждой секции

Общение с HR-ом и домашняя работа

Не стесняйтесь спрашивать у HR-а, что будет на секции и как лучше подготовиться.

Спрашивайте, какие материалы почитать по теме. Если это большая компания, то будет готовый список для подготовки к интервью, и рекомендации по книгам и сайтам.

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

Секции с кодом

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

Пример моего решения задачи прямо во встроенном редакторе с hackerrank.com
Пример моего решения задачи прямо во встроенном редакторе с hackerrank.com

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

Вот ссылки на хорошие платформы с кучей задач по разным темам:

1. https://www.hackerrank.com/

2. https://leetcode.com/

Я в основном пользовался первым. Статьи с разбором алгоритмов почитайте на https://www.geeksforgeeks.org/

Если не получается решить задачу, тогда я уже читаю объяснение алгоритма в интернете. Скриншот с geeksforgeeks.org с объяснением сортировки слиянием.
Если не получается решить задачу, тогда я уже читаю объяснение алгоритма в интернете. Скриншот с geeksforgeeks.org с объяснением сортировки слиянием.

Системное интервью

На системных интервью для linux-разработчиков будут вопросы на понимание работы аспектов операционной системы. Вам будут их задавать, пока не найдут где кончаются знания. Изучить всё невозможно! Поэтому важно знать базовые принципы.

-4

Популярный пример:

Вы делаете в консоли http-запрос в Интернет. Потом нужно подробно рассказать, что происходит от обработки введённого текста вашим shell-ом и запуска программы до получения ответа от сервера.

Чем больше расскажете, тем лучше.

Если не уверены — потренируйтесь заранее и проясните все непонятные места: как работает системный вызов execve, протокол dns, как устанавливается tcp-соединение, ssl-сессия, как выглядит HTTP-запрос.

Другой пример:

Вам жалуются, что логинятся на сервер по ssh и всё тормозит.

  • Как посмотреть загрузку сервера и что такое load average?
  • Что такое IO-bound и CPU-bound процессы?
  • Как понять что здесь узкое место — процессор или диск?
  • Как найти виновный процесс? Например, это база данных.
  • Как понять почему он тормозит? Приходят тяжелые запросы, не хватает индекса?

Дизайн систем

Идеально будет найти курс по Systems Design Interview и потренироваться в дизайне конкретных систем на бумажке.

Скриншот с Youtube: разработчики разных компаний рассказывают с примерами, как проходить Systems Design Interview.
Скриншот с Youtube: разработчики разных компаний рассказывают с примерами, как проходить Systems Design Interview.

Например, дизайн клона твиттера. Понять требования — какой входящий rps, какой длины сообщение. Исходя из этого нарисуйте элементы которые нам будут нужны: бэкенды, база данных.

Затем посчитать гипотетические требования: если знаем размер сообщения и количество сообщений в день, то можем посчитать какой нужен объём данных на дисках и какой будет входящий трафик.

Дальше можно обработать возможные проблемы. Что, если отказывает бэкенд или база данных. Продолжит ли система работать?

Самое важное, чтобы всё было конкретно.

Сколько ждать ответа

После секции вам дадут задать вопросы и скажут сколько ждать ответа от HR-а. По моему опыту отвечают в течение 2—3 дней. Если не отвечают в указанный срок, я не стесняясь пишу сам.

Автор статьи: Павел Елькин