Питання на співбесіді
Core
Примітивні типи
- Які примітивні типи даних ви знаєте? Перерахуйте. Скільки байт займає кожен.
- Що таке літерал.
- Скільки буде
(int)('z' - 'a')
? - Чим відрізняється
++a
ia++
? - Який результат роботи такого коду:
byte b = 1; while(b < 128) { b++; }
- Що роблять операції
>>
<<
>>>
!
~
^
. - Скільки буде
Math.abs(Integer.MIN_VALUE)
? - Скільки приблизно буде
(Integer.MAX_VALUE + 1)/2
? - Чому дорівнює
3/2
і3/2.0
. Поясніть як це працює. - Скільки приблизно буде
(Integer.MAX_VALUE + 1) >>> 1
?
Об'єкти
- Методи класа Object.
- Контракт між hashCode і equals
- Як працює HashMap.
- Що буде якщо всі об'єкти повертають константний hashCode.
- За який час працює HashMap, ArrayList, LinkedList, Heap/PriorityQueue.
- Відношення між класами
has a
vsis a
. Агрегація vs композиція. - Що таке дефолтний конструктор? Коли його не буде?
- Виклик конструкторів батьківських класів.
- Виклик одного конструктора із іншого, того ж класу.
- Які є модифікатори доступа, чим відрізняються.
- Що таке анонімний клас.
- Статичні поля і методи.
- Чим відрізняється статичний і нестатичний внутрішній клас.
- final. Термінальні класи і методи.
- Override vs Overload
- Анонімні класи.
- Як JVM ділить память. Які є розділи і для чого?
- Що теке КласЛоадери. І для чого?
Потоки
- volotile
- final and object publishing.
- "happens before". Поясніть
- Різниця потока від процеса. Конкретно!
- thread.run() vs thread.start()
- Що буде якщо викликати start() декілька разів?
- Стани потока.
- Dead lock. Приклад коду.
- Атомік-класи. Як це працює.
- synchronized блок vs метод vs статичний метод.
- Один потік збільшує змінну на 1, інший зменшує ту ж саму змінну на 1. Після відпрацювання потоків, які варіанти можуть бути.
- ...
ООП
- Інкапсуляція, наслідування, поліморфізм.
- Абстракція
- SOLID
- KISS, DRY, etc.
- GoF шаблони. Розкажи 3 детально.
- decoupling/слаба зв'язність. Як це виглядає на практиці.
- В чому проблема з "new"? Factory, Dependency Injection.
- Які проблеми вирішує DI?
- Є клас А з єдиним конструктором A(B b). І є клас В з єдиним конструктором В(А а). Як Спрінг інжектить А в В і В в А.
Servlets
- Життєвий цикл сервлета.
- Крім сервлета, що ще існує в Servlets API.
- Що таке Http сесія?
- Що таке JSESSIONID?
- ...
JDBC
- Як створити транзакцію вручну? А потім виконати rollback?
- Statement vs PrepareStatement.
- ...
SQL
- ...
- Рівні ізоляції транзакцій.
Hibernate
- Які функції виконує сесія хібернейта?
- Entity states
- Second vs first level cache.
- Як технічно хібернейт конвертує запис в об'єкт?
- Lazy loading
- Мапінг ієрархії класів на таблиці.
- Анотація Version
- Оптимістичне блокування
- ...