Каким сборщиком проектов вы пользовались
Что проверяют
Вопрос про опыт, но за ним проверка: понимаете ли вы, что сборщик делает за вас, или только нажимали кнопку в IDE. Следом обычно просят рассказать, как устроен ваш последний pom.xml или build.gradle и как вы разбирались с конфликтом версий зависимостей.
Как отвечать
Назовите инструмент, проект и свою роль в сборке, а потом покажите, что знаете механику:
- Maven: декларативный
pom.xml, жизненный цикл из фаз (compile,test,package,verify,install,deploy), плагины привязаны к фазам. Версии в многомодульном проекте держат вdependencyManagementродительского POM или подключают BOM, напримерspring-boot-dependencies; - Gradle: граф задач, Kotlin или Groovy DSL, инкрементальная сборка, локальный и удалённый build cache, демон. Версии удобно держать в каталоге
gradle/libs.versions.toml; - wrapper:
./mvnwили./gradlewв репозитории фиксирует версию сборщика, и CI собирает тем же, чем разработчик; - диагностика:
mvn dependency:treeи./gradlew dependencyInsight --dependency <имя>показывают, откуда приехала транзитивная зависимость.
Дальше один или два случая из своей практики: перевели сборку с Maven на Gradle, настроили кэш в CI, вынесли общие настройки в convention-плагин, починили конфликт версий Jackson. Цифры берите свои и только те, что можете объяснить: «сборка в CI шла 12 минут, после кэша 5». Если работали только с одним инструментом, так и скажите и коротко сравните со вторым, это честнее придуманного опыта.
Где спотыкаются
Не знают, как разрешаются конфликты версий. В Maven побеждает ближайшая к корню дерева зависимость, в Gradle по умолчанию самая высокая версия, и один и тот же набор библиотек собирается по-разному.
Хвалятся профилями Maven под dev, test и prod, которые собирают разные артефакты. Сейчас принято собирать один артефакт, а окружение задавать конфигурацией при запуске.
Путают mvn package и mvn install. Второй кладёт артефакт в локальный ~/.m2, и сборка на вашей машине проходит только потому, что соседний модуль лежит там со вчерашнего дня. В чистом CI она падает.