Расскажите о своем опыте и обязанностях на текущем месте работы
Что проверяют
В какой части мира C++ вы живёте. Опыт здесь расходится сильно: системный код, обработка данных, встраиваемые устройства, игры, старый проект на древнем стандарте. Интервьюер выясняет, какой стандарт у вас в проде, чем собираетесь и как в проекте устроена работа с памятью и многопоточностью.
Как отвечать
Опишите систему и её требования: что она делает, что для неё критично (задержка, пропускная способность, объём памяти, надёжность), под какие платформы собирается.
Дальше по существу:
- стандарт и почему такой: если проект застрял на старом, скажите прямо и добавьте, что из современного успели внести;
- владение ресурсами: RAII, умные указатели, где сознательно оставлен сырой указатель как невладеющий;
- копирование и перемещение: где это влияло на скорость, как избавлялись от лишних копий;
- многопоточность: примитивы синхронизации, пойманные гонки и чем ловили, например санитайзерами;
- сборка и зависимости: CMake, время сборки, разбиение на цели, тесты;
- отладку сложного: дампы, профилировщик, воспроизведение плавающего дефекта.
Один дефект, рассказанный до конца, например порча памяти, найденная санитайзером, весит больше перечня технологий.
Где спотыкаются
Приносят проценты из заготовки: «улучшил производительность на тридцать, память на двадцать». В C++ такое меряется бенчмарком на конкретном сценарии, и первый же вопрос про методику замера обнуляет ответ.
Второе: говорят про современный C++ лозунгами. Фраза «использую умные указатели» ничего не стоит без понимания, чем unique_ptr отличается от shared_ptr по стоимости и почему shared_ptr везде это не улучшение, а плата за атомарный счётчик и риск циклических ссылок.
Третье: путают оптимизацию с гаданием. Если инструмент замера не назван, интервьюер решит, что вы правили код по ощущениям, а не по профилю, и попросит объяснить, почему стало быстрее.