За годы проведения технических собеседований я обнаружил, что эти вопросы полезно задавать. Некоторые из них являются базовыми вопросами, некоторые - нет. Некоторые ожидают кратких ответов и вопросов более или менее типа «да или нет», в то время как некоторые более открыты и не принимают верного ответа.
Эти вопросы предназначены для опытных разработчиков JavaScript с обычно 3–8-летним опытом, и список, очевидно, адаптируется (часто на лету) в зависимости от должности, на которую претендует кандидат (полный стек, интерфейс или серверная часть), его / его опыта и резюме. . Цель состоит в том, чтобы быть как можно более широким и сделать так, чтобы интервью выглядело как приятное обсуждение, а не, гм ... техническое интервью. Типичная продолжительность - 1 час 15 минут - 1 час 30 минут.
Вопросы по JavaScript / грамматике
- Объясните разницу между == и ===
- Что такое истинные и ложные ценности?
- Что делает метод .bind () функции и что это за сигнатура?
- Объясните основное различие между .call () и .apply ().
- Что такое примитивы в JavaScript?
Еще несколько открытых вопросов, включая функциональное программирование
- Какие гарантии предлагают стрелочную функцию? Предположим, их не существует, что вы будете делать?
- Предположим, что ключевое слово class не существует, что вы делаете?
- Что такое обещание? Зачем использовать обещания вместо обратных вызовов?
- Что такое асинхронная функция?
- Каковы преимущества чистой функции?
- Что такое побочный эффект?
- Каковы преимущества / недостатки использования неизменяемых структур?
- Каковы сигнатуры функций .map () и .reduce () массива? Объясните, как реализовать .map () с .reduce ().
- Что такое каррирование и / или частичное применение?
- Что такое мемоизация?
- Что вы можете сказать об операторе спреда?
Вопросы по React
- Каковы преимущества / недостатки использования React?
- Кратко объясните виртуальный DOM и проблемы, которые он решает.
- Что такое JSX? Можете объяснить, как заставить его работать в браузере? Предположим, JSX не существует или не может использоваться, что вы делаете?
- Зачем вам нужен менеджер состояний и когда нужно добавить его в стек?
- Как вы запускаете рендеринг в React?
- Какой метод вы реализуете, используя классы, если хотите предотвратить рендеринг компонента? В чем сигнатура этого метода? Как бы вы сравнили глубокие / сложные структуры, если бы вам пришлось?
Вопросы, касающиеся межсетевого взаимодействия с {передним | сервером}
- Какие проблемы обычно возникают при использовании REST API? Что вы можете сказать о версиях?
- Наряду с GET и POST назовите еще четыре HTTP-команды.
- Объясните преимущества и недостатки использования GraphQL и REST API.
- Кратко объясните, что такое cookie.
Вопросы по тестированию
- Какие фреймворки вы используете при тестировании?
- Кратко объясните, что такое покрытие кода.
- Что такое библиотека утверждений?
Вопросы о Node.js / backend
- Является ли JavaScript многопоточным? Как вы масштабируете Node.js?
- Было бы неплохо обслуживать статические файлы с помощью Node.js?
- Предположим, вы не можете использовать экспресс, что вы делаете?
- Как вы обычно обрабатываете аутентификацию в Node.js? Какую библиотеку вы используете?
- Как вы храните пароль в базе данных?
- По вашим собственным словам, что такое транзакция базы данных? Что вы можете сказать о КИСЛОТЕ? Не могли бы вы подробнее рассказать об изоляции?
- Почему люди обычно используют распределенные базы данных? Кратко объясните, что может пойти не так с согласованностью.
- Что обычно может пойти не так с кешированием?
Вопросы по внешнему интерфейсу
- Как вы объединяете ресурсы внешнего интерфейса?
- Объясните трудности / проблемы использования CSS и какие инструменты вы используете сегодня для их решения?
- Кратко объясните полифиллы.
- Предположим, Webpack не существует, что вы делаете?
Еще несколько общих вопросов
- Какие инструменты вы используете для управления зависимостями в JavaScript? Что вы можете сказать о семвере? Что такое детерминированная сборка?
- Как решить, когда добавлять зависимость в стек? Предположим, вы нашли в npm несколько библиотек, которые решают вашу проблему, как выбрать, какую из них использовать?
- Можете рассказать анекдот про программистов? :)
Вопросы, касающиеся git / контроля версий
- Как создать ветку из командной строки?
- В чем разница между удаленным и исходным?
- Как получить изменения из удаленного репозитория?
- Что делает git rebase --interactive?
- Когда обычно используется git stash?
- Что делает git cherry-pick?
- Когда становится опасно переписывать историю?
- Объясните, почему сообщение «Устранить некоторые проблемы» - плохое сообщение о фиксации.
В конце собеседования я всегда спрашиваю, есть ли у кандидата какие-то вопросы или другие технические темы, которые он хотел бы обсудить, которые мы могли пропустить. Некоторые вопросы являются более сложными, и я избегаю их задавать, если несколько намеков во время обсуждения заставят меня поверить в то, что кандидату будет сложно на них ответить; ключ в том, чтобы всегда стараться сделать интервью / обсуждение приятным моментом.
Надеюсь, вы нашли этот список полезным. Не стесняйтесь делиться своими мыслями в комментариях ниже.