Чек-лист самопроверки
Чек-лист самопроверки
- Что такое процесс выполнения программы?
- Что такое поток выполнения?
- В чём разница между процессом и потоком?
- Почему потоки считаются «легковесными» по сравнению с процессами?
- Какие ресурсы разделяют потоки одного процесса?
- Какие ресурсы изолированы между разными процессами?
- Что такое гонка данных (race condition)?
- Какие механизмы синхронизации вы знаете?
- Что такое мьютекс и для чего он используется?
- Что такое семафор и чем он отличается от мьютекса?
- Что такое спинлок и когда его использование оправдано?
- Что такое атомарная операция?
- Почему атомарные операции не требуют явной блокировки?
- Что такое deadlock (взаимная блокировка)?
- Какие условия необходимы для возникновения deadlock?
- Что такое starvation (голодание) в контексте многопоточности?
- Что такое live-lock и чем он отличается от deadlock?
- Что такое конкурентность?
- Что такое параллелизм?
- Может ли система быть конкурентной, но не параллельной?
- Что такое стек вызовов (call stack)?
- Что такое куча (heap) и чем она отличается от стека?
- Что такое сборка мусора (Garbage Collection)?
- Как работает поколенческий сборщик мусора?
- Что такое утечка памяти и как она может возникнуть в управляемом коде?
- Что такое пул объектов и зачем он нужен?
- Что такое производительность программы?
- Какие основные метрики производительности вы знаете?
- Что такое latency (задержка) и throughput (пропускная способность)?
- Что такое узкое место (bottleneck) в системе?
- Что такое правило 90/10 в контексте оптимизации?
- Зачем нужно профилирование и чем оно отличается от простого замера времени?
- Что такое преждевременная оптимизация и почему её следует избегать?
- Как представляются целые числа в памяти компьютера?
- Что такое дополнительный код и зачем он используется?
- Что такое IEEE 754 и как он представляет числа с плавающей точкой?
- Что такое эндианность и почему она важна при работе с двоичными данными?
- Что такое битовые операции и где они применяются?
- Что такое исключение (exception) и как оно работает?
- Что такое раскрутка стека (stack unwinding)?
- Когда лучше использовать исключения, а когда — коды ошибок?
- Что такое неуправляемое исключение и к чему оно приводит?
- Зачем нужно логирование ошибок и какие уровни логирования существуют?
- Что такое асинхронное выполнение и чем оно отличается от синхронного?
- Что такое Event Loop и где он используется?
- Что такое callback и какие проблемы он может вызывать?
- Что такое корутины и как они упрощают асинхронное программирование?
- Как работают ключевые слова async и await?
- В чём разница между WebSocket и Server-Sent Events (SSE)?
- Какие современные технологии обеспечивают асинхронный обмен данными в вебе?
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Возможно, для обычного пользователя слово производительность означает показатель скорости выполнения программы. Технически, это то, насколько эффективно система использует ресурсы, чтобы выполнить… Как возникают, что собой представляют и как с этим бороться. Работа переменных, их значения и работа с ними в отладке. Цепочка вызовов — это последовательность методов или функций, которые вызывают друг друга в процессе выполнения программы. Что такое ресурсы, какими они бывают в работе и как их измерять. Что такое мёртвый код, переменные, методы, классы, импорты. Культура производительности — совокупность ценностей, практик и инструментов, направленных на обеспечение высокой производительности системы и процессов разработки. Таким образом, битовые операции — это базовый слой, через который реализуется любая логика. Они позволяют напрямую манипулировать составом данных, не полагаясь на абстракции языков высокого уровня.… В конечном счёте, архитектура выполнения — это баланс между абстракцией и контролем. Чем выше уровень абстракции, тем проще писать код, но тем меньше контроля над ресурсами. Разработчик должен уметь…Архитектура выполнения программ
Ошибки, исключения и отказоустойчивость
Отладка и видимость состояния
Вызовы и иерархия
Ресурсопотребление и метрики
Неиспользуемый код и технический долг
Сборка и культура производительности
Битовые операции и низкоуровневое представление данных
Итоги