165.49K
Category: programmingprogramming

Вопросы на собеседовании: С++

1.

Вопросы на собеседовании: С++

2.

Категории вопросов на
собеседованиии
С++
Математика
Алгоритмы
Архитектура ПК
Геймдев (Unreal Engine 4, Unity)
Рендер (иногда)

3.

Приведение типов в С++
static_cast, когда можно применять
dynamic_cast и что такое RTTI (runtime type information). Как реализованы в с++
reinterpret_cast и почему это опасно
const_cast зачем и когда
C-style cast, когда это можно и почему плохо

4.

Типы полиморфизмов С++
Статический (compile time)
Перегрузка операторов
Перегрузка функций
Динамический (runtime)
Виртуальные функции

5.

Виртуальные функции
Что такое виртуальные функции и зачем они нужны
Как реализованы виртуальные функции
vtable и vptr
Где лежит vtable
Vtable и RTTI (type_id)

6.

Наследование
public, protected и private - наследование
Порядок вызовов конструкторов и деструкторов
Вызов конструктора с аргументом
Виртуальные деструкторы, зачем
Абстрактный класс. Как сделать.
Множественное наследование когда и зачем
Интерфейсы с точки зрения ООП. Чем отличается абстрактный класс от интерфейса
Ромбовидное наследование (diamond problem)
Как решать?
virtual наследование

7.

CV (const, volatile) - квалификаторы
const
const переменные, const члены класса
const int* ptr , int* const ptr , const int* const ptr
int const* ptr, int const*const
const-методы
Зачем нужны
Ключевое слово mutable
volatile
Зачем и когда применять

8.

static
static переменные внутри классов и функций. И где они лежат
static члены класса
static-переменные
static-функции

9.

Память
Как можно выделять память
new vs malloc, delete vs free
new vs new[], delete vs delete[]
Placement new
Int* ptr = new (&a) int;

10.

Умные указатели
std::shared_ptr
Как создавать (make shared), зачем
std::weak_ptr
std::unique_ptr
std::auto_ptr (легаси, удален в С++ 17)

11.

Контейнеры
Последовательные
std::vector
std::array
std::list
std::deque
std::forward_list
Упорядоченные ассоциативные
std::map, std::multimap
std::set, std::multiset
Неупорядоченные ассоциативные
std::unordered_map, std::unordered_multimap
std::unordered_set, std::unordered_multiset

12.

Итераторы и range-based-for
iterator vs const_iterator
Обход массива с помощью итераторов
Range based for
for (auto foo : fooCollection) vs for (auto& foo : fooCollection)

13.

С++ 11
Lambda-expressions
auto
std::function
enum class
Nullptr_t
constexpr (constexpr_if)

Move semantics

14.

Move semantics
R-value ссылки (int&& vs int& vs const int&)
std::move
Perfect forwarding и std::forward
Value-категории (pr, r, gl, l, x)

15.

template<typename T>
Шаблоны классов и шаблоны функций
Полные и частичные специализации шаблонов
SFINAE
std::enable_if
Type traits

16.

Многопоточность
std::thread
std::mutex, std::lock_guard, std::unique_lock
std::shared_mutex, std::shared_lock
Conditional variables
std::atomic
Lock-free data structures

17.

Прочее
Argument-dependent lookup (Koenig lookup)
Unity (blob) builds
Forward declarations
Передача по ссылке и значению

18.

Тестовые задачи
https://www.hackerrank.com/domains/cpp
Написать простую игру (например арканоид) за короткое время 4 часа
Реализация сложного функционала за неограниченное время
Raytracing
Render a scene

19.

Что почитать и как практиковать
Scott Meyers | Effective Modern C++
https://www.learncpp.com/
https://learnopengl.com/
http://thbecker.net/articles/rvalue_references/section_01.html - RValue references explained by Thomas
becker
https://www.fluentcpp.com/2018/05/15/make-sfinae-pretty-1-what-value-sfinae-brings-to-code/ - SFINAE
https://www.youtube.com/user/FamTrinli - 16 игр на SFML
https://www.sfml-dev.org/
https://www.hackerrank.com/domains/cpp

20.

Q&A

21.

Вопросы на собеседовании: С++
Пункт 1
Пункт 2
Пункт 3
English     Русский Rules