Junior
Общие вопросы
- 
В чем заключаются основные принципы ООП? 
- 
Что такое сложность алгоритма? 
- 
Код работает неправильно. Что делать? 
- 
Объясните такие структуры данных, как стек и очередь. 
- 
Какие книги, связанные с программированием, вы читали? Что почерпнули для себя? 
- 
Что интересного нашли в новых стандартах С++ 17 С++ 20? 
- 
Что такое таблица ASCII? 
- 
Что такое Unicode? 
- 
Что такое паттерны проектирования и для чего их используют? 
- 
Паттерны Singleton, Strategy, Template-Method, Decorator? 
- 
Для чего нужны модульные тесты? 
- 
Как разница между модульными и интеграционными тестами? 
- 
Что такое TDD? 
Метапрограммирование 14. Что такое шаблонный класс и шаблонная функция?
- 
Что такое конструкторы? Какие типы вы знаете? 
- 
Может ли конструктор быть шаблонной функцией? 
- 
Может ли виртуальная функция быть шаблонной? 
- 
Что такое инстанциация шаблона? 
- 
Что такое специализация шаблона? Частичная специализация шаблона? 
- 
Расскажите об имплементации шаблонных классов в срр-файле. 
Препроцессор и компиляция 21. Как проходит процесс компиляции срр-файлов в бинарный файл?
- 
Что такое препроцессор? 
- 
Как работает препроцессор? 
- 
Какие знаете его команды? 
- 
Как работает директива include? 
- 
Как работает директива define? 
- 
Что именно линкует линкер? 
- 
Что такое оптимизация компилятора? 
- 
Что такое флажки компиляции? 
- 
Как защитить хедер от повторного включения? 
- 
Что делает директива include? 
- 
Как работают макросы? 
C 33. Как static влияет на глобальные / локальные переменные?
- 
Как сonst влияет на переменную? 
- 
Какие варианты использования extern вы знаете? 
- 
Какие варианты использования volatile вы знаете? 
- 
Какие есть битовые операции? 
- 
Что такое булева алгебра? 
- 
Расскажите об этапах разработки библиотеки или программы. 
- 
Что такое алгоритмы сортировки и какие вы знаете? 
- 
Какие алгоритмы работы со строками знаете? 
- 
Какие алгоритмы на графах знаете? 
- 
Где может храниться переменная? 
- 
Какая разница между calloc и malloc? 
- 
Для чего используют realloc? 
- 
Что такое указатель? 
- 
Какой размер имеет указатель и от чего он зависит? 
- 
Какие есть операции с указателями? 
- 
Что такое struct? 
- 
Как определить размер структур? 
- 
Что такое выравнивание в структурах? 
- 
Что такое union? 
- 
Каков размер union? 
C++ / OOP 54. Что такое класс?
- 
Какие основные типы данных в C++? 
- 
Что такое инкапсуляция? Как она реализуется в C++? 
- 
Какие есть встроенные типы в С++? 
- 
Что такое enum? 
- 
Как соотносится класс и объект? 
- 
Какая разница между структурой и классом? 
- 
В чем разница между private / protected / public и где они используются? 
- 
Какие методы класса являются стандартными для класса? 
- 
Что такое абстрактный класс и зачем он нужен? 
- 
Сколько занимает памяти объект пустой класс class A{}; ? 
- 
Что станет с функцией, если к ней добавить ключевое слово static? В контексте члена класса? В контексте метода класса? 
- 
Какие особенности статических полей класса? 
- 
В чем особенность константных методов-членов класса? 
- 
Как изменить поле класса в константном методе класса? 
- 
Какие методы можно вызвать из константных объектов? 
- 
Что такое куча и стек? Различия, принцип работы. 
- 
В чем разница между указателем и ссылкой? 
- 
Для чего нужен указатель на функцию? Как его объявить? 
- 
Что будет, если забыть вызвать delete? Когда освободится та память? 
- 
Что такое умный указатель? Какие умные указатели есть в стандартной библиотеке? 
- 
Как работает std::unique_ptr? 
- 
Как работает std::shared_ptr? 
- 
Расскажите о константности переменной, ссылки, указателя. Что такое константный указатель и указатель на константу? Размер указателя в памяти? 
- 
Расскажите о передаче аргументов по значению, ссылке и указателю. 
- 
Расскажите о порядке вычисления аргументов функции. 
- 
Что случится, если вернуть ссылку на временный объект? 
- 
Что такое перегрузка функции? Виды перегрузки. 
- 
Что такое явное и неявное приведение типов в С++? Расскажите о функциях явного приведения типов в C++. 
- 
Что такое инициализация переменной в if? 
- 
Что такое ленивые вычисления в С++? 
- 
Расскажите о циклах for и range-for. 
- 
Что делает ключевое слово auto? auto-определение return-типа, аргументов функции? 
- 
Чем отличаются delete и delete[]? Что случится, если вызвать delete у объекта, созданного через new[]? 
- 
Обработка ошибок в С++. Какие конструкции используют при обработке exception? 
- 
Можно ли выбрасывать exception из конструктора? Какие поля будут сконструированы, какие поля будут разрушены? 
- 
Что такое memory leak? 
- 
Можно ли выбрасывать exception с деструктора? 
- 
Как отловить деление на 0 в С++? 
- 
Как работают константные методы? 
- 
Что такое лямбда-функция в С++? Как получить доступ к переменным во внешней области видимости? 
- 
Для чего использовать namespace, anonymous namespace? 
- 
Как вызвать объект с nested namespace? 
- 
Как работают inline-функции? Может ли такая функция быть рекурсивной? 
- 
Что такое полиморфизм? 
- 
Для чего используется наследование? 
- 
Какие бывают типы наследования? 
- 
Для чего используют виртуальное наследование? 
- 
Как можно решить проблему ромбовидного наследования без использования виртуального наследования? 
- 
Что случится, если класс-наследник передать по значению в функцию, которая принимает базовый класс? 
- 
Что случится, если унаследоваться от базового класса, не имеющего виртуального конструктора? 
- 
Что случится, если вызвать переопределенную virtual function из конструктора? Может конструктор быть виртуальным? 
- 
Может ли иметь имплементацию pure virtual function? Что случится, если вызвать pure virtual function из конструктора? 
- 
Какие методы генерируются для класса по умолчанию? В каком случае такие методы не будут генерироваться? Как заставить компилятор добавить / удалить эти методы? 
- 
Как запретить наследовать класс? 
- 
Каков порядок конструирования и разрушения классов в иерархии? Порядок инициализации полей класса? 
- 
Какие есть способы инициализации полей класса? 
- 
Может ли деструктор быть виртуальным? 
- 
Что делает ключевое слово virtual? 
- 
Для чего используют виртуальный деструктор? 
- 
Что такое глубокое копирование? 
- 
Что такое виртуальные функции и зачем они нужны? 
- 
Как защитить объект от копирования? 
- 
Что такое семантика перемещения? 
STL / Algorithms 118. Из чего состоит STL?
- 
Какие алгоритмы применяли с STL? В чем преимущество использования алгоритмов перед собственноручно написанными функциями? 
- 
Расскажите о контейнерах стандартной библиотеки vector, list, map, unordered_map. 
- 
Какие знаете типы итераторов? Чем они отличаются? В каких контейнерах используются? 
- 
Какая разница между std::set, std::map std::unordered_multimap? 
- 
Что такое идиома remove-erase? 
- 
Как получить наименьшее значение типа? 
- 
Какая разница между std::map и std::hashmap? 
- 
Как подсчитать количество элементов в std::list? 
- 
Что такое сложность алгоритма и от чего она зависит? 
- 
В чем разница между vector и list и в каких случаях их лучше использовать? 
Многопоточность 129. Что вам известно о многопоточности?
- 
Что общего и отличного в процессах и потоках? 
- 
Как синхронизировать передачи информации между потоками? 
- 
Какая разница между мьютекс и семафором? 
- 
Что такое deadlock? 
- 
Является ли С++ thread-safe? 
- 
Что такое race-condition? 
- 
Как избежать состояния гонки? 
- 
Что такое атомарная операция? 
- 
Как работать с std::mutex? 
Networking 139. Что такое сокет?
- 
Какие операции можно делать с сокетом? 
- 
Какая информация нужна, чтобы создать сокет? 
- 
Какие бывают модели сетей? 
- 
Расскажите об уровнях модели OSI. 
- 
Расскажите об уровнях модели TCP/IP. 
- 
Что такое IP-адрес? 
- 
Для чего используется маска подсети? 
- 
Какая разница между IPv4 и IPv6? 
- 
Сколько памяти необходимо для хранения IPv4? 
- 
Зачем порт? 
- 
Сколько максимально может быть портов? 
- 
Какая разница между TCP и UDP? 
- 
Для чего такой ненадежный UDP-протокол? 
OS / Linux 153. Что такое менеджер пакетов?
- 
Какие бывают менеджеры пакетов? 
- 
Какие бывают дистрибутивы Linux? 
- 
Что такое PID? 
- 
Для чего используют файловые дескрипторы? 
- 
Расскажите о стандартных файловых дескрипторах процесса. 
- 
Что такое Pipe? 
- 
Что такое Named Pipe? 
- 
Что такое UID? 
- 
Расскажите о командах bash. 
SCM / CI / CD 163. Какие есть виды SCM?
- 
Для чего используют системы контроля версий? 
- 
Какие есть команды git? 
- 
Какие этапы во время коммита изменений? 
- 
Разница между git fetch и git pull? 
- 
Какие есть этапы решения merge conflict? 
Практические задания 169. Посчитайте количество единиц в произвольном числе.
- 
Структура по типу «односвязный список». Напишите функцию, которая разворачивает список. То есть первый элемент становится последним, а последний — первым. 
- 
Напишите реализацию функции int atoi(const char * str); преобразования строки в число. 
- 
Для структуры типа односвязный список напишите функцию вставки элемента. 
- 
Реализуйте класс vector. 
- 
Реализуйте бинарный поиск в массиве. 
- 
Реализуйте любую сортировку. 
- 
Реализуйте макрос для сравнения двух строк. 
- 
Реализуйте реверс строк. 
- 
Реализуйте перевода числа из строки в int. 
- 
Реализуйте подсчет слов в предложении. 
- 
Реализуйте подсчет чисел Фибоначчи. 
- 
Найдите такие элементы двух массивов, которые встречаются только в каждом из них. Желательно использовать STL. 
- 
Удалите из unordered_map элементы, которые делятся на 2, и выведите ключи этих элементов. 
- 
Напишите класс для логирования, который мог бы логировать в консоль или файл. 
- 
Напишите функцию для определения, является ли указанный год високосным. 
- 
Напишите функцию для определения, является ли заданное слово палиндромом. 
- 
Напишите реализацию паттерна Singleton. 
- 
Напишите реализацию std::vector с операциями: push_back, push_front, pop_back, pop_front, size, clear. 
- 
Напишите рекурсивный поиск значения в дереве бинарного поиска. 
- 
Напишите функцию, которая проверяет, является ли дерево сбалансированным. 
- 
Напишите функцию для поиска уникального элемента в массиве. 
Middle
Общие вопросы
- 
Какие курсы прошли или книги прочитали за этот год? Чему научились? 
- 
Что нравится и не нравится в С++? Чего не хватает? 
- 
Что интересного нашли в новых стандартах С++ 17 С++ 20 (конкретные фичи)? 
- 
Расскажите о фичах, которые появились в разных версиях языка. 
- 
Расскажите о модели памяти, которая появилась в стандарте С++ 11. 
- 
Что такое сериализация? Какие библиотеки знаете? 
- 
Какие знаете паттерны проектирования? 
- 
Что такое операционная система? Какие существуют типы по назначению? 
- 
Назовите основные составляющие и принципы работы ОС Linux в качестве примера системы общего назначения. 
10.Что такое SFINAE и PIMPL?
- Назовите порождающие, структурные и поведенческие паттерны программирования и приведите примеры их использования.
Препроцессор и компиляция 12. Расскажите о системах автоматизации билд-процесса.
- 
В чем разница между статической и динамической библиотеками? 
- 
В чем разница между исполнительным файлом и динамичной библиотекой? 
- 
Что такое DLL hell? 
- 
Что такое флажки компиляции (fPIC)? 
- 
В чем разница между дебажной и релизной сборками? 
- 
Что нужно для использования сторонней библиотеки? 
- 
Что такое internal linkage? 
C 20. Что будет, если дважды вызвать free?
- 
Как происходит вызов функции? 
- 
Как происходит передача параметров в функцию? 
- 
Как обрабатывается константность переменных? 
- 
Что означает ключевое слово inline? 
- 
Для чего используют выравнивания, можно ли его контролировать? 
- 
Расскажите о битовых полях. 
- 
Для чего нужен extern «C»? 
- 
Что будет, если в двух файлах сделать функцию с одинаковым именем и параметрами? На каком этапе возникнет ошибка? 
- 
Как экспортировать / импортировать функции из динамической библиотеки? 
- 
Какая разница между С-style приведением типов и C++ приведением? 
C++ 31. Что такое явное и неявное приведение типов в С++? Зачем делать explicit-конструктор?
- 
Что такое Uniform initialization? Aggregate initialization? 
- 
Что такое Reference to temporary object? Как продлить время жизни временного объекта? 
- 
Что такое делегирующий конструктор? 
- 
Что такое список инициализации? 
- 
Каков порядок инициализации полей класса? Что случится, если конструктор инициализирует поля в другом порядке? 
- 
Что случится, если инициализировать поле другим полем? 
- 
Что такое copy elision? Сколько раз будет вызван конструктор / деструктор у объекта, который возвращают по значению? 
- 
Что такое move-семантика? 
- 
В каких случаях будет сгенерирован конструктор копирования? 
- 
Чем отличается конструктор копирования от оператора присваивания? 
- 
При каких условиях в конструкторе можно выбросить exception? 
- 
Что такое конструктор по умолчанию? Для чего нужны default и delete? 
- 
Чем отличается интерфейс от абстрактного класса? 
- 
Какие виды полиморфизма в С++? 
- 
Как реализовано наследование в большинстве компиляторов? 
- 
Множественное наследование: за и против. 
- 
Виртуальное наследование и порядок конструирования. 
- 
Зачем использовать override? 
- 
Какие есть правила вывода типа при использовании auto? В каких случаях auto может привести к нежелательному копирования объекта? 
- 
Расскажите обо всех возможных способах использования ключевого слова static в С++. Что такое static initialization order fiasco? 
- 
Что делает вызов throw; в блоке catch? 
- 
Чем отличается constexpr от const? 
- 
Что такое const correctness? 
- 
В каком случае можно использовать const_cast? 
- 
Что такое ключевое слово mutable и когда его нужно использовать? 
- 
Что такое ключевое слово friend и когда его нужно использовать? 
- 
Расскажите о лямбда-выражениях в С++ и доступе к переменным во внешней области видимости, захвате this в лямбду и времени жизни лямбды и захваченных переменных. 
- 
Что такое функтор? Напишите пример. 
- 
Что такое специализация шаблона? 
- 
Что такое dynamic_cast и run-time type identification? 
- 
Что такое exception? Как бросить и поймать? 
- 
Что будет, если бросить exception из конструктора? А из деструктора? 
- 
Что будет, если не поймать exception? 
- 
Что произойдет, если exception выйдет за пределы блока noexcept функции? 
- 
Для чего можно использовать приватное наследование? 
- 
Что такое контракт функции? 
- 
Что такое vptr и vtable? 
- 
Где содержится vptr? 
- 
Где содержится vtable? 
- 
Какая разница между overload и override? 
- 
Как компилятор различает члены класса и обычные переменные в функциях? 
- 
Зачем используют exceptions? 
- 
Что такое блоки try-throw-catch? 
- 
Расскажите о логике catch-блоков. 
- 
Что такое move constructor? 
- 
В чем разница между константным методом и неконстантным? 
- 
Что такое О-нотация и как определить сложность любого алгоритма? 
- 
Что такое таблица виртуальных методов? 
- 
Какие функции класса автоматически генерирует компилятор, если их определить? 
- 
Что такое выравнивание данных? 
- 
Что такое exception? 
- 
Какие есть стандартные контейнеры и на основе каких структур они построены? 
- 
Что такое Undefined behavior? Приведите примеры. 
- 
Как определить, что в программе есть memory leak? 
- 
Для чего нужен std::make_shared? Чем он лучше создания std::shared_ptr через конструктор? 
- 
Что будет, если выделить один объем памяти, а записать больше? 
- 
Что такое переполнение stack? 
Паттерны проектирования 89. Зачем нужны паттерны? Какие типы паттернов различают?
- 
Недостатки паттерна Singleton. Когда он уместен? 
- 
Преимущества и недостатки PIMPL. 
- 
В чем разница между паттерн-фабрикой и фабричным методом? Когда использовать какой из них? 
- 
Что такое паттерн Observer? 
- 
Как контролировать состояние программы? Машину состояний? Паттерн состояние? 
- 
Что такое паттерн Visitor? 
Метапрограммирование 96. Какие есть правила вывода типа в шаблоне?
- 
Чем отличается using от typedef? 
- 
Сколько памяти занимает произвольная структура? Что такое выравнивание объекта? 
- 
Почему пустая структура занимает 1 байт? Какая минимальная единица адресации в С++? 
OOP / OOD 100. Что такое SOLID? Что означает каждый из этих принципов?
- 
Расскажите о паттернах проектирования. 
- 
Что такое Dependency Injection? Приведите пример. 
- 
Какие преимущества и недостатки функционального подхода? 
- 
Что такое принцип RAII? 
- 
Что такое принцип DRY? 
- 
Что такое принцип KISS? 
- 
Какие преимущества композиции перед наследованием? 
STL / Algorithms 108. Какие алгоритмы с STL использовали? Каких не хватает?
- 
Какими особенностями должен обладать класс, чтобы он был итератором? 
- 
Какие бывают итераторы? 
- 
Расскажите о инвалидации итераторов. 
- 
Как оптимизировать удаление элемента из середины вектора? 
- 
Как реализован vector? 
- 
Как реализован list? 
- 
Как расширить STL-контейнеры? 
- 
Какие есть алгоритмы в STL? 
- 
В чем разница между vector, deque, list, set e STL? 
- 
Когда надо использовать map? Когда — unordered_map? Какова сложность поиска и вставки в этих контейнерах? 
- 
Как проверить, есть ли в контейнере элементы? Почему вызов container.size() является плохой практикой? 
- 
Что такое exception safety guarantee? Какую exception safety guarantee имеют STL-контейнеры? 
- 
Расскажите о типах умных указателей и подсчете ссылок в них. 
Многопоточность 122. Является ли С++ thread-safe?
- 
В чем разница между многопоточностью и асинхронностью? 
- 
Что такое многопоточность? Какую функциональность предоставляет С++ для разработки многопоточных приложений? Каковы основные проблемы многопоточных приложений? 
- 
Как передать информацию между несколькими процессами? 
- 
Как синхронизировать между собой несколько процессов? 
- 
Какие есть особенности работы с shared memory? 
- 
Как работает spinlock? 
- 
Какие вы знаете особенности использования recursive mutex? 
- 
Расскажите о read-write mutex. 
- 
Что такое race-condition? Взаимная блокировка? Что такое критическая секция? 
- 
Какие избежать состояния гонки? 
- 
Чем отличается мьютекс от семафора? 
- 
Какие примитивы синхронизации реализованы в C++? Преимущества lock_guard? 
- 
Что случится, если exception выйдет за пределы потока? Какие инструменты есть для безопасной асинхронности в С++? 
- 
Чем отличается std::launch::async от std::launch::deferred? 
- 
Что такое атомарная операция? std::atomic? 
- 
Как работать с std::conditional_variable? 
- 
Как создать поток с помощью std::thread? 
- 
На сколько потоков лучше разбить задачу? От чего это зависит? 
- 
Как работать с std::async? 
- 
Thread-safe гарантии контейнеров в С++. В чем недостаток интерфейса front() + pop_fornt()? 
Networking 143. Что такое TCP handshake?
- 
В чем разница между TCP и UDP? 
- 
Расскажите о протоколах верхнего уровня. 
- 
В чем разница между HTTP и HTTPS? 
- 
Расскажите о SSL/TLS handshake. 
SCM / CI / CD 148. Расскажите о процессах CI.
- 
Как отредактировать коммит? 
- 
Расскажите об интерактивном rebase. 
- 
Какие могут быть способы дебаггинга кода? 
- 
Для чего нужны Unit test? Чем они отличаются от Functional Test? 
- 
Как тестировать код? Какой фреймворк используете? 
- 
Какие библиотеки знаете для написания тестов? 
- 
Что такое mock? 
- 
Сколько тестов нужно написать на одну функцию? 
- 
Что такое побочный эффект, идемпотентность и чистые функции? 
- 
Что такое контейнеризация и в чем ее преимущества и недостатки? Что такое Docker или иной инструмент контейнеризации? 
- 
Что такое CI/CD и какие преимущества дает разработчику? 
- 
Каковы принципы итеративных методологий? 
- 
Какие преимущества и недостатки code-convention? 
Практические задания 162. Напишите максимально корректную реализацию класса string с конструктором копирования и оператором присваивания.
- 
Напишите реализацию очереди. 
- 
Реализуйте функцию, которая за один проход найдет уникальный элемент в контейнере. 
- 
Напишите thread-safe пул потоков. 
- 
Напишите игру «Жизнь» в ООП-стиле. 
- 
Напишите класс, который получает из базы список товаров по фильтру и показывает на консоли. Напишите тесты для него. 
- 
Любая задача на написание кода, чтобы проверить умение проектировать интерфейсы и придерживаться принципов SOLID, DRY, KISS. 
- 
Напишите свою реализацию std::atomic. 
- 
Напишите программу для анализа графов: нахождение циклов, deadlock-состояний, циклов, недоступных состояний. 
- 
Напишите программу, проверяющую, что в системе запущен только один ее экземпляр. Решение должно быть cross-platform. 
- 
Проанализируйте C++ код с точки зрения качества: выявить потенциальные memory leak, нерациональное использование STL-контейнеров, алгоритмов, неоптимальные конструкции и тому подобное. 
- 
Напишите код для решения судоку. 
- 
Напишите код, который найдет зацикливание в односвязном списке. 
Senior
Общие вопросы 1.Как вы понимаете SOLID?
- 
Как разработать систему плагинов на С++? 
- 
Что такое RPC? Какие библиотеки знаете? 
- 
На что обращать внимание при проведении code review? 
- 
Какие есть проблемы при написании кроссплатформенного кода? На что обращать внимание? 
- 
Что делать, если код работает медленно? 
- 
Какие есть способы и методология измерения быстродействия кода? Как можно устранить / уменьшить влияние замеров на быстродействие? 
8.Что такое SFINAE? Для чего используется?
- 
Что такое метапрограммирование? С помощью чего реализуется на С++? 
- 
Как использовать variadic templates? 
- 
Как тестировать закрытые методы? 
- 
Как считать покрытие тестами? Нужно ли это делать? 
13.Что такое cache miss и как это выявить?
- 
Что такое SIMD-инструкции? Каковы необходимые условия и способы их использования? 
- 
Что такое покрытие кода и как оно обеспечивается? 
- 
Опишите принципы lock-free структур данных и свой опыт работы с ними. 
Препроцессор и компиляция 17. Расскажите о построении билд-системы.
- 
Как работать с билд-системами: Make, CMake. 
- 
Как интегрировать third-party в проект? 
- 
Что такое барьеры памяти? 
- 
Расскажите о работе с сырыми указателями и ручном управлении памятью. 
- 
Что такое статический анализатор кода? Какие знаете? 
- 
Что такое динамический анализатор кода? Какие знаете? 
- 
Проект медленно собирается. Как можно ускорить? 
C / C++ 25. Расскажите об использовании realloc в контейнерах.
- 
Как работают шаблоны? 
- 
Расскажите о специализации шаблонов. 
- 
Как работает RTTI? 
- 
Можно ли использовать exception в конструкторе / деструкторе? 
- 
Что такое rvalue и lvalue? 
- 
В чем особенности контейнеров std::set, std::map, std::unordered_map, std::hash? 
- 
Что такое placement new? Для чего используют? Как сделать placement delete? 
- 
Как размещается в памяти класс с множественным наследованием и виртуальными функциями? 
- 
Как работают точки останова? 
- 
Что такое уязвимости? Механизм их работы? 
- 
Как написать собственный std::shared_ptr? 
- 
Что такое curiously recurring template pattern? 
- 
Опишите назначение и принцип работы std::shared_ptr, std::unique_ptr и std::weak_ptr. 
- 
Каково назначение и различия использования std::variant и std::any? 
- 
Какие улучшения получил std::search в С++ 17? 
- 
Что такое copy elision и когда становится возможным? Какие особенности для разных стандартов? 
- 
Что такое Return Value Optimization? 
OOP / OOD 43. Поясните принципы SOLID.
- 
Поясните принципы KISS. 
- 
Поясните принципы YAGNI. 
- 
Какие есть подходы к оптимизации кода? 
- 
На что стоит обращать внимание при code review? 
- 
Какие есть паттерны проектирования? Почему не советуют использовать Singleton? 
- 
Что такое статический полиморфизм? 
STL / Algorithms 50. Когда std::vector может использовать std::move?
- 
Расскажите о своем любимом алгоритме поиска. 
- 
Что такое lock-free и wait-free алгоритмы? В чем их отличия и способы реализации? 
- 
Опишите назначения execution policy для параллельных алгоритмов. 
Многопоточность 54. Расскажите о построении API, рассчитанных на многопоточное использование.
- 
В чем разница между kernel-level и user-level потоками? 
- 
Что такое coroutine? 
- 
Что делает спецификатор thread_local? 
- 
Как реализовать синхронизацию в задаче producer-consumer? 
- 
Как синхронизироваться между различными процессами? 
SCM / CI / CD 60. Расскажите о настройке процесса менеджмента ветвей репозитория.
- Расскажите о стратегии ветвления.
Практические задания 62. Напишите базовую реализацию std::shared_ptr.
- 
Реализуйте алгоритм сортировки. 
- 
Реализуйте алгоритм хеширования. 
- 
Реализуйте shared_ptr с расширением для weak_ptr. 
- 
Реализуйте простейший producer-consumer, используя условные переменные. 
- 
Опишите как можно подробнее, что происходит в системе, когда приложение делает сетевой запрос. 
- 
Детально описать дизайн программного компонента, например, системы голосования — учесть при этом высокую нагрузку и сделать его расширяемым и отказоустойчивым.