fa
Feedback
Библиотека собеса по Java | вопросы с собеседований

Библиотека собеса по Java | вопросы с собеседований

رفتن به کانال در Telegram

Вопросы с собеседований по Java и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/08c603b6 Для обратной связи: @proglibrary_feeedback_bot

نمایش بیشتر
6 486
مشترکین
-524 ساعت
+47 روز
+1130 روز
آرشیو پست ها
Какими значениями инициализируются переменные по умолчанию? • Числа инициализируются 0 или 0.0; • char — \u0000; • boolean — false; • Объекты (в том числе String) — null. #вопросы_с_собеседований

Что такое «SQL»? SQL, Structured query language («язык структурированных запросов») — формальный непроцедурный язык программирования, применяемый для создания, модификации и управления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных (СУБД).

Для чего используется PushbackInputStream? Разновидность буферизации, обеспечивающая чтение байта с последующим его возвратом в поток. Класс PushbackInputStream представляет механизм «заглянуть» во входной поток и увидеть, что оттуда поступит в следующий момент, не извлекая информации. У класса есть дополнительный метод unread(). #вопросы_с_собеседований

При помощи чего формируются запросы к базе данных? Для выполнения запросов к базе данных в Java используются три интерфейса: ☕️ java.sql.Statement — для операторов SQL без параметров; ☕️ java.sql.PreparedStatement — для операторов SQL с параметрами и часто выполняемых операторов; ☕️ java.sql.CallableStatement — для исполнения хранимых в базе процедур. Объекты-носители интерфейсов создаются при помощи методов объекта java.sql.Connection: ☕️ java.sql.createStatement() возвращает объект Statement; ☕️ java.sql.prepareStatement() возвращает объект PreparedStatement; ☕️ java.sql.prepareCall() возвращает объект CallableStatement.

В чем разница между PrintWriter и ServletOutputStream? PrintWriter — класс для работы с символьным потоком, экземпляр которого можно получить через метод ServletResponse getWriter(); ServletOutputStream — класс для работы байтовым потоком. Для получения его экземпляра используется метод ServletResponse getOutputStream().

#вопросы_с_собеседований Что такое модификаторы доступа? Модификаторы доступа — это инструмент, при помощи которого можно настроить доступ к классам, методам и переменным. Бывают следующие модификаторы, упорядоченные в порядке повышения доступа: 1) private — используется для методов, полей и конструкторов. Уровень доступа — только класс, внутри которого он объявлен. 2) package-private (default) — может использоваться для классов. Доступ только в конкретном пакете (package), в котором объявлен класс, метод, переменная, конструктор. 3) protected — такой же доступ, как и package-private + для тех классов, которые наследуются от класса с модификатором protected. 4) public — используется и для классов. Полноценный доступ во всем приложении.

Расскажите об интерфейсе SingleThreadModel. Интерфейс SingleThreadModel является маркерным - в нем не объявлен ни один метод, однако, если сервлет реализует этот интерфейс, то метод service() этого сервлета гарантированно не будет одновременно выполняться в двух потоках. Контейнер сервлетов либо синхронизирует обращения к единственному экземпляру, либо обеспечивает поддержку пула экземпляров и перенаправление запроса свободному сервлету. Другими словами, контейнер гарантирует отсутствие конфликтов при одновременном обращении к переменным или методам экземпляра сервлета. Однако существуют также и другие разделяемые ресурсы, которые даже при использовании этого интерфейса остаются всё так же доступны обработчикам запросов в других потоках. Т.е. пользы от использования этого интерфейса немного и в спецификации Servlet 2.4 он был объявлен deprecated.

Какие существуют уровни изолированности транзакций? В порядке увеличения изолированности транзакций и, соответственно, надёжности работы с данными: • Чтение неподтверждённых данных (грязное чтение) (read uncommitted, dirty read) — чтение незафиксированных изменений как своей транзакции, так и параллельных транзакций. Нет гарантии, что данные, изменённые другими транзакциями, не будут в любой момент изменены в результате их отката, поэтому такое чтение является потенциальным источником ошибок. Невозможны потерянные изменения, возможны неповторяемое чтение и фантомы. • Чтение подтверждённых данных (read committed) — чтение всех изменений своей транзакции и зафиксированных изменений параллельных транзакций. Потерянные изменения и грязное чтение не допускается, возможны неповторяемое чтение и фантомы. • Повторяемость чтения (repeatable read, snapshot) — чтение всех изменений своей транзакции, любые изменения, внесённые параллельными транзакциями после начала своей, недоступны. Потерянные изменения, грязное и неповторяемое чтение невозможны, возможны фантомы. • Упорядочиваемость (serializable) — результат параллельного выполнения сериализуемой транзакции с другими транзакциями должен быть логически эквивалентен результату их какого-либо последовательного выполнения. Проблемы синхронизации не возникают.

Почему метод clone() объявлен в классе Object, а не в интерфейсе Cloneable? Метод clone() объявлен в классе Object с указанием модификатора native, чтобы обеспечить доступ к стандартному механизму поверхностного копирования объектов. Одновременно он объявлен и как protected, чтобы нельзя было вызвать этот метод у не переопределивших его объектов. Непосредственно интерфейс Cloneable является маркерным (не содержит объявлений методов) и нужен только для обозначения самого факта, что данный объект готов к тому, чтобы быть клонированным. Вызов переопределённого метода clone() у не Cloneable объекта вызовет выбрасывание CloneNotSupportedException.