Мои ответы на вопросы собеседований из 39 уровня

Список вопросов:
1. Что такое web-сервер?
2. Что такое Tomcat?
3. Что такое сервлеты и где они используются?
4. Какие режимы запуска приложений в IDEA вы знаете?
5. Можно ли дебажить приложение/сервлет, которое запущено внутри Tomcat’а?
6. Как в IDEA установить точку остановки?
7. Как в IDEA посмотреть список всех точек остановки?
8. Можно ли с помощью IDEA поменять значение переменной в процессе работы программы?
9. Как в IDEA настроить отступы?
10. Как в IDEA настроить, чтобы { отображалось на той же строке, а не на новой?

Мои ответы:
1. Веб-сервер — это сервер, принимающий HTTP-запросы от клиенты (чаще всего — браузеров) и выдающий им HTTP-ответы, как правило вместе с HTML-страницей, изображений, файлом, медиа-потоком и другими данными.

2. Apache Tomcat — это контейнер сервлетов, разработанный компанией Apache Software Foundation. Реализует спецификацию сервлетов и спецификацию JSP (JavaServer Pages) и JSF(JavaServer Faces). Позволяет запускать веб-приложения, содержит ряд программ для самоконфигурирования. Может выступать в качестве самостоятельного веб-сервера, в качестве контента (в сочении с Apache HTP Server), а также в качестве контейнера сервлетов в серверах приложений JBoss и GlassFish.

3. Сервлет — это Java-класс, наследуемый от класса HttpServlet и реализующий любые из методов: doGet(), doPost(), doPut(), doDelete(), а также init() и destroy(). Этот класс используется веб-сервером для обработки запросов и формирования ответов на эти запросы. Каждый запрос обрабатывается в отдельном потоке. Контейнер контейнер вызывает метод service() для каждого запроса. Этот метода смотрит на тим входящего запроса и пересылает его соответствующему методу. Если данный метода не реализован в сервлете, то этот метод вызывается у супер-класса, и обычно завершается возвращение ошибки инициатору запроса.

4. Приложение в IDEA можно запустить в двух режимах: обычный запуск приложения и запуск в режиме отладки. Обычный запуск приложения — это обычно его выполнение. В режиме отладки же приложение можно выполнять построчно. Также в этом режиме можно ставить точки останова (breakpoints) на некоторые строчки кода (программа будет выполнять как обычно, пока не встретит такую точку; как она её встретит, она остановится). Кроме того, этот режим позволяет смотреть значения переменных во время выполнения программы.

5. Да, это можно делать, и это можно делать даже из самой IDE. Например, чтобы запустить отладку сервлета из IDEA, нужно сделать следующее:
1) Зайти в найстроки отладки/запуска приложения
2) Добавить конфигурацию Remote
3) Далее выводится страница, где нужно изменить адрес хоста, на котором находится Tomcat, и порт
4) Открыть файл catalina.bat (для Windows) и исправить в нём строчку «set DEBUG_OPTS=». Туда нужно дописать следующее "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1985". Последнее число — это адрес порта, который мы указали на шаге 3.
5) Перестартовать Tomcat
6) Выставить точки останова в коде в нужных местах
7) Нажать Debug в IDEA
8) Отправить запрос
9) Произвести отладку из среды разработки

6. Либо можно нажать мышкой в поле между номером строчки и началом строки, либо встать на какую-то строчку и нажать на клавиатуре ctrl+F8, либо встать на строку и вверху в меню выбрать Run -> Toggle line BreakPoint.

7. Либо сочетанием клавиш ctrl+shift+F8, либо выбрать в меню Run -> View Breakpoints…

8. Да, есть такая возможность. Это можно сделать в режиме отладки. Во время отладки нужно в окне переменных выбрать нужную переменную и нажать F2, либо щёлкнуть по переменной правой кнопкой мыши и в открывшемся меню выбрать «set value», и ввести нужное значение переменной.

9. Нужно зайти в настройки (Settings), там выбрать Editor, потом — Code Style. Там уже можно изменить общий опции, либо изменить найстройки отступов для каждого поддерживаемого формата файла.

10. Нужно перейти по следующему пути Settings -> Editor -> Code Style -> Java -> Wrapping and Braces, и дальше в разделе Braces Placement изменять найстройки (для класса, метода, лямбда-выражений, других случаев).