Есть ли смысл определять для сервлета конструктор
Определять конструктор для сервлета нет смысла, потому что на момент вызова конструктора объект ServletConfig ещё не создан и параметры инициализации недоступны. Для инициализации данных следует переопределять метод init().
Контейнер сервлетов создаёт экземпляр сервлета вызовом конструктора без параметров через рефлексию (Class.newInstance()). Только после этого вызывается init(ServletConfig config), который предоставляет доступ к конфигурации. Поэтому любая инициализация, зависящая от конфигурации (подключение к БД, чтение параметров), должна выполняться в init().
Кроме того, в конструкторе невозможно выбросить ServletException, а в init() — можно, что позволяет корректно сигнализировать контейнеру о проблемах при инициализации.
На собеседовании: ключевой аргумент —
ServletConfigдоступен только вinit(), но не в конструкторе. Это следствие двухфазной инициализации: сначала создание объекта, затем его конфигурирование.