-
Notifications
You must be signed in to change notification settings - Fork 6
/
C-C++
26 lines (24 loc) · 3.61 KB
/
C-C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Цитата из чата
"Я бы сказал, что в первую очередь для С/С++ важнее всего знать сам язык, стандартную библиотеку и устройство памяти. Все остальное вторично.
Если по порядку:
1. git — тут всё стандартно, ожидания от джуна аналогичны как в любом другом стеке (clone/pull/push/commit/checkout/аааа-я-сломал-репозиторий-памагити)
2. Процесс сборки:
2.1. Этапы сборки.
2.1.1. Препроцессинг, компиляция, линковка.
2.1.2. Что такое Multiply definition, Undefined reference
2.1.3. Как работают инклюды и для чего они нужны
2.2. Неплохо уметь вызывать компилятор напрямую, понимать какие у него есть основные ключики.
3. Системы сборки. Хорошо бы понимать как работает хотя бы одна-две системы сборки (make, cmake, ninja), если ты умеешь запускать программу только нажатием на зеленый треугольник в Visual Studio и не понимаешь как она собирается под капотом — это плохо.
4. Устройство памяти.
4.1. Стек, куча, статическая память: зачем нужны, чем отличаются, как работают
4.2. Как хранятся данные в памяти, что такое Big-Endian, Little-Endian, как хранятся вещественные числа, как хранятся строки, как хранятся структуры, что такое выравнивание
4.3. Размеры данных в памяти, что обеспечивает стандарт, а что нет
4.4. Адреса, арифметика указателей. Что будет если вместо array[10] написать 10[array]?
4.5. Примерно понимать что такое стек-фрейм, как на нем хранятся данные. Почему возвращать из функции указатель на локальную переменную плохо.
4.6. Понимать что такое сегфолт и почему он происходит.
5. ОС. Тут специфично, требования к виндовой, линуксовой и эмбеддед разработке могут значительно отличаться. Но я бы выделил такие плюс-минус общие пункты:
5.1. Что такое процесс, какой у него жизненный цикл, как появляется, как уничтожается, что в себе хранит.
5.2. Виртуальная память. Не надо прям досконально знать как происхоидт маппинг страниц, но в целом понимать что виртуальная память != физическая и что происходит отображение виртуальных адресов на физические знать нужно.
5.3. Сигналы.
Ну вот вкратце как-то так. То что я перечислил — это скорее джун+, миддл-, это больше чем нужно джуну в базовой комплектации.
https://github.com/evlinsky/cpp/tree/master/SPbU_F19-S20"