Ознайомтесь із цими 50 запитаннями, щоб розірвати інтерв’ю з програмування Java

Список найпоширеніших питань Java щодо програмування співбесід.

Привіт усім! Протягом останніх кількох років я ділився багатьма питаннями та обговореннями інтерв’ю Java окремо. Багато моїх читачів просили, щоб я зібрав їх разом, щоб вони мали їх там же. Цей пост - результат цього.

Ця стаття містить понад 50 запитань щодо інтерв’ю Java, що охоплюють усі важливі теми, такі як основи основи Java, платформа колекції Java, Java багатопоточність та паралельність, Java IO, JDBC, внутрішні компоненти JVM, проблеми кодування, об’єктно-орієнтоване програмування тощо.

Питання також беруться з різних інтерв’ю, і вони аж ніяк не дуже складні. Можливо, ви вже бачили їх у вашому телефоні чи в очних турах інтерв’ю.

Запитання також дуже корисні для перегляду таких важливих тем, як багатопоточність та збірники. Я також поділився деякими корисними ресурсами для подальшого навчання та вдосконалення, як The Complete Java MasterClass, щоб очистити та заповнити прогалини у ваших навичках Java.

То що ми чекаємо? Ось список найпоширеніших запитань щодо Java в інтерв’ю як для початківців, так і для досвідчених розробників Java.

50+ запитань для інтерв’ю Java на 2-3 роки досвідчених програмістів

Отже, не витрачаючи більше вашого часу, ось мій перелік найпоширеніших основних питань інтерв’ю Java для початківців програмістів. Цей список присвячений початківцям та менш досвідченим розробникам, як, наприклад, хтось із досвідом роботи на Java від 2 до 3 років.

1) Як Java досягає незалежності від платформи? (відповідь)

підказка: байт-код та віртуальна машина Java

2) Що таке ClassLoaderJava? (відповідь)

підказка: частина JVM, яка завантажує байт-коди для класів. Ви можете написати своє.

3) Напишіть програму Java, щоб перевірити, чи число є парним чи непарним? (відповідь)

підказка: ви можете використовувати побітовий оператор, як порозрядний І, пам’ятайте, навіть число має кінець нуль у двійковому форматі, а непарне число - 1 в кінці.

4) Різниця між ArrayListі HashSetв Java? (відповідь)

підказка: тут застосовуються всі відмінності між Listта Set, наприклад, замовлення, дублікати, випадковий пошук тощо. Див. Основи Java: Колекції Річарда Уорбертона, щоб дізнатись більше про ArrayList, HashSet та інші важливі колекції в Java.

5) Що таке подвійне перевірене блокування в Singleton? (відповідь)

підказка: двічі перевірте, чи екземпляри ініціалізовані чи ні, спочатку без блокування, а друге з блокуванням.

6) Як створити безпечний для потоків Singleton в Java? (відповідь)

підказка: багато способів, наприклад, використання Enum, використання подвійно перевіреного шаблону блокування або використання вкладеного статичного класу.

7) Коли використовувати летючу змінну в Java? (відповідь)

підказка: коли вам потрібно проінструктувати JVM, що змінна може бути змінена декількома потоками, і дати підказку JVM, яка не кешує своє значення.

8) Коли використовувати перехідну змінну в Java? (відповідь)

підказка: коли ви хочете зробити змінну несериалізуваною в класі, який реалізує інтерфейс Serializable. Іншими словами, ви можете використовувати його для змінної, значення якої ви не хочете зберігати. Див . Повний Java MasterClass, щоб дізнатися про перехідні змінні в Java.

9) Різниця між тимчасовою та мінливою змінною в Java? (відповідь)

підказка: абсолютно інший, один використовується в контексті серіалізації, тоді як інший використовується в паралельності.

10) Різниця між серіалізацією та екстерналізацією в Java? (відповідь)

підказка: Externalizable дає вам більше контролю над процесом серіалізації.

11) Чи можна замінити приватний метод у Java? (відповідь)

підказка: Ні, оскільки це не видно в підкласі, основна вимога для перевизначення методу в Java.

12) Різниця між Hashtableі HashMapв Java? (відповідь)

підказка: кілька, але найбільш важливим є те Hashtable, що синхронізовано, тоді HashMapяк ні. Це також застаріле та повільне порівняно з HashMap.

13) Різниця між Listі Set в Java? (відповідь)

підказка: Listупорядковано та дозволяє дублікати. Setне впорядковано і не допускає повторюваних елементів.

14) Різниця між ArrayListі Vectorв Java (відповідь)

підказка: Багато, але найголовніше - ArrayListце несинхронізація та швидкість, а Vectorсинхронізація та повільність. Це також застарілий клас Hashtable.

15) Різниця між Hashtableі ConcurrentHashMapв Java? (відповідь)

