Подготовка к собеседованию по Java/J2EE

max аватар

  В чем разница между интерфейсом и абстрактным классом?

140
Находится в разделах:

Абстрактный класс может содержать код в телах методов, что является недопустимым в случае с интерфейсами. Работая с абстрактными классами, необходимо наследоваться от них. Также в java запрещено множественное наследование. Что касается интерфейсов - вы можете реализовывать их в своих классах.

max аватар

  В чем разница между классами String, StringBuffer/StringBuilder?

122
Находится в разделах:

Класс String:

Класс String является immutable - Вы не можете модифицировать объект String, но можете заменить его созданием нового экземпляра. Создание нового экземпляра обходится дороговато:

Кусок кода, в примере выше создаст 99 новых объектов String, 98 из которых будут тут же откинуты. Создание новых объектов неэффективно.

max аватар

  Что такое приведение типов? Объясните up casting/down casting. Когда происходит ClassCastException?

135
Находится в разделах:

     Приведение типов означает изменение типа переменной.  Когда используется upcasting примитивов, как показано ниже, слева направо, происходит автоматическая конвертация. Но если вы идете справа налево, необходимо делать downcasting или явное приведение. Кастинг в Java безопаснее, чем в С или других языках. Java производит конверсию только там, где это имеет смысл, например кастинг между float и int. Однако, вы не можете кастить между int и String. 

max аватар

  Какой порядок выполнения методов в апплете?

140
Находится в разделах:

 

  • public void init(): Инициализирующий метод, вызываемый браузером всего лишь раз
  • public void start(): Метод вызывается после метода init() и содержит код для запуска процесса. Если пользователь покидает страницу и возвращается без окончания текущей браузерной сессии, метод start() вызывается без предшествующего вызова init().
  • public void stop(): Останавливает выполнение, начатое методом start(). Выполняется, когда пользователь покидает страницу.
  • public void destroy(): Вызывается, если текущая браузерная сессия была прекращена. Освобождает все ресурсы, занятые апплетом.
max аватар

  Как конвертировать шестнадцатиричную строку в массив байтов (Hex String to byte[])?

133
Находится в разделах:

Перевод шестнадцатиричной строки в массив байтов (hex string to byte[])

Недостаток - отсутствует механизм верификации входной строки.

max аватар

  Что такое распределенные транзакции (JTA/XA)? Чем они отличаются от локальных транзакций?

133
Находится в разделах:

Существует два типа транзакций:

Локальные и распределенные.

max аватар

  Как EJB взаимодействует со своим контейнером и какие методы в entity beans называются call-back methods?

131
Находится в разделах:

EJB взаимодействует со своим контейнером посредством следующего механизма:

  • Call-back Methods: Любой EJB реализует интерфейс ( наследуется от EnterpriseBean ), который определяет несколько методов, которые оповещают бин о происходящих событиях в его жизненном цикле. В данном случае, контейнер несет ответственность за вызов этих методов. Эти методы оповещают бин, когда стоит в очереди на активацию, сохранение в базу данных, оповещает о конце транзакции, об его удалении из памяти и т.д. Пример entity bean  имеет следующие методы обратного вызова:

     

  • EJB Context: предоставляет методы для взаимодействия с контейнером так, что бин может запросить информацию о своем окружении.

  • JNDI (Java Naming and Directory Interface): позволяет EJB доступаться к ресурсам, таким как JDBC соединения, JMS темы и очереди, другие EJB.

max аватар

  Что такое version information в XML?

127
Находится в разделах:

Информация о версии в XML обрабатывается инструкцией:

Теги, начинающиеся с <?  и заканчивающиеся ?> называются инструкциями обработки. Обрабатывающие инструкции также могут быть использованы для вызова таблиц стилей для XML

max аватар

  Когда стоит использовать Serializable, а когда Externalizable?

131
Находится в разделах:

Изначально, Serializable использует дефолтовую имплементацию для чтения и записи объектов.  Для этого необходимо всего лишь реализовать интерфейс serializable для класса, а все остальное будет сделано за вас.

Externalizable же используется в тех случаях, когда Вы хотите описать свой вариант хранения и получения данных объекта. В таком случае, необходимо будет позаботиться о реализации собственных readExternal(), writeExternal() методов.

max аватар

  При каких условиях Вы определяете метод как абстрактный?

109

Когда я хочу, чтобы дочерний класс реализовал поведение этого метода.

max аватар

  Приведите простой пример реализации Observable и Observer

118

Для реализации модели Observable - Observer нам понадобятся два класса:

max аватар

  Servlet. Что такое сессия?

123

