- Введение в Agile Development
- Clean Code
- Рефакторинг
- Scrum
- Test-Driven Development
- Unit Testing
- eXtreme Programming
- SOLID: Object-Oriented Design Principles
- Дизайн презентационного слоя
- Domain-Driven Design
- Data Access
- Kanban
- Agile Software Testing / QA
- Понятия содержания и охвата методологии
- Приведите различнные закономерности, объединяющие размер команды, методологии и сложность решаемой проблемы
- Какие факторы повлияли на содержание первых методологий разработки
- Достоинства и недостатки каскадной модели
- Определение методологии программирования
- Определение ГТР (на примере XP)
- Манифест ГТР
- Приведите 3-4 принципа ГТР
- Основные черты ГТР
- Факторы, противодействующие внедрению ГТР
- Признаки хорошего и плохого кода
- Ключевые понятия при разговоре о качестве кода, их использование.
- Рекомендации по оформлению функций
- Рекомендации по именованию
- Комментарии и чистый код. Примеры плохих комментариев, почему они считаются code smell.
- Ключевые принципы
- Почему важно поддерживать код в чистоте
- Определение рефакторинга и его цели.
- Техника безопасности.
- Понятие технического долга.
- Примеры запахов (code smell) и способы их устранения (3-5 примеров).
- Примеры рефакторингов (конкретных приемов), не менее 6 штук.
- Жизненный цикл Scrum-проекта.
- Жизненный цикл спринта.
- Роли в Scrum, их основные ответственности.
- Артефакты в Scrum, правила работы с ними (Product и Sprint backlog, Burndown chart).
- Основные практики Scrum.
- Daily Scrum / Stand-up meeting: назначение, правила проведения.
- Ретроспектива: назначение, правила проведения.
- Что такое TDD, его назначение
- Мифы о TDD
- Цикл разработки по TDD (в виде рисунка и с максимумом деталей)
- Атрибуты хорошего unit-теста (включая AAA)
- Какие преимущества дает модульное тестирование?
- Какого уровня сущности тестируются модульными, интеграционными и приемочными тестами?
- Как выглядит иерархия (пирамида) тестов в приложении?
- Назовите популярные структуры / паттерны для тестов?
- Какие вы можете назвать стили именования тестов?
- Что тестируют тесты на состояние и на поведение?
- Назовите критерии хороших тестов.
- Определение XP
- Круг решаемых проблем
- Ценности XP (на всех уровнях)
- Жизненный цикл XP проекта
- Рабочее окружение
- Практики XP
- Парное программирование (роли, ответственности, преимущества)
- Метафора: назначение практики, примеры
- Внедрение XP (алгоритм, важные моменты которые нужно учитывать)
План ответа про каждый из SOLID принципов:
- Формулировка, раскрыть все слова названия.
- Как достигается.
- Негативные последствия нарушения. К каким "болезням" дизайна может привести нарушение принципа?
Вопросы:
- Термины: жесткость, хрупкость, неподвижность, вязкость
- SRP
- OCP
- LSP
- ISP
- DIP
- Закон Деметры (что можно, чего нельзя)
- Типичные проблемы с GUI (ответственности, тестирование, переносимость).
- Диаграмма Passive View. Ответственности слоев.
- Назначение и преимущества применения Passive View.
- Диаграмма MVVM. Ответственности слоев.
- Назначение и преимущества применения MVVM.
- Понятие Domain, Model. Назначение DDD.
- Необходимые условия для применения DDD.
- Нарисовать диаграмму DDD (“улучшенная” слоистая архитектура).
- Назначение сборки Application.
- Назначение Infrastructure, способ стыковки с Domain.
- Data Access Layer. Ответственность. Связи с другими слоями.
- Что такое ORM. Примеры использования. Преимущества и недостатки.
- ActiveRecord. Примеры. Преимущества и недостатки.
- Чем плохо просто бросить таблицу на форму?
- Цели TPS
- Принципы TPS
- Практики Канбан
- Принципы внедрения Канбан
- В чем смысл ограничения WIP? Приведите примеры того, где это помогает оптимизировать процесс.
- Назовите сходства Scrum и Kanban
- Назовите отличия Scrum и Kanban
- Виды автоматических тестов
- V-Model разработки ПО
- Недостатки традиционного подхода к тестированию
- Эволюция взглядов на интеграцию
- Ответственность Agile-разработчика за качество
- Ответственность Agile-тестировщика
- Полезные практики автоматизированного тестирования
- Виды автоматического анализа качеста кода