ДЛЯ НОВИЧКОВНЕ ДЛЯ НОВИЧКОВНЕ ОБЯЗАТЕЛЬНОВ РАЗРАБОТКЕ
Разработчику
Архитектору
Инженеру
Чек-лист самопроверки
- Могу ли я объяснить, чем императивное программирование отличается от декларативного?
- Понимаю ли я, почему SQL считается декларативным языком?
- Могу ли я привести пример задачи, которую удобно решать в функциональном стиле?
- Знаю ли я, что такое чистая функция и какие у неё свойства?
- Понимаю ли я, как рекурсия заменяет циклы в функциональном программировании?
- Могу ли я описать, как работает логический вывод в Prolog?
- Знаю ли я, что такое факт и правило в логическом программировании?
- Понимаю ли я, почему логическое программирование плохо масштабируется на большие системы?
- Могу ли я объяснить разницу между процедурным и императивным программированием?
- Знаю ли я, как процедуры помогают избежать дублирования кода?
- Понимаю ли я, что такое точка входа в процедурную программу?
- Могу ли я привести пример события в веб-приложении?
- Знаю ли я, как обрабатываются события в JavaScript?
- Понимаю ли я, что такое обработчик события (event handler)?
- Могу ли я объяснить, почему GUI-приложения часто используют событийную модель?
- Знаю ли я, что такое поток данных (data stream) в реактивном программировании?
- Понимаю ли я, как работает автоматическое распространение изменений?
- Могу ли я сравнить реактивное и событийное программирование?
- Знаю ли я, какие библиотеки реализуют реактивный подход (например, RxJS)?
- Понимаю ли я, что такое сквозная логика (cross-cutting concern)?
- Могу ли я привести три примера сквозной логики в приложении?
- Знаю ли я, что такое pointcut и advice в AOP?
- Понимаю ли я, как AOP уменьшает дублирование кода?
- Могу ли я объяснить разницу между параллелизмом и конкуренцией?
- Знаю ли я, что такое гонка данных (race condition)?
- Понимаю ли я, зачем нужны примитивы синхронизации (мьютексы, семафоры)?
- Могу ли я привести пример задачи, требующей конкурентного выполнения?
- Знаю ли я, что такое горутины в Go или акторы в Erlang?
- Понимаю ли я, что такое метапрограммирование?
- Могу ли я привести пример метапрограммирования в Python (например, декораторы)?
- Знаю ли я, что такое макросы и как они работают в Lisp или Rust?
- Понимаю ли я, как ORM использует метапрограммирование для генерации SQL?
- Могу ли я объяснить, что такое DSL и как он создаётся?
- Знаю ли я, на каком уровне абстракции работает язык ассемблера?
- Понимаю ли я, почему C считается процедурным языком?
- Могу ли я описать, что даёт уровень фреймворков по сравнению с чистым языком?
- Знаю ли я, как фреймворк инвертирует управление (Inversion of Control)?
- Понимаю ли я, что такое время применения метапрограммирования (compile-time vs runtime)?
- Могу ли я объяснить принцип единственной ответственности на примере функции?
- Знаю ли я, как применить принцип открытости/закрытости без использования наследования?
- Понимаю ли я, почему наследование не всегда подходит для расширения поведения?
- Могу ли я привести пример нарушения принципа подстановки Лисков вне ООП?
- Знаю ли я, как принцип разделения интерфейса применяется к функциям или модулям?
- Понимаю ли я, что значит «зависеть от абстракции, а не от реализации»?
- Могу ли я реализовать внедрение зависимости без использования DI-контейнера?
- Знаю ли я, как протестировать модуль, зависящий от внешнего сервиса, с помощью абстракции?
- Понимаю ли я, почему высокоуровневые модули не должны зависеть от низкоуровневых?
- Могу ли я спроектировать систему, где бизнес-логика не знает о деталях базы данных?
- Знаю ли я, как выбрать подходящую парадигму для конкретной подзадачи?
- Понимаю ли я, что смешанный стиль программирования — это осознанный выбор, а не хаос?