Сессия ссылается а все клиентские запросы к серверу. Сессия - специфическая для каждого пользователя и для каждого пользователя создается новая сессия для отслеживания всех запросов от этого пользователя. Каждый пользователь имеет отдельную сессию и отдельную переменную, ассоциированную с этой сессией. В случае веб-приложений, значение таймаута по умолчанию - 20 минут, которое может быть изменено по запросу.

max аватар

  Шаблон "Одиночка" (Singleton)

128

Это один из наиболее часто используемых шаблонов. Существуют несколько объектов в приложении, которые должны быть в одном экземпляре. 

Рассмотрим пример для более тщательного понимания:

Очень простой пример, скажем, логгер (Logger). Предположим, нам необходимо реализовать логгер и производить логгинг в файл в соответствии с временем и датой. В таком случае, мы не можем иметь более одного объекта логгера в приложении, иначе файл, в который будет производиться запись - будет создаваться с каждым новым объектом.

Мы используем одиночку для этого случая и создаем объект логгера при первом запросе или при старте сервера.

max аватар

  Что такое HttpSession в сервлетах? Просто и наглядное объяснение

131
Находится в разделах:

Что же такое сессия? 

Когда пользователь делает запрос на сервер, сервер создает временную сессию для идентификации пользователя. Когда тот же пользователь переходит на другую страницу сайта, сервер теперь может его идентифицировать. Сессия - это маленькое и временное уникальное соединение между сервером и пользователем и используется для идентификации пользователя среди других запросов или посещений на других страницах сайтов. 

 

Методы интерфейса HttpSession:

getAttribute(), getAttributeNames, setAttribute(), removeAttribute(). Эти методы используются для установки, получения и удаления объектов из сессии пользователя. 

getId(). Каждая сессия, созданная сервером, имеет уникальный id, ассоциированный с ней для идентификации сессии среди других сессий. Метод как раз возвращает такой id.

getCreationTime(). Возвращает long значение, определяющее дату и время создания данной сессии. 

getLastTimeAccess(). Возвращает значение long, обозначающее последний визит на сайте.

isNew(). Возвращает boolean, определяя новая ли сессия. Это значит, что если это первая страница на сайте, на которую нажал пользователь, то она или только что была создана сессия для пользователя, то  метод возвращает true.

invalidate(). Аннулирует сессию. Этот метод можно использовать на странице 'logout', позволяя пользователю закончить сессию. Если после этого пользователь снова зайдет на сайт - создастся новая сессия под него.

max аватар

  Какие существуют компоненты в J2EE?

97
Находится в разделах:

J2EE компонент - самодостаточный функциональный программный модуль, который является частью J2EE приложения, содержащий классы и файлы, а также взаимодействующий с другими компонентами. J2EE спецификация определяет следующие компоненты:

 

  1. Клиентские компоненты - клиенты приложений и апплеты.
  2. Сервлеты и JSP страницы - веб-компоненты.
  3. EJB - бизнес компоненты
  4. Адаптеры ресурсов (Resource adapter components) , предоставляемые EIS и поставщиками серверов приложений.
max аватар

  Как работасть с SVN из Eclipse + Subclipse (SVN) плагином позади прокси

98
Находится в разделах:

Когда вы работаете позади прокси, скорее всего у вас не будут пинговаться сайты по доменному имени. Эта проблема отражается также и на попытках SVN просматривать удаленный репозиторий. 

Ситуация:

1. Есть удаленный репозиторий по адресу http://svnX.xp-dev.com/svn/head

2. Eclipse + Subclipse, выдающим ошибку : 

max аватар

  В чем разница между конструкторами и другими методами?

122
Находится в разделах:

Конструкторы должны иметь такое же имя, как и класс, в котором они определены. Также, они не могут возвращать значения. Они вызываются лишь однажды, в то время как обычные методы могут вызываться бесчисленное количество раз.

max аватар

  В чем преимущества immutable объектов?

120
Находится в разделах:

  • Могут существенно упростить программирование, позволяя вам кешировать и распространять ссылки на объекты без копирования их значений и не переживая за целостность данных.
  • Являются безопасными в многопоточной среде, поэтому Вам не придется синхронизировать доступ к ним.  Отсюда следует, что нет никаких ухудшений производительности.
  • Исключает возможность отказа доступности данных при использовании в роли ключей для HashMap. 

max аватар

  Почему не рекомендуется отлавливать тип исключения “Exception”?

135
Находится в разделах:

   Механизм отлова исключений в java является полиморфическим по своей природе. Например, если вы отлавливаете тип Exception в своем коде, тогда он также может отлавливать или порождать своих потомков, как например IOException. Поэтому, если вы ловите тип Exception перед типом IOException, тогда тип Exception отловит  все исключения и  блок IOException никогда не будет достигнут. Чтобы отловить тип IOException и обработать другим методом, не таким, как Exception, IOException должен будет отловлен первым.