Шпаргалка для стажера: пошаговое решение задач на собеседовании Google
В прошлом году последние пару месяцев я потратил на подготовку к собеседованию для стажировки в Google (Google Internship). Все прошло хорошо: я получил и работу, и отличный опыт.
Теперь, спустя два месяца после стажировки, я хочу поделиться документом, который использовал для подготовки к собеседованиям. Для меня это было чем-то типа шпаргалки перед экзаменом. Но процесс создания документа и постоянная пошаговая проверка по нему помогли мне запомнить все самое важное.
Я уверен, что любой человек может успешно пройти интервью в больших технологических компаниях, просто нужно некоторое время, чтобы понять, как устроены эти собеседования, и подготовиться к ним.
Моей шпаргалки вам хватит для подготовки к любому техническому интервью, будь то Google, стартап или ваша первая стажировка. Она поможет чувствовать себя более уверенно и во время подготовки, и на самом собеседовании.
На этом ресурсе вы можете потренироваться проходить собеседования. Участники по очереди интервьюируют друг друга (там есть аудио- и видеоканалы) и могут пользоваться общим редактором кода. Скорее всего, на первых таких собеседованиях вам будет непросто, и чувствовать себя вы будете неловко. Но чем больше вы тренируетесь, тем увереннее их проходите, а настоящее интервью после этого покажется несложным.
Хорошие вопросы с реальных собеседований в Facebook, Google, Microsoft, etc. Я советую использовать этот сайт вместе с ресурсами по практике кодинга, включая изучение алгоритмической сложности.
Книги
Cracking the Coding Interview
Мои любимые части: Interview Preparation Grid (стр. 32), раздел, посвященный поведению на собеседовании, а также Interview Questions: Data Structures (стр. 88–107). Если вы ранее не сталкивались с термином «алгоритмическая сложность», то сейчас самое время, книга отлично вводит в тему.
А что делать на собеседовании?
Не выключайтесь из коммуникации и отвечайте честно. Когда обдумываете вопрос, размышляйте вслух, описывайте ход своих мыслей.;
Добавьте немного юмора в общение, не бойтесь шутить. Попробуйте получить удовольствие от общения.;
Записывайте важную информацию.;
Задавайте вопросы и старайтесь использовать то, что узнали от интервьюера.
Собеседование шаг за шагом
А вот чек-лист для подготовки к ответу на собеседовании. Не обязательно использовать все пункты, пропускайте те, что кажутся вам ненужными. Главное — опирайтесь на здравый смысл. Даже если вы не дошли до самого конца списка, ничего страшного не случится.
Прочитайте вопрос.
Разберите все данные, как входные, так и выходные, и обратите внимание на побочные эффекты.
Уточните суть задания и озвучьте ваши предположения, чтобы интервьюер понимал ход ваших мыслей. Например, какие будут объемы данных и кто станет пользователем.
Подыщите пример и озвучьте его интервьюеру, чтобы быть уверенным, что вы верно понимаете задачу. Не бойтесь потратить время, вникая в условия задачи. Чем лучше вы ее поймете, тем быстрее найдете оптимальное решение.
Разработайте алгоритм. Постарайтесь решить похожую, но менее сложную задачу. Записывайте мысли, разбирайте в черновике примеры.
Пройдитесь по своему алгоритму с примерами, чтобы убедиться, что код работает верно. Проверьте все критические и пограничные случаи.
Оцените сложность алгоритма как по времени, так и по памяти.
Если вам удалось придумать более эффективное решение проблемы, то вернитесь к пункту 4.
Напишите решение, используя выбранный алгоритм. Разбейте проблему на несколько методов, если это допустимо в конкретном случае.
Проверьте код на ошибки.
Подумайте, как реализация алгоритма справляется с критическими и пограничными случаями.
Проверьте реализацию на примере, просмотрите код на ошибки.
Как только убедитесь, что код выполняется правильно, проверьте его чистоту и стиль.