Загрузка…
Загрузка…
backend / middle / tech_screening
Формат
online
Стадия
tech_screening
Когда
within_quarter
Длительность
30 мин
01
Поведенческий
Расскажите кратко о вашем опыте: какие были задачи, чем занимались.
Вводный блок, кандидат рассказывал про телеком-проекты (TETRA, абонентская радиостанция, автоматизированный стенд проверки оборудования).
02
Теория
Что такое виртуальная функция?
03
Теория
Что такое перегрузка функции?
Задан как часть вопроса об отличии переопределения от перегрузки.
04
Теория
Что такое переопределение функции и чем оно отличается от перегрузки?
Интервьюер уточнял про переопределение именно виртуальных функций; кандидат сначала спутал с затенением (shadowing).
05
Теория
Чем перегрузка отличается от виртуальных функций, если в обоих случаях мы меняем поведение функции? В чём фундаментальная разница (статический против динамического полиморфизма, compile-time vs runtime)?
Интервьюер подводил к разнице compile-time / runtime выбора функции.
06
Теория
Какие виды наследования классов ты знаешь (public, private, protected) и в чём между ними разница?
07
Теория
Если ты отнаследовал один класс от другого и вызываешь функцию базового класса — что происходит с доступностью членов при публичном, защищённом и приватном наследовании?
08
Теория
Что такое статический метод (функция) класса и в чём его особенность?
09
Теория
Что такое this?
10
Теория
Можно ли вызвать метод базового класса?
11
Теория
Какие виды умных указателей ты знаешь (unique_ptr, shared_ptr, weak_ptr) и как они работают?
12
Теория
Можем ли мы в деструкторе объекта породить другой объект (например через new)?
13
Теория
Что будет, если в деструкторе появится исключение?
Кандидат упомянул про std::terminate при выходе исключения за пределы деструктора и про два одновременных исключения.
14
Теория
Бывают ли указатели на функцию?
15
Теория
Бывают ли ссылки на функцию?
16
Теория
Каким минимальным требованиям должен обладать класс, чтобы его можно было хранить в контейнере set?
17
Теория
Чем отличается map от unordered_map?
Кандидат разобрал красно-чёрное дерево vs хеш-таблицу и сложности операций.
18
Теория
Может ли поток перезапустить сам себя?
Интервьюер подводил кандидата: поток сам себя перезапустить не может, но перед выходом (return) может запустить новый поток, в т.ч. рекурсивно.
19
Теория
Какие основные виды памяти процесса бывают?
Ожидались: текст/код, статические данные, куча (динамическая), стек.
Заметки
Краткое (около 30 минут) первичное техническое скрининг-интервью по C++. Со стороны компании присутствовали HR и двое старших серверных разработчиков (Вова и Антон), которые в дальнейшем будут менторить. Кандидат — Илья, ~3 года опыта в телекоме (C++, протокол TETRA, встраиваемые системы, десктоп-разработка). Это первый этап; запланирован следующий, более глубокий технический этап. Компания явно не названа в тексте, но по ответам интервьюеров это разработчик игры (движок на ПЛИС/FPGA, интерпретатор старого Python 2 вкомпилирован в движок, бизнес-логика на Python; упоминаются ангар, батлпассы, танки, режим 'блиц', стейт-машины логики передвижения танка) — вероятно World of Tanks Blitz / Wargaming, но в самом тексте название не приводится.
Подготовка
Готовиться к базовым вопросам по C++ ООП (виртуальные функции, перегрузка vs переопределение, статический vs динамический полиморфизм, виды наследования и доступ к членам), STL-контейнерам (map vs unordered_map, требования к типу для set), умным указателям, деструкторам и исключениям, многопоточности и видам памяти процесса. Вопросы простые; на ряд можно отвечать кратко 'да/нет'. Полезно знать про игровой движок на ПЛИС и Python 2 в бизнес-логике.
Стиль интервьюера
Доброжелательный формат, общение на 'ты'. Интервьюеры активно помогают и наводят на ответ уточняющими подсказками (особенно по статическому/динамическому полиморфизму и перезапуску потока), несколько раз подбадривают кандидата ('ты уже ответил', 'вопросы простые, можно отвечать да/нет'). Используется стандартный список вопросов. HR обещает обратную связь до конца среды.