Java

Вопросы и ответы на собеседовании по теме Java Collection Framework. Часть 3.

1 часть.
2 часть.

Другое

1. Сравните интерфейсы java.util.Queue и java.util.Deque.

Согласно документации Deque ("дек", Double Ended Queue) - это линейная коллекция, поддерживающая вставку/извлечение элементов с обоих концов. Помимо этого реализации интерфейса Deque могут строится по принципу FIFO, либо LIFO.

Теги: 

Вопросы и ответы на собеседовании по теме Java Collection Framework. Часть 2.

Продолжение ответов на вопросы.

1 часть.
3 часть.

Object.equals() + Object.hashCode()

1. Могут ли у разных объектов в памяти (ref0 != ref1) быть ref0.hashCode() == ref1.hashCode()?

Да, могут. Метод hashCode() не гарантирует уникальность возвращаемого значения.

2. Могут ли у разных объектов в памяти (ref0 != ref1) быть ref0.equals(ref1) == true?

Да, могут. Для этого в классе этих объектов должен быть переопределен метод equals().

Теги: 

Вопросы и ответы на собеседовании по теме Java Collection Framework. Часть 1.

Недавно обнаружил подборку из более чем 90 вопросов на эту тему - http://habrahabr.ru/post/232311. Решил попробовать ответить на все из них.

Если обнаружите какую-либо ошибку либо захотите дополнить - напишите мне, пожалуйста, в комментариях либо на почту.

2 часть.
3 часть.

Общая иерархия

1. Расположите в виде иерархии следующие интерфейсы: List, Set, Map, SortedSet, SortedMap, Collection, Iterable, Iterator, NavigableSet, NavigableMap.

Теги: 

LazyInitializationException при использовании JSF SelectManyMenu.

Описание проблемы

Имеется коллекция сущностей (entity) JPA, которую необходимо использовать в качестве источника данных для компонента SelectManyMenu. В качестве JPA-провайдера используется Hibernate.

Часть кода JSF (PrimeFaces):

<p:selectManyMenu value="#{sourceBean.entitiesList}" converter="entityConverter">
     <f:selectItems value="#{sourceBean.selectedEntities}"
                    var="entity" itemLabel="#{entity.name}" itemValue="#{entity}" />
</p:selectManyMenu>

Компонент SelectManyMenu позволяет выбирать нужные элементы из списка.

Теги: 

Настраиваем Axis для работы с некорректными сертификатами при запросе по протоколу HTTPS.

Apache Axis - фреймворк, позволяющий создавать клиент-серверные приложения, использующие протокол SOAP для обмена сообщениями.

Описание проблемы: иногда возникает ситуация, когда серверное приложение использует HTTPS-соединение с некорректным сертификатом (к таким относятся самозаверенные, или self-signed, и неоплаченные сертификаты). В этом случае Axis выдает исключение javax.net.ssl.SSLHandshakeException каждый раз при попытке соединения. Рассмотрим вариант решения данной проблемы.

Теги: 

Пример использования библиотеки com4j.

Com4j - библиотека, предназначенная для интеграции java-приложений и dll-библиотек, использующих COM-технологию (Component Object Model).

Com4j автоматически импортирует библиотеку типов и генерирует необходимые java-классы.

В качестве примера рассмотрим подключение библиотеки TextAnalyst SDK для анализа содержания текста, смыслового поиска информации и множества других возможностей. Условно-бесплатную версию SDK можно скачать на сайте компании. В каталоге с программой есть 4 необходимые библиотеки: Base.dll, KB.dll, tp.dll и vocobj.dll. Также советую скачать документацию к SDK, в которой есть описание всех COM-интерфейсов и примеры использования на C++ и Visual Basic.

Теги: 

Каков результат операции 3.45 % 2.4?

Арифметическая операция % - взятие остатка от деления (деление по модулю). Определеяется как: a % b = a - (a/b) * b.

Применим данную операцию для чисел вещественного типа. Вот результат на Java:

Почему же в итоге получаем 1.05?

Ответ: операция % применима только для чисел целочисленного типа. При использовании вещественных чисел операция % эквивалентна операции fmod:

3.45 = 1*2.4+1.05.

Более подробное описание функции fmod представлено здесь.

Теги: