Ответ
В моем опыте поиска работы C++ разработчиком процесс обычно состоит из 3-5 этапов.
- HR-интервью. Обсуждение моего опыта, мотивации и зарплатных ожиданий.
- Технический скрининг. Часто это онлайн-тест или короткий звонок с базовыми вопросами по C++ (например, обсуждение семантики перемещения, умных указателей) или задачами на алгоритмы.
- Углубленное техническое интервью. Один или несколько раундов, где я решал задачи на кодирование на C++ (часто на платформе вроде Codility), обсуждал тонкости языка (undefined behavior, управление памятью, многопоточность) и детали моих прошлых проектов.
- Системное проектирование (для Senior+). Меня просили спроектировать часть системы с учетом производительности, что для C++ часто связано с выбором структур данных, стратегий кэширования и межпроцессного взаимодействия.
- Финальное интервью с тимлидом/менеджером. Обсуждение командных процессов, code review и того, как мой опыт впишется в текущие задачи команды.
Например, на скрининге для C++ позиции мне задавали такой вопрос:
// Что не так с этим кодом и как это исправить?
std::string& getString() {
std::string local = "Hello";
return local; // Возвращается ссылка на локальный объект
}
Я объяснил, что это возврат ссылки на уничтожаемый объект (dangling reference), и предложил вернуть по значению или использовать умный указатель, если требуется динамическое выделение.