JavaRush /Java блог /Random UA /Технічні питання на співбесіді
Roman Beekeeper
35 рівень

Технічні питання на співбесіді

Стаття з групи Random UA
Так ось, співбесіда проходила за таким планом
  1. JavaCore
  2. ООП
  3. REST
  4. Бази даних
  5. Інструменти, якими користуєшся.
Технічні питання на співбесіді - 1

JavaCore

  • Спочатку мене попросабо намалювати ієрархію інтерфейсів у Колекцій (це було не складно, там їх всього кілька (Collection, List, Set, Queue, Map).
  • У чому різниця ArrayList і LinkedList (це одне з найбільш заїжджених питань і відповідей в інетах просто темрява).
  • Обговорабо швидкість виконання запитів у них та яка різниця між аркушами.
  • Питання класу Object. Які в нього способи, що вони роблять.
  • Рефлексія. Що робить спосіб getClass(). Дуже цікаве питання, розберіть його. Особливо про те, як отримати все про клас, навіть там приватні методи або змінні.
  • Запитали за багатопоточність. Слабенько, як я вважаю, так розповісти, як ти розумієш, що таке багатопоточність. Що необхідно, щоб запустити новий потік. Реально, якщо ви 20+ рівень, то ці питання вам здадуться смішними.
  • Що можеш сказати про Stream. Це не на увазі Java 8. Мається на увазі потоки введення і виведення. Як базові інтерфейси, які вони (символьні та байтові). На розуміння, жодної конкретики.
  • Винятки. Тут знову попросабо намалювати ієрархію винятків, які бувають, які з них checked, а які unchecked. Що потрібно робити з Runtime винятками. Назвіть найчастіше влучне (NullPointerException). Питання з тим, що потрібно робити з checked винятками (прокидати далі або обробити - зрозуміло і те, й інше).

ООП

  • Що таке ООП двома словами?
  • Які ще є парадигми програмування? У чому їхня відмінність від ОВП
  • Які основні принципи ОВП (спадкування, поліморфізм та інкапсуляція)? Розповісти про кожен із них. Поки що все абстрактно, не прив'язуючись до якоїсь мови.
  • Завдання на розуміння проектування систем: є Кінь та Птах. Потрібно одержати Пегаса. принцип "has a" та "is a"

REST

  • Що таке REST | У Вікіпедії про це йдеться дуже круто. Реально статті із Вікіпедії для ознайомлення вистачить.
  • HTTP. Тут також загальні фрази. Його методи, навіщо кожен із них.
  • Коди стану HTTP. На які п'ять частин ділитися, розкажіть про найвідоміші (200,204,404,500,501). Для чого вони. Запитали ще про 401 та 403. Але я не знав їх. Сказали вони важливі.

Бази даних

Тут я розповів, що я знаю MySQL. Розповів про три нормальні форми. Розповів про Join'и, які бувають і намалював перетин областей, у якому використовуються різні джоїни. Розповів про те, як я розумію реляційну базу даних. Не забув ще про MongoDB - це NoSQL база даних. Через деякий час я напишу і про це. Дуже добре знати і розумітися, що таке транзакція. Що таке ACID. Що таке рівні ізольованості. Ці знання дають зрозуміти, який рівень.

Інші інструменти

Тут ми пройшлися моєю резюме. У мене було написано, що використовую Maven/Gradle для збирання, використовую JIRA для таска, git, Docker, Swagger. Для Continuous Integration - Stash, Bamboo, Puppet. Для тестування JUnit, Mockito, JMeter. Я міг щось забути, тож якщо цікаво — питайте у коментарях постараюсь відповісти. Всім кому стаття сподобалася і була корисною — оцінюйте та пишіть у коментарях. Також, підписуйтесь на мій гітхаб обліковий запис romankh3 Див. також мої інші статті: - Як знайти роботу? Поради щодо розсилки резюме. Стаття із групи Random - Історія Успіху. 20 годин на тиждень програмування, магістратура та особисте життя - Професійне вигорання. Як встояти?
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