Загрузка…
Загрузка…
backend / middle / tech_screening
Формат
online
Стадия
tech_screening
Когда
within_week
Длительность
—
01
Поведенческий
Расскажите о себе с опорой на последние одно-два места работы: что за проект, за что отвечали, с какими инструментами работали, по какой методологии работала команда.
Вступительная часть от HR (Кристина), далее уточняющие вопросы от технического интервьюера (Григорий).
02
Поведенческий
Приходилось ли тебе работать в команде?
03
Поведенческий
Расскажи подробнее, как устроен процесс в команде: сколько человек, какой состав (тимлиды и т.д.), как устроен git flow.
Кандидат описал упрощённый flow: master → dev → feature-ветки → dev → release → master.
04
Поведенческий
Какой у вас таск-трекер? Как выглядит процесс от получения задачи до merge request?
Заметки
Название компании в распознанном тексте встречается как «магримата» и «гренатом» (вероятно, Гринатом — ИТ-компания Росатома); подразделение Атомкор разрабатывает HRM-систему для атомной отрасли (приём, увольнение, отпуска, расчёт зарплат, включая АЭС в Египте). Стек компании: PostgreSQL, TypeScript, Moleculer, Sequelize, Elasticsearch, Kafka; таск-трекер OpenProject, общение в Discord и Telegram; 200+ человек, 30+ разработчиков, 5 команд, ежедневные дейлики. Условия: оформление только по ТД (ТК РФ), нельзя ИП/самозанятость в IT, проверка службы безопасности, нельзя работать из-за границы, офис на Нагатинском проезде (Москва), возможен гибрид. Зарплатные ожидания кандидата: минимум $2000 (~140–150 тыс. руб.). Фидбэк обещали до пятницы; возможна короткая дополнительная встреча с директором по разработке. Кандидат — самоучка, 2,5 года в IT, фриланс и учебные проекты (NestJS, TypeScript, боты).
Стиль интервьюера
Технический интервьюер (Григорий) дружелюбный и поддерживающий: несколько раз просил расслабиться, говорил «нет правильного ответа», просил проговаривать мысли вслух, прощал незнание («ставим плюсик, бежим дальше»). Темп быстрый — широкий и неглубокий чек по многим темам, интервьюер ограничен по времени и часто сам перескакивал/подсказывал ответы. HR (Кристина) подробно отвечала на организационные вопросы.
Кандидат работал с Trello; описал процесс: checkout ветки с номером задачи, коммиты, merge request.
05
Поведенческий
Ваши merge request'ы кто-то проверяет? Как устроено код-ревью?
Кандидат: ревью делает более опытный разработчик (middle+).
06
Теория
Давай понакидываем отличия ES5 от ES6.
Кандидат назвал: промисы, async/await, новые импорты, const/let вместо var, spread-оператор, Map/Set.
07
Теория
Поговорим про event loop: расскажи, что это в принципе такое и как устроено.
Кандидат упомянул call stack, микро- и макротаски.
08
Теория
В какой последовательности выполняются микротаски и макротаски?
Follow-up к вопросу про event loop. Кандидат не смог вспомнить ответ.
09
Теория
Какие два подхода к реализации Telegram-бота существуют? (long polling и webhook)
Возник из обсуждения опыта кандидата с ботами (Telegram, Discord).
10
Теория
Знаешь ли, как и для чего используются type и interface в TypeScript?
11
Теория
Писал ли ты сложные дженерики (с extends, keyof и т.д.)?
Кандидат: пишет дженерики, но не более 2-3 параметров, сложные типы даются трудно.
12
Теория
Приходилось ли тебе самому писать декораторы — не нестовские, а собственные?
Кандидат рассказал про опыт с reflect-metadata, InversifyJS, TSyringe и DI-контейнерами.
13
Теория
Что такое dependency inversion? Расшифруй принципы SOLID по буквам.
Кандидат вспомнил Single Responsibility и букву D (dependency inversion), Open/Closed трактовал неточно (как инкапсуляцию).
14
Теория
Чем отличается type от interface в TypeScript?
Кандидат назвал разницу в наследовании: extends у интерфейсов против оператора & у типов.
15
Теория
Чем отличается интерфейс от абстрактного класса?
Кандидат не смог ответить.
16
Теория
Приходилось ли править tsconfig и зачем?
Кандидат: менял target компиляции, experimentalDecorators.
17
Теория
Кроме инкапсуляции — назови ещё два основных принципа (черты) ООП.
18
Теория
Как ты понимаешь полиморфизм?
Follow-up к вопросу про принципы ООП.
19
Теория
Приходилось ли писать тесты? Какие виды тестов знаешь (юнит, интеграционные, e2e)? Какие писал сам?
Кандидат писал юнит-тесты и однажды интеграционные; e2e не писал.
20
Теория
Используешь ли Swagger при работе с NestJS? Описываешь документацию декораторами?
21
Теория
Чем ещё, кроме декораторов, можно описать OpenAPI-документацию — например, в приложении на чистом Express?
Интервьюер сам подсказал ответ: YAML-файл с описанием эндпоинтов.
22
Теория
Какие встроенные модули Node.js можешь вспомнить?
Кандидат назвал path, fs, os.
23
Теория
Вы писали приложение, которое использует JWT-токены для авторизации? А bcrypt использовали?
24
Теория
С какими базами данных приходилось работать? С Elasticsearch работал?
С Elasticsearch кандидат не работал.
25
Теория
Какую ORM используешь в NestJS? Кроме Prisma что-нибудь трогал?
Кандидат назвал Prisma и Sequelize, ошибочно упомянул ClickHouse как ORM (это СУБД).
26
Теория
На каком протоколе основан HTTP-запрос? А что лежит ещё глубже (ниже TCP/IP)?
Кандидат ответил TCP/IP, глубже не смог.
27
Теория
С WebSocket работал?
Кандидат однажды работал с Socket.io.
28
Теория
С GraphQL работать удавалось?
В транскрипте звучит как «с графикой» — вероятно, распознанное «с GraphQL». Кандидат не работал.
29
Теория
Какая у тебя операционная система? С линуксовыми командами знаком? Приходилось ли деплоить?
Кандидат вручную деплоил бота на Ubuntu 20.04: MySQL, PM2, apt install.
30
Теория
Какие ещё линуксовые команды вспомнишь?
Кандидат назвал ls, cd, tab-автодополнение, nano.
31
Теория
Знаком ли с командой tail? Что она делает?
Интервьюер сам пояснил: просмотр файла с конца и слежение за логами в реальном времени.
32
Теория
Какой командой в Linux поменять права на файл?
Кандидат вспомнил chmod с подсказкой.
33
Теория
Как узнать, под каким пользователем ты сейчас находишься в системе?
Ответ: whoami.
34
Теория
Можешь накинуть отличия MySQL от PostgreSQL?
35
Теория
Пользуешься транзакциями? В каких случаях их нужно использовать?
Кандидат использовал транзакции в Prisma и Sequelize, привёл пример с оплатой.
36
Теория
Ставил ли индексы на таблицы в базе данных (не автоматические)?
Кандидат путал индексацию полей с индексами на таблицах БД; явные индексы на таблицах не делал.
37
Теория
Внешние ключи (foreign key) — устанавливал? Для чего они делаются?
Follow-up про консистентность/целостность и каскадное поведение при удалении.
38
Теория
Сиды писал? Миграции пишешь вручную или генерирует ORM?
Кандидат: сиды писал, миграции генерируются ORM, вручную не писал.
39
Теория
Что лучше — MongoDB или PostgreSQL? В каких случаях какую базу выбирать?
40
Теория
При работе с документоориентированными БД (Mongo) использовал Mongoose?
41
System design
В каких случаях можно сказать: «нет, ребята, давайте тут монолит напишем» вместо микросервисов?
Обсуждение микросервисов: у кандидата текущий проект на микросервисах (монорепа, NestJS).
42
Теория
Приходилось ли работать с фреймворком Moleculer?
Кандидат не работал; Moleculer — основной фреймворк на проекте компании.
43
Поведенческий
Расскажи о неудачном опыте в каком-то проекте — что не получилось, о чём жалеешь?
Кандидат рассказал, как в одиночку начал интернет-магазин на микросервисах и не потянул поддержку; follow-up: «а в чём была проблема собрать всё в одном месте?»
44
Теория
Приходило ли когда-нибудь понимание, что «вот здесь я воспользуюсь EventEmitter»? Когда он нужен?
Кандидат однажды писал свой EventEmitter; считает, что нужен в микросервисах с event-паттерном и в ботах.