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

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

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

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

  1. Могу ли я объяснить, чем императивное программирование отличается от декларативного?
  2. Понимаю ли я, почему SQL считается декларативным языком?
  3. Могу ли я привести пример задачи, которую удобно решать в функциональном стиле?
  4. Знаю ли я, что такое чистая функция и какие у неё свойства?
  5. Понимаю ли я, как рекурсия заменяет циклы в функциональном программировании?
  6. Могу ли я описать, как работает логический вывод в Prolog?
  7. Знаю ли я, что такое факт и правило в логическом программировании?
  8. Понимаю ли я, почему логическое программирование плохо масштабируется на большие системы?
  9. Могу ли я объяснить разницу между процедурным и императивным программированием?
  10. Знаю ли я, как процедуры помогают избежать дублирования кода?
  11. Понимаю ли я, что такое точка входа в процедурную программу?
  12. Могу ли я привести пример события в веб-приложении?
  13. Знаю ли я, как обрабатываются события в JavaScript?
  14. Понимаю ли я, что такое обработчик события (event handler)?
  15. Могу ли я объяснить, почему GUI-приложения часто используют событийную модель?
  16. Знаю ли я, что такое поток данных (data stream) в реактивном программировании?
  17. Понимаю ли я, как работает автоматическое распространение изменений?
  18. Могу ли я сравнить реактивное и событийное программирование?
  19. Знаю ли я, какие библиотеки реализуют реактивный подход (например, RxJS)?
  20. Понимаю ли я, что такое сквозная логика (cross-cutting concern)?
  21. Могу ли я привести три примера сквозной логики в приложении?
  22. Знаю ли я, что такое pointcut и advice в AOP?
  23. Понимаю ли я, как AOP уменьшает дублирование кода?
  24. Могу ли я объяснить разницу между параллелизмом и конкуренцией?
  25. Знаю ли я, что такое гонка данных (race condition)?
  26. Понимаю ли я, зачем нужны примитивы синхронизации (мьютексы, семафоры)?
  27. Могу ли я привести пример задачи, требующей конкурентного выполнения?
  28. Знаю ли я, что такое горутины в Go или акторы в Erlang?
  29. Понимаю ли я, что такое метапрограммирование?
  30. Могу ли я привести пример метапрограммирования в Python (например, декораторы)?
  31. Знаю ли я, что такое макросы и как они работают в Lisp или Rust?
  32. Понимаю ли я, как ORM использует метапрограммирование для генерации SQL?
  33. Могу ли я объяснить, что такое DSL и как он создаётся?
  34. Знаю ли я, на каком уровне абстракции работает язык ассемблера?
  35. Понимаю ли я, почему C считается процедурным языком?
  36. Могу ли я описать, что даёт уровень фреймворков по сравнению с чистым языком?
  37. Знаю ли я, как фреймворк инвертирует управление (Inversion of Control)?
  38. Понимаю ли я, что такое время применения метапрограммирования (compile-time vs runtime)?
  39. Могу ли я объяснить принцип единственной ответственности на примере функции?
  40. Знаю ли я, как применить принцип открытости/закрытости без использования наследования?
  41. Понимаю ли я, почему наследование не всегда подходит для расширения поведения?
  42. Могу ли я привести пример нарушения принципа подстановки Лисков вне ООП?
  43. Знаю ли я, как принцип разделения интерфейса применяется к функциям или модулям?
  44. Понимаю ли я, что значит «зависеть от абстракции, а не от реализации»?
  45. Могу ли я реализовать внедрение зависимости без использования DI-контейнера?
  46. Знаю ли я, как протестировать модуль, зависящий от внешнего сервиса, с помощью абстракции?
  47. Понимаю ли я, почему высокоуровневые модули не должны зависеть от низкоуровневых?
  48. Могу ли я спроектировать систему, где бизнес-логика не знает о деталях базы данных?
  49. Знаю ли я, как выбрать подходящую парадигму для конкретной подзадачи?
  50. Понимаю ли я, что смешанный стиль программирования — это осознанный выбор, а не хаос?

Освоение главы0%