Можно ли одновременно использовать в сервлете PrintWriter и ServletOutputStream
Нет, нельзя. При попытке вызвать response.getWriter() после response.getOutputStream() (или наоборот) будет выброшено java.lang.IllegalStateException с сообщением о том, что другой метод вывода уже был вызван.
Это ограничение введено намеренно, поскольку оба потока пишут в один и тот же буфер ответа. PrintWriter добавляет слой конвертации символов, а ServletOutputStream работает напрямую с байтами. Их одновременное использование привело бы к непредсказуемому порядку данных в ответе и конфликтам кодировки.
Если нужно отправить смешанный контент (например, текст и бинарные данные), следует выбрать ServletOutputStream и самостоятельно конвертировать текст в байты: outputStream.write(text.getBytes(StandardCharsets.UTF_8)).
На собеседовании: достаточно назвать
IllegalStateExceptionи причину ограничения. Это частый вопрос-ловушка на знание Servlet API.