Перейти к основному содержимому

Чек-лист самопроверки

Разработчику Архитектору Инженеру

Чек-лист самопроверки

  1. Что такое процесс выполнения программы?
  2. Что такое поток выполнения?
  3. В чём разница между процессом и потоком?
  4. Почему потоки считаются «легковесными» по сравнению с процессами?
  5. Какие ресурсы разделяют потоки одного процесса?
  6. Какие ресурсы изолированы между разными процессами?
  7. Что такое гонка данных (race condition)?
  8. Какие механизмы синхронизации вы знаете?
  9. Что такое мьютекс и для чего он используется?
  10. Что такое семафор и чем он отличается от мьютекса?
  11. Что такое спинлок и когда его использование оправдано?
  12. Что такое атомарная операция?
  13. Почему атомарные операции не требуют явной блокировки?
  14. Что такое deadlock (взаимная блокировка)?
  15. Какие условия необходимы для возникновения deadlock?
  16. Что такое starvation (голодание) в контексте многопоточности?
  17. Что такое live-lock и чем он отличается от deadlock?
  18. Что такое конкурентность?
  19. Что такое параллелизм?
  20. Может ли система быть конкурентной, но не параллельной?
  21. Что такое стек вызовов (call stack)?
  22. Что такое куча (heap) и чем она отличается от стека?
  23. Что такое сборка мусора (Garbage Collection)?
  24. Как работает поколенческий сборщик мусора?
  25. Что такое утечка памяти и как она может возникнуть в управляемом коде?
  26. Что такое пул объектов и зачем он нужен?
  27. Что такое производительность программы?
  28. Какие основные метрики производительности вы знаете?
  29. Что такое latency (задержка) и throughput (пропускная способность)?
  30. Что такое узкое место (bottleneck) в системе?
  31. Что такое правило 90/10 в контексте оптимизации?
  32. Зачем нужно профилирование и чем оно отличается от простого замера времени?
  33. Что такое преждевременная оптимизация и почему её следует избегать?
  34. Как представляются целые числа в памяти компьютера?
  35. Что такое дополнительный код и зачем он используется?
  36. Что такое IEEE 754 и как он представляет числа с плавающей точкой?
  37. Что такое эндианность и почему она важна при работе с двоичными данными?
  38. Что такое битовые операции и где они применяются?
  39. Что такое исключение (exception) и как оно работает?
  40. Что такое раскрутка стека (stack unwinding)?
  41. Когда лучше использовать исключения, а когда — коды ошибок?
  42. Что такое неуправляемое исключение и к чему оно приводит?
  43. Зачем нужно логирование ошибок и какие уровни логирования существуют?
  44. Что такое асинхронное выполнение и чем оно отличается от синхронного?
  45. Что такое Event Loop и где он используется?
  46. Что такое callback и какие проблемы он может вызывать?
  47. Что такое корутины и как они упрощают асинхронное программирование?
  48. Как работают ключевые слова async и await?
  49. В чём разница между WebSocket и Server-Sent Events (SSE)?
  50. Какие современные технологии обеспечивают асинхронный обмен данными в вебе?
Освоение главы0%