[Перевод] Шпаргалка для стажера: пошаговое решение задач на собеседовании Google

image

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

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

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

Рекомендуем бесплатные интенсивы по программированию для начинающих:
Основы Java всего за 3 дня — 8–10 августа;
Пишем первую модель машинного обучения — 12–14 августа;
Разработка мессенджера на Python — 15–17 августа

Шпаргалка для технического интервью


Сайты

Pramp

На этом ресурсе вы можете потренироваться проходить собеседования. Участники по очереди интервьюируют друг друга (там есть аудио- и видеоканалы) и могут пользоваться общим редактором кода. Скорее всего, на первых таких собеседованиях вам будет непросто, и чувствовать себя вы будете неловко. Но чем больше вы тренируетесь, тем увереннее их проходите, а настоящее интервью после этого покажется несложным.

Codesignal

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

Книги

Cracking the Coding Interview

Мои любимые части: Interview Preparation Grid (стр. 32), раздел, посвященный поведению на собеседовании, а также Interview Questions: Data Structures (стр. 88–107). Если вы ранее не сталкивались с термином «алгоритмическая сложность», то сейчас самое время, книга отлично вводит в тему.

А что делать на собеседовании?


  • Не выключайтесь из коммуникации и отвечайте честно. Когда обдумываете вопрос, размышляйте вслух, описывайте ход своих мыслей.;
  • Добавьте немного юмора в общение, не бойтесь шутить. Попробуйте получить удовольствие от общения.;
  • Записывайте важную информацию.;
  • Задавайте вопросы и старайтесь использовать то, что узнали от интервьюера.


Собеседование шаг за шагом

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

  1. Прочитайте вопрос.
  2. Разберите все данные, как входные, так и выходные, и обратите внимание на побочные эффекты.
  3. Уточните суть задания и озвучьте ваши предположения, чтобы интервьюер понимал ход ваших мыслей. Например, какие будут объемы данных и кто станет пользователем.
  4. Подыщите пример и озвучьте его интервьюеру, чтобы быть уверенным, что вы верно понимаете задачу. Не бойтесь потратить время, вникая в условия задачи. Чем лучше вы ее поймете, тем быстрее найдете оптимальное решение.
  5. Разработайте алгоритм. Постарайтесь решить похожую, но менее сложную задачу. Записывайте мысли, разбирайте в черновике примеры.
  6. Пройдитесь по своему алгоритму с примерами, чтобы убедиться, что код работает верно. Проверьте все критические и пограничные случаи.
  7. Оцените сложность алгоритма как по времени, так и по памяти.
  8. Если вам удалось придумать более эффективное решение проблемы, то вернитесь к пункту 4.
  9. Напишите решение, используя выбранный алгоритм. Разбейте проблему на несколько методов, если это допустимо в конкретном случае.
  10. Проверьте код на ошибки.
  11. Подумайте, как реализация алгоритма справляется с критическими и пограничными случаями.
  12. Проверьте реализацию на примере, просмотрите код на ошибки.
  13. Как только убедитесь, что код выполняется правильно, проверьте его чистоту и стиль.


Вот, собственно, и все!

© Habrahabr.ru