JavaRush /Java блог /Random UA /Кава-брейк #58. 20 важливих питань на співбесіді, про які...

Кава-брейк #58. 20 важливих питань на співбесіді, про які має знати Java-розробник. Переваги знання кількох мов програмування

Стаття з групи Random UA

20 важливих питань на співбесіді, про які має знати Java-розробник

Джерело: Dev.toКава-брейк #58.  20 важливих питань на співбесіді, про які має знати Java-розробник.  Переваги знання кількох мов програмування.

1. Які два типи винятків існують у Java? У чому між ними різниця?

Відповідь: У Java є два типи винятків: перевірені та неперевірені винятки.
  1. Неперевірені винятки не потрібно оголошувати в методі або операторі ключових слів конструктора, якщо вони можуть бути відкинуті при виконанні методу або конструктора та поширюватися за межі методу чи межі конструктора.
  2. З іншого боку, перевірені винятки мають бути оголошені у методі чи операторі ключових слів конструктора.

2. Що таке JVM? Чому Java називають «платформно-незалежною мовою програмування»?

Відповідь: Віртуальна машина Java (JVM) – це віртуальна машина процесу, яка може виконувати байт-код Java. Кожен вихідний файл Java компілюється у файл байт-коду, який виконується JVM. Мова Java розроблена для створення прикладних програм, які можна запускати на будь-якій платформі, без необхідності перезапису чи перекомпілювання для кожної окремої платформи. Віртуальна машина Java робить це можливим, тому що вона обізнана про конкретну довжину інструкцій та інші особливості базової апаратної платформи.

3. У чому різниця між аплетом та Java-додатком?

Відповідь:
  • Аплети виконуються у вікні браузера з підтримкою Java.
  • Java - це окрема програма Java, яка може виконуватися поза браузером.
Обидва вони потребують наявності віртуальної машини Java (JVM). Однак, програма Java вимагає основного (main) методу з певною сигнатурою, щоб розпочати його виконання. Аплетам Java не потрібен такий метод для початку виконання. Також аплети Java зазвичай використовують обмежувальну політику безпеки, тоді як програми Java зазвичай використовують м'якшу (relaxed) політику безпеки.

4. У чому різниця між JDK та JRE?

Відповідь:
  • Середовище виконання Java (JRE) - в основному це віртуальна машина Java (JVM), на якій виконуються програми Java. Вона також включає плагіни браузера для виконання аплету.
  • Java Development Kit (JDK) – це повнофункціональний комплект для розробки програмного забезпечення на мові Java, включаючи JRE, компілятори та інструменти (такі як JavaDoc та Java Debugger), щоб користувач міг розробляти, компілювати та виконувати програми Java.

5. Що таке сервлет?

Відповідь: Сервлет — це клас мови програмування Java, який використовується для обробки запитів клієнта та створення динамічного веб-контенту. Сервлети в основному використовуються для обробки або зберігання даних, відправлених HTML-формою, надання динамічного вмісту та управління інформацією про стан, якої немає в протоколі HTTP без збереження стану.

6. Що таке сторінка JSP?

Відповідь: Java Server Page (JSP) є текстовим документом, який містить два типи тексту:
  • статичні дані,
  • елементи JSP.
Статичні дані можуть відображатися в будь-якому текстовому форматі, наприклад, HTML або XML. JSP - це технологія, яка змішує статичний контент з контентом, що динамічно генерується.

7. Що таке директиви? Які типи директив доступні у JSP?

Відповідь: Директиви – це інструкції, які обробляються механізмом JSP, коли сторінка компілюється у сервлет. Директиви використовуються для встановлення інструкцій на рівні сторінки, вставки даних із зовнішніх файлів та вказівки користувацьких бібліотек тегів. Директиви визначаються між <% @ та %>. Різні типи директив показані нижче:
  • Директива Include: використовується для увімкнення файлу та об'єднання вмісту файлу з поточною сторінкою.
  • Директива сторінки (Page): вона використовується для визначення певних атрибутів на сторінці JSP, таких як сторінка помилки та буфер.
  • Taglib: використовується для оголошення бібліотеки тегів, яка використовується на сторінці.

8. Що роблять методи System.gc() та Runtime.gc()?

Відповідь: Ці методи можна використовувати як підказку для JVM, щоб запустити складання сміття. Як правило, віртуальна машина Java (JVM) запускає складання сміття періодично або при досягненні низького рівня вільної пам'яті.

9. Які відмінності існують між HashMap та Hashtable?

Відповідь: Між HashMap і Hashtable у Java є кілька відмінностей:
  1. Hashtable синхронізується, тоді як HashMap немає. Це робить HashMap кращим для непоточних програм, оскільки несинхронізовані об'єкти зазвичай працюють краще, ніж синхронізовані.
  2. Hashtable не допускає null ключів або значень. HashMap дозволяє використовувати один null ключ і будь-яку кількість null значень.
  3. Один із підкласів HashMap є LinkedHashMap, таким чином, якщо ви хочете передбачуваний порядок ітерації (порядок вставки за замовчуванням), ви можете легко змінити HashMap для LinkedHashMap. Це було б не так просто, якби ви використовували Hashtable.

10. Що таке JDBC?

Відповідь: JDBC – це рівень абстракції, який дозволяє користувачам вибирати між базами даних. За допомогою JDBC розробники можуть писати програми для баз даних на Java, не переймаючись деталями, що лежать в основі конкретної бази даних.

11. Що означає ключове слово static? Чи можете ви перевизначити приватний або статичний метод Java?

Відповідь: Ключове слово static означає, що змінний член або метод може бути доступним, не вимагаючи екземпляр класу, до якого належить . Користувач не може перевизначити статичні методи Java, тому що перевизначення методу засноване на динамічній прив'язці під час виконання, а статичні методи постійно прив'язані під час компіляції. Статичний метод не пов'язаний з жодним екземпляром класу, тому ця концепція не застосовується.

12. Яке значення має блок finally під час обробки винятків?

Відповідь: Блок finally завжди буде виконуватися, незалежно від створення виняток. Навіть у разі відсутності оператора catch та виникнення виключення. І останнє, що слід згадати, це те, що блок finally використовується для вивільнення ресурсів, таких як буфери введення-виведення, підключення до бази даних і т.д.

13. У чому різниця між Exception і Error Java?

Відповідь: Error є критичною умовою, яка не може бути оброблена програмним кодом. Exception (Виняток) – це виняткова ситуація, яка може бути оброблена кодом програми.

14. Коли об'єкт стає придатним для складання сміття Java?

Відповідь: Об'єкт Java підлягає збиранню сміття, коли він стає недоступним для програми, в якій він використовується в даний час.

15. Що таке ітератор?

Відповідь: Інтерфейс Iterator надає низку методів, які можуть виконувати ітерацію будь-якої колекції . Кожна колекція Java містить метод Iterator , який повертає екземпляр Iterator . Ітератори можуть видаляти елементи із базової колекції під час ітерації.

16. Що таке передача за посиланням (by reference) та передача за значенням (by value)?

Відповідь:
  • Коли об'єкт передається за значенням , це означає, що копія об'єкта передається. Таким чином, навіть якщо до цього об'єкта внесено зміни, це не вплине на вихідне значення.
  • Коли об'єкт передається за посиланням , це означає, що об'єкт не передається, а скоріше передається посилання на об'єкт. Таким чином, будь-які зміни, внесені зовнішнім методом, також відбиваються у всіх місцях.

17. Що таке Java-аплет?

Відповідь: Java-аплет — це програма, яку можна включити до HTML-сторінки і виконати у клієнтському браузері з підтримкою Java. Аплети використовуються для створення динамічних та інтерактивних веб-додатків.

18. Як працює HashMap в Java?

Відповідь: HashMap Java зберігає пари ключ-значення (key-value). HashMap вимагає хеш-функції, використовує hashCode та методи equals , щоб встановлювати та витягувати елементи та з колекції. Коли викликається метод put , HashMap обчислює хеш-значення ключа і зберігає пару у відповідному індексі всередині колекції. Якщо ключ існує, його значення оновлюється новим. Деякі важливі характеристики HashMap – це його ємність, коефіцієнт завантаження та зміна порогового розміру.

19. Які основні інтерфейси Java Collections Framework?

Відповідь: Java Collections Framework є розробленим набором інтерфейсів і класів, які підтримують операції з колекціями об'єктів. Основні інтерфейси, які знаходяться в Java Collections Framework:
  • Collection (колекція) є групою об'єктів, відомих як її елементи.
  • Set - це колекція, яка не може містити елементи, що повторюються.
  • List — це впорядкована колекція, яка може містити елементи, що повторюються.
  • Map — це об'єкт, який зіставляє ключі значенням і не може містити ключі, що повторюються.

20. Які типи даних підтримує Java? Що таке Autoboxing та Unboxing?

Відповідь: Мова програмування Java підтримує наступні вісім примітивних типів даних:
  • byte
  • short
  • int
  • long
  • float
  • double
  • boolean
  • char
Autoboxing — це автоматичне перетворення, що виконується компілятором Java між примітивними типами та відповідними класами-оболонками об'єктів. Якщо перетворення відбувається у зворотному напрямку, ця операція називається Unboxing . Дякуємо за читання та удачі на технічному співбесіді!

Переваги знання кількох мов програмування

Джерело: Dev.to Особисто я переконаний, що кожен розробник повинен знати більше за одну мову програмування. Іншими словами, якщо ми говоримо про мови програмування, розробник має бути поліглотом.Кава-брейк #58.  20 важливих питань на співбесіді, про які має знати Java-розробник.  Переваги знання кількох мов програмування.

Основний та допоміжний мови

Щоб спростити завдання, дозвольте мені пояснити деякі терміни, які використовуються у цій статті. Я вважаю, що у кожного розробника має бути якась одна мова, якій він віддає перевагу. Цю мову я називаю основною. Будь-які мови крім основного я називатиму допоміжними. Звичайно, протягом своєї кар'єри розробник може змінювати свою основну мову (і не раз). Це нормально. Існує безліч причин, через які це пояснюють.

Експерт

У дискусіях про розробників-поліглотів часто наводять доказ, що за знання другої мови розробнику доводиться «розплачуватися» тим, що він гірше володіє своєю основною мовою. Прихильники цієї ідеї виходять з того, що на вивчення кожної нової мови витрачається час, і цей час ви вже не зможете витратити на придбання знань про свою основну мову. Цей хід думок мені здається помилковим. Я бачу іншу аналогію: спорт. Відомо, що заняття одним видом спорту покращує ваші здобутки в іншому. Звичайно, ви зможете виграти золоті медалі в обох видах, та й дартс навряд чи зробить вас найкращим плавцем. З іншого боку, якщо ви скелелаз, то йога допоможе вам розвинути гнучкість та вміння утримувати рівновагу. Таким чином, заняття йогою зроблять вас кращим скелелазом, ніж ви без них. Я думаю, що вивчення кожної додаткової мови часто покращує ваші навички в інших відомих вам мовах.

Більш широкий набір інструментів

Крім того, знання кількох мов програмування суттєво покращує ваш арсенал розробника. Воно розширює ваші горизонти та дозволяє дивитися на певні речі з різних точок зору. Візьмемо приклад із повсякденності. Якщо ви коли-небудь користувалися викруткою, ви знайомі з хрестоподібними голівками гвинтів. На перший погляд усі гвинти з хрестоподібними головками однакові і здається, що їх можна закручувати однією викруткою. Так, буває, що вам складно затягнути або відкрутити якийсь гвинт, але в цілому викрутки вам вистачає. Кава-брейк #58.  20 важливих питань на співбесіді, про які має знати Java-розробник.  Переваги знання кількох мов програмування.Але одного разу ви заходите в магазин з інструментами, розглядаєте всі ці красиві викрутки і виявляєте, що хрестоподібні викрутки бувають різні. Ви бачите, що та викрутка, яка у вас вже є, це Phillips (PH), і вирішуєте купити її сестру-двійню Pozidriv (PZ). І тут раптово виявляється, що для якихось гвинтів найкраще підходить одна, а для якихось інша. Вони виглядають однаково, але вони не взаємозамінні . (Якщо вам було цікаво, що означають літери PH та PZ на ваших викрутках – тепер ви це знаєте). Додаткові знання та додатковий інструмент дозволять вам краще впоратися із завданням наступного разу, коли вам знадобиться закрутити гвинт із хрестоподібною головкою. Те саме стосується мов програмування.

Вам не потрібно платити за додаткові знання

Отже, особисто я не бачу ціни за вивчення додаткової мови програмування. Чи будете ви однаково чудово знати обидві мови? Ймовірно, ні, але навряд чи ви ставите собі таку мету. Чи дізнаєтесь ви щось нове про свою основну мову? Я абсолютно впевнений у цьому. Знання нової мови виявить різницю між ними. А це, у свою чергу, пробудить вашу цікавість. Вам стане цікаво, чому щось у новій мові робиться інакше і що це дає. На закінчення наведу приклад із життя. Я скористався одним інструментом командного рядка, написаним на Python. Щоразу під час встановлення цього інструменту на новій машині виникали проблеми, і з кожним оновленням кількість проблем зростала. Якщо у вашому наборі інструментів є мова Go, ви відразу помітите його перевагу в описаному сценарії. Go дозволяє компілювати його артефакти до автономного двійкового файлу. Ви можете бути впевнені, що після компіляції двійковий файл працюватиме на кожній машині, для якої ви його скомпілювали. Тому я портував Python CLI на Go. З цією новою версією мені більше не потрібно було турбуватися про зміну середовища виконання чи про сторонні залежності. Це чудовий приклад вибору найбільш відповідного інструменту для виконання завдання. А щоб мати змогу вибирати, потрібно стати розробником-поліглотом.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