Полное руководство по собеседованию с Frontend-разработчиками
Интервью - это сложно, особенно технические собеседования, когда от вас ждут, что вы будете думать, решать и анализировать все, в то время как интервьюер смотрит на вас. Но люди не осознают, что прохождение собеседования - это просто еще один навык, который можно отточить с помощью правильной информации и практики.
Итак, если вы прямо сейчас ищете работу Frontend-разработчика, вы попали в нужную статью, поскольку в этой статье вы найдете все, что вам нужно знать, чтобы подготовиться!
Какие вопросы вам следует ожидать?
У каждой компании своя собственная стратегия проведения собеседований, но, в конце концов, большинство из них попадают в одни и те же категории, и не имеет значения, проводите ли вы собеседование с GAFAM или небольшой технологической компанией. Вот самые распространенные темы, на которые вам предстоит пройти собеседование:
Вопросы по Javascript
Что ж, как Frontend-разработчик вы, очевидно, уже должны знать Javascript, но также от вас ждут, что вы понимаете, как он работает и ведет себя. Неважно, работаете ли вы в повседневной жизни с Angular / React / Vue, от вас ожидается знание основ.
Вот некоторые примеры вопросов:
A. Объясните, что такое цикл событий.
B. Объясните, что такое промисы.
C. Замыкания и контекст (что это такое).
D. В чем разница между стрелочной функцией и обычной функцией?
E. Реализуйте Array.prototype.map/reduce.
F. Что такое throttle/debounce функции? Реализуйте их.
G. Вопросы о прототипном наследовании Javascript.
Некоторые полезные ресурсы:
https://learn.javascript.ru/ - Современный учебник JavaScript
https://developer.mozilla.org/ru/docs/Web/JavaScript - MDN Web Docs
https://karmazzin.gitbook.io/eloquentjavascript_ru/ - Выразительный Javascript (2 часть)
http://bonsaiden.github.io/JavaScript-Garden/ru/ - JavaScript Гарден
Алгоритмы
Это правда, что вам вряд ли когда-нибудь понадобится проходить по бинарному дереву, работая Front-end разработчиком (конечно, есть исключения). Но, тем не менее, вопросы об алгоритмах очень популярны на собеседованиях (особенно если ваша цель - работать в GAFAM).
1. Вопросы, связанные с массивами или объектами
Пример:
1. Переверните строку
2. Напишите функцию, которая проверяет, является ли слово палиндромом.
3. По заданной строке символов верните наиболее часто встречающийся символ.
2. Вопросы BFS / DFS (обход дерева)
Пример:
1. Напишите функцию, которая решает лабиринт (лабиринт представляет собой многомерный массив со значениями 0 - стена, 1 - пол, 2 - выход). Функция получает координату начала, массив с лабиринтом и должна возвращать, можете ли вы выбраться из лабиринта.
3. Связанный список
Пример:
1. Переверните связанный список
2. Найдите n-й узел в конце связанного списка.
Вам также, вероятно, следует освежить свои знания о разнице между рекурсией и итерацией, а также о вычислительной временной сложности (time complexity) и вычислительной ёмкостной сложности (space complexity).
Некоторые полезные ресурсы:
Codewars (или любой другой аналогичный сайт, например HackerRank или LeetCode).
На что обращать внимание при решении вопроса об алгоритме
A. Не торопитесь решать, можно попросить несколько минут подумать.
B. Когда вы действительно начинаете решать, настоятельно рекомендуется говорить о том, что вы делаете, даже если вы не уверены в своих мыслях. Экзаменатор обычно старается понять ваш процесс мышления. Не всегда нужно достигать идеального и рабочего решения. Если вам неудобно говорить вслух или вы просто не привыкли к этому, потренируйтесь дома, решая несколько примеров вопросов.
C. Если можете, вам следует сначала написать свой план действий словами или псевдокодом. Это покажет интервьюеру, что вы не торопитесь решать вопросы и можете планировать.
D. Если вы застряли в начале, не паникуйте! Начни с простых вещей. Подумайте о вводе и выводе. Решайте крайние случаи.
E. Обратите внимание на эффективность кода вашего решения. Если вы понимаете, что сложность велика, произнесите это вслух и вместе с экзаменатором попытайтесь найти лучшее решение.
F. Задавать вопросы - это нормально. Хороший экзаменатор постарается помочь вам найти решение.
Ж. Обычно ожидается, что вы будете в состоянии решать такие вопросы на доске / листе бумаги. Поскольку мы обычно пишем код не так, вам может быть труднее так думать. Это снова то, что стоит практиковать заранее!
React / Angular / Vue
В некоторых местах вам потребуется создать какое-то простое приложение с использованием определенного фреймворка / библиотеки. В зависимости от компании, это может быть либо домашнее задание, либо вам придется делать это в офисе компании. Если последнее, возьмите с собой собственный ноутбук, чтобы вы могли использовать собственную среду IDE и операционную систему.
В большинстве случаев вам будет предоставлен какой-то общедоступный API, и вам потребуется каким-то образом с ним работать.
Это делается для того, чтобы увидеть, как кандидат пишет реальный код, поэтому вот некоторые вещи, на которые следует обратить внимание:
A. Держите свой код в чистоте. Используйте отступы, укажите понятные имена переменных, удалите неиспользуемый код.
B. Используйте лучшие практики данной структуры.
C. Подумайте о таких вещах, как:
1. Не заваливать сервер ненужными запросами.
2. Позаботьтесь о таких крайних случаях, как если сервер будет недоступен, либо придет неверная информации от API.
D. Ваши навыки CSS тоже важны! Используйте Flexbox (не используйте float для выравнивания контейнеров 😉).
Логические вопросы
Я признаю. Я сам очень не люблю такие вопросы. Но некоторые компании до сих пор их спрашивают, особенно крупные.
Вы не можете по-настоящему подготовиться к таким вопросам (может конечно почитать в интернете, какие вопросы задаются), но просто знайте, что они существуют.
Пример:
Вы стоите в комнате с тремя выключателями. Все выключатели соответствуют трем разным лампочкам накаливания в соседней комнате, в которую вы не можете заглянуть, но можете зайти только один раз. Все выключатели изначально находятся в выключенном положении, как вы можете узнать, какой выключатель подключен к какой лампочке?
Говорить о себе
И последняя, но не менее важная часть, в которой вам нужно рассказать о своем прошлом опыте.
Если вы претендуете на свою первую работу в качестве разработчика, убедитесь, что у вас есть какой-то проект, которым вы увлечены, или, возможно, вы вносите свой вклад в какую-то библиотеку с открытым исходным кодом.
Будьте готовы обсудить все тонкости. Например, почему вы выбрали библиотеку A, а не B?
Если это не первая ваша работа, вам нужно будет рассказать о функции или продукте, за который вы отвечали на работе. В деталях. Интервьюер также, скорее всего, захочет услышать о вашем личном вкладе в работу команды.
Вам следует потренироваться в этом разговоре с другом, чтобы у вас была обратная связь! Вам будет намного легче, если вы придете подготовленным.
И самое главное: неудавшееся собеседование НЕ определяет вас!
Помните, что неудавшееся собеседование ничего не говорит о том, насколько вы хороший разработчик. Как я упоминал в начале, собеседование - это отдельный навык. В повседневной жизни в вашем распоряжении StackOverflow и коллеги, и вам не нужно писать код на листе бумаги. Собеседования - это не то, к чему вы привыкли, поэтому вам нужно попробовать несколько раз, чтобы понять, как это делается. Готовьтесь и учитесь, но не огорчайтесь, если не сдадите экзамен. Старайтесь извлекать уроки из каждого интервью, и в конечном итоге у вас все получится!
Кто хочет действительно узнать больше о собеседованиях, рекомендую ознакомиться с видео на канале: https://www.youtube.com/channel/UC72FljP7m2CyHynI5fQ_Puw
Источник: https://levelup.gitconnected.com/the-complete-guide-to-front-end-developer-interviews-e2f0f611c91e