Пишешь ли ты на C++
Что проверяют
Вопрос звучит формальностью, но это проверка калибровки: совпадает ли ваша самооценка с реальным опытом. Он открывает языковой блок, поэтому заявленный уровень определит сложность следующих задач. Сразу за ним обычно идёт «на каком стандарте пишете» и «где именно применяли».
Как отвечать
Конкретно и без завышений: сколько лет, в каком контексте, на каком стандарте. Ответ строится на вашем опыте, не на общих словах про язык.
- контекст: что за код (сервисы с требованиями к задержкам, обработка данных, встраиваемое, движок, десктоп на Qt), какого объёма и сколько вы его сопровождали;
- стандарт: назовите, чем собирается проект, и что из нового реально используете. C++17 сейчас нижняя планка живых проектов, C++20 доступен массово (концепты,
std::span, ranges, расширенныйconstexpr), C++23 поддержан компиляторами частично, модули по-прежнему упираются в сборочную инфраструктуру; - владение ресурсами: RAII как основа,
std::unique_ptrпо умолчанию,shared_ptrтолько там, где владение действительно разделено,weak_ptrпротив циклов. Семантика перемещения и правило пяти или нуля; - инструменты: сборка на CMake, зависимости через vcpkg или Conan, тесты на GoogleTest или Catch2, статический анализ
clang-tidy, санитайзеры-fsanitize=address,undefinedи thread в CI. Санитайзеры быстрее Valgrind и ловят неопределённое поведение, которого тот не видит; - честная граница: скажите, чего не делали. «Шаблонной метапрограммой не занимался, корутины видел только в чужом коде» звучит лучше, чем плавание на первом же вопросе.
Если C++ у вас второй язык, скажите прямо: назовите основной, а про C++ уточните, что читаете и правите чужой код.
Где спотыкаются
Отвечают «да» и ждут следующего вопроса. Пауза читается как отсутствие опыта, а вы потеряли возможность самому задать рамку разговора.
Заявляют «пишу на современном C++», а в коде сырые указатели, new и delete руками. Это вскрывается первой же задачей на владение ресурсом.
Называют стандарт, которым не пользуются. Сказать «C++20» и не объяснить, зачем в проекте концепты или std::span, хуже честного «собираемся под C++17, из нового взяли только string_view».