підказка: більш масштабована. Щоб дізнатись більше, див. Основи Java: Колекції Річарда Уорбертона.

16) Як ConcurrentHashMapдосягти масштабованості? (відповідь)

підказка: розділивши карту на сегменти та зафіксувавши лише під час операції запису.

17) Які два методи ви заміните, Objectщоб використовувати, як Keyу HashMap? (відповідь)

підказка: дорівнює та хеш-код

18) Різниця між очікуванням і сном на Java? (відповідь)

підказка: wait()метод звільняє блокування або монітор, тоді як режим сну - ні.

19) Різниця між notifyі notifyAllв Java? (відповідь)

підказка: notifyповідомляє, що один випадковий потік чекає на цю блокування, одночасно notifyAllповідомляючи всі потоки, які чекають монітора. Якщо ви впевнені, що чекає лише одна нитка, тоді використовуйте notify, інакше notifyAllкраще. Див. Міні-курс Threading Essentialsвід чемпіона Java Хайнца Кабуца, щоб дізнатись більше про основи роботи з потоками.

20) Чому ви перевизначаєте хеш-код, поряд з equals()Java? (відповідь)

підказка: щоб відповідати рівним і контракту хеш-коду, що потрібно, якщо ви плануєте зберігати свій об'єкт у класах колекції, наприклад HashMapабо ArrayList.

21) Який коефіцієнт навантаження HashMapкошти? (відповідь)

підказка: поріг, який ініціює зміну розміру, HashMapяк правило, становить 0,75, що означає зміну розміру, HashMapякщо він заповнений на 75 відсотків.

22) Різниця між ArrayListі LinkedListв Java? (відповідь)

підказка: так само, як масив і зв’язаний список, один дозволяє випадковий пошук, а інший - ні. Вставлення та видалення у зв’язаному списку легко, але пошук у масиві легкий. Див. Основи Java: Колекції , курс Річарда Уорбертона з Pluralsight, щоб дізнатись більше про необхідну структуру даних колекції в Java.

23) Різниця між CountDownLatchі CyclicBarrierв Java? (відповідь)

підказка: Ви можете повторно використовувати CyclicBarrierпісля того, як бар'єр зламаний, але ви не можете повторно використовувати його CountDownLatchпісля досягнення нуля.

24) Коли ви використовуєте Runnablevs Threadв Java? (відповідь)

підказка: завжди

25) Який сенс того, що Enum захищає тип у Java? (відповідь)

підказка: Це означає, що ви не можете призначити екземпляр іншого типу Enum змінній Enum. наприклад, якщо у вас є така змінна, як DayOfWeekдень, ви не можете призначити їй значення з DayOfMonthпереліку.

26) Як працює автоматичний бокс цілого числа на Java? (відповідь)

підказка: За допомогою valueOf()методу в Java.

27) Різниця між PATHі Classpathв Java? (відповідь)

підказка: PATHвикористовується операційною системою, тоді Classpathяк JVM використовує для пошуку двійкових файлів Java, наприклад, файлів JAR або файлів класу. Див Java Основа: Ядро платформа , щоб дізнатися більше про PATH, Classpathі інших змінних середовищах Java.

28) Різниця між перевантаженням методу та перевизначенням у Java? (відповідь)

підказка: Перевизначення відбувається в підкласі, тоді як перевантаження відбувається в тому ж класі. Крім того, перевизначення є робочою роботою, тоді як перевантаження вирішується під час компіляції.

29) Як запобігти перекласу класу на Java? (відповідь)

підказка: просто зробіть його конструктор приватним

30) Як ви обмежуєте використання вашого класу вашим клієнтом? (відповідь)

підказка: зробіть конструктор приватним або викиньте виключення з конструктора

31) Різниця між StringBuilderі StringBufferв Java? (відповідь)

підказка: StringBuilderне синхронізовано, поки StringBufferсинхронізовано.

32) Різниця між поліморфізмом і спадковістю в Java? (відповідь)

підказка: Спадкування дозволяє повторно використовувати код і будує взаємозв'язок між класом, що вимагається Поліморфізмом, який забезпечує динамічну поведінку. Див. Основи Java: об’єктно-орієнтований дизайнщоб дізнатись більше про функції ООП.

33) Чи можна замінити статичний метод у Java? (відповідь)

підказка: Ні, оскільки перевизначення вирішується під час виконання, тоді як виклик статичного методу вирішується під час компіляції.

34) Чи можемо ми отримати доступ до приватного методу в Java? (відповідь)

підказка: так, в одному класі, але не поза класом

35) Різниця між інтерфейсом та абстрактним класом у Java? (відповідь)

підказка: у Java 8 різниця розмита. Однак клас Java все ще може реалізовувати кілька інтерфейсів, але може розширювати лише один клас.

36) Різниця між синтаксичним аналізатором DOM і SAX в Java? (відповідь)

підказка: DOM завантажує цілий XML-файл у пам'ять, тоді як SAX - ні. Це парсер, заснований на подіях, і може використовуватися для синтаксичного аналізу великого файлу, але DOM є швидким і повинен бути кращим для невеликих файлів.

37) Різниця між ключовим словом throw і throws у Java? (відповідь)

підказка: throws оголошує, який виняток може викликати метод у разі помилки, але ключове слово throw насправді видає виняток. Див. Основи Java: Обробка винятків, щоб дізнатися більше про обробку винятків у Java.

38) Різниця між безпечними та швидкодіючими ітераторами в Java? (відповідь)

підказка: відмовостійкий не кидає ConcurrentModificationExceptionпід час fail-fast, коли виявляє зовнішні зміни базової колекції під час ітерації над нею.

39) Різниця між ітератором та переліченням у Java? (відповідь)

підказка: Ітератор також дає вам можливість видалити елемент під час ітерації, тоді як перелічення не дозволяє цього.

40) Що таке IdentityHashMapJava? (відповідь)

підказка: A Map, який використовує ==оператор рівності для перевірки рівності замість equals()методу.

41) Що таке Stringпул на Java? (відповідь)

підказка: Пул Stringлітералів. Пам’ятайте, що він переміщений до купи з простору пермської генерації в JDK 7.

42) Чи може Serializableклас містити поле, яке не можна серіалізувати в Java? (відповідь)

підказка: Так, але вам потрібно зробити це статичним або перехідним.

43) Різниця між цим та супер в Java? (відповідь)

підказка: це стосується поточного екземпляра, тоді як super посилається на екземпляр суперкласу.

44) Різниця між Comparatorі Comparableв Java? (відповідь)

карта: Comparatorвизначає для користувача замовлення , а Comparableвизначає природний порядок об'єктів, наприклад , в алфавітному порядку для String. Див . Повний Java MasterClass, щоб дізнатися більше про сортування в Java.

45) Різниця між java.util.Dateі java.sql.Dateв Java? (відповідь)

підказка: раніше містить як дату, так і час, тоді як пізніше містить лише частину дати.

46) Чому метод очікування та сповіщення оголошено в Objectкласі на Java? (відповідь)

підказка: оскільки вони вимагають блокування, яке доступне лише для об’єкта.

47) Чому Java не підтримує кілька спадкоємств? (відповідь)

підказка: Він не підтримує через поганий досвід роботи з C ++, але з Java 8 він у певному сенсі Typeпідтримує - в Java зараз не підтримуються лише кілька спадкоємств .

48) Різниця між перевіреним та неперевіреним винятком у Java? (відповідь)

підказка: у випадку встановленого, ви повинні обробляти винятки за допомогою блоку catch, тоді як у випадку невстановленого - це вирішувати вам; компіляція вас не заважатиме.

49) Різниця між помилкою та винятком у Java? (відповідь)

підказка: Мені набридло друкувати, перевірте відповідь

50) Різниця між умовою перегонів та глухим кутом у Java? (відповідь)

підказка: обидва - це помилки, що трапляються в одночасному додатку, одна виникає через планування потоків, а інші - через погане кодування. Див. Розділ Багатопотокові та паралельні обчислення в Java, щоб дізнатись більше про глухий кут, умови перегонів та інші проблеми багатопоточності.

Заключні примітки

Дякую, Ви дійшли до кінця статті ... Успіхів у Вашому інтерв’ю з програмуванням! Це, звичайно, буде непросто, але, дотримуючись цієї дорожньої карти та керівництва, ви на крок ближче до того, щоб стати інженером DevOps.

Якщо вам сподобалась ця стаття, поділіться з друзями та колегами та не забудьте підписатися на javinpaul у Twitter!

Додаткові ресурси

  • Посібник для інтерв’ю Java: 200+ запитань та відповідей на інтерв’ю
  • Посібник для весняних інтерв’ю - 200+ запитань та відповідей
  • Підготовка до співбесіди Джон Сонмез
  • Інтерв’ю програмування на Java, викрите Маркхемом
  • Злом інтерв’ю з кодуванням - 189 запитань та відповідей
  • Структура даних та аналіз алгоритмів для співбесід
  • 130+ запитань щодо інтерв’ю на Java за останні 5 років
PS - Якщо вам потрібні БЕЗКОШТОВНІ ресурси для вивчення Java, ви можете ознайомитися з цим списком безкоштовних курсів Java, щоб розпочати підготовку.

PSS - Я не дав відповіді на запитання співбесіди, зображені на зображенні «Скільки об’єктів String створено в коді?» ти можеш здогадатися і пояснити?