Собеседование C++. Разработчик из Яндекс
Запись тренировочного C++-собеседования с алгоритмическими задачами, вопросами по C++ и развёрнутым фидбэком кандидату. Темы включают списки, XOR, библиотеки, constexpr, шаблоны и многопоточность.
- Опубликовано на YouTube:
- Просмотры на YouTube: 39,3 тыс.
- Лайки на YouTube: 711
Таймлайн
Коротко о видео
Тренировочное собеседование на позицию Middle C++ Developer с кандидатом Фаритом: сначала обсуждают его опыт, затем решают алгоритмические задачи и разбирают темы языка C++. Кандидат реализует разворот односвязного списка, с подсказкой приходит к решению задачи о единственном уникальном элементе массива через XOR, а затем отвечает на вопросы о библиотеках, compile-time вычислениях, шаблонах и многопоточности. В финале интервьюер даёт обратную связь: отмечает удачное решение задач после наведения, но рекомендует глубже изучить сборку и библиотеки под Linux.
Затронутые темы
Что взять на заметку
- Отработать разворот односвязного списка за O(n) времени и O(1) дополнительной памяти через указатели current, previous и next; отдельно проверять пустой список и список из одного элемента.
- Для массива, где все элементы кроме одного встречаются дважды, помнить линейное решение с аккумулятором XOR: одинаковые значения взаимно зануляются.
- Уметь объяснить назначение статических и динамических библиотек, различия линковки и загрузки, а также собрать и подключить библиотеку на своей целевой платформе, в данном обсуждении — Linux.
- Различать возможность вычисления constexpr-функции на этапе компиляции и обязательное compile-time вычисление в контексте константного выражения; знать применение static_assert и шаблонных вычислений.
- Повторить хвостовую рекурсию и то, что её оптимизация компилятором зависит от условий и настроек сборки.
- Подготовиться к вопросам о std::thread: data race при неатомарном инкременте, необходимость join или detach до разрушения потока, std::terminate при нарушении этого правила и передачу исключений через std::exception_ptr.