Запись учебного собеседования на позицию junior Node.js backend-разработчика. Вопросы охватывают JavaScript, алгоритмы, HTTP, Express, JWT, real-time и базы данных, включая две практические задачи.
Учебное собеседование с junior Node.js backend-разработчиком, который пришёл в разработку из гуманитарной сферы и, по его словам, учится около семи месяцев и недавно начал работать. Интервьюер проверяет JavaScript, структуры данных и алгоритмы, рекурсию, HTTP, Express, авторизацию, real-time-взаимодействие и базы данных, поясняя пропущенные моменты. В конце интервьюер положительно оценивает теоретическую базу кандидата, а кандидат называет недостатком нехватку практики.
Для проверки наличия собственного поля объекта различают `hasOwnProperty` и оператор `in`: последний ищет свойство также по цепочке прототипов.
Нужно уверенно объяснять `call`, `apply` и `bind`: первые два немедленно вызывают функцию, а `bind` возвращает новую функцию с привязанным контекстом; аргументы у `apply` передаются массивом.
`async`/`await` — синтаксис работы с `Promise`, а среди подходов к асинхронности обсуждаются callbacks, Promises и таймеры.
К собеседованию стоит повторить различия массива и связного списка, назначение `Set` и `Map`, принципы LIFO/FIFO для стека и очереди, а также оценку операций вроде доступа к элементу `Map` как O(1).
Практические задания были на рекурсивный обход бинарного дерева с суммированием `value` и на реализацию задержанного вызова функции: нужны базовый случай рекурсии, возврат результатов поддеревьев, замыкание, rest-параметры и корректный `this`.
По HTTP разбираются стартовая строка, заголовки и тело запроса, а в Express — роль middleware как последовательной обработки запроса.
Для backend-подготовки полезно различать JWT как строку из header, payload и signature, способы real-time (WebSocket, long polling, Server-Sent Events), реляционные БД и MongoDB, а также связи таблиц через внешний ключ.