JavaRush /Java блог /Random UA /Кава-брейк #145. 90 часто задаваних питань та відповідей ...

Кава-брейк #145. 90 часто задаваних питань та відповідей на співбесіді з Java

Стаття з групи Random UA
Джерело: Usemynotes У цій публікації зібрано перелік питань, які часто зустрічаються на співбесідах з Java-розробниками початкового та середнього рівня. Кава-брейк #145.  90 запитань і відповідей на співбесіді по Java - 1

1. Що робить Java незалежною від платформи мовою?

Java називається незалежною від платформи мовою, тому що байтовий код, згенерований JDK (Java Development Kit), може виконуватися JVM (Java Virtual Machine) на будь-якій платформі, незалежно від операційної системи.

2. Чому Java не є повністю об'єктно-орієнтованою мовою?

Java не є повністю об'єктно-орієнтованою мовою, оскільки використовує вісім примітивних типів даних, які не є об'єктами: boolean , byte , char , int , float , double , long та short .

3. Чому метод main() у Java зроблений статичним?

Метод main() оголошений статичним, щоб його можна було викликати безпосередньо з JVM без створення об'єкта або екземпляра класу, в якому він оголошений.

4. Що таке класи-оболонки в Java?

У Java кожен примітивний тип даних, такий як int , float має відповідний йому клас, відомий як клас-оболонка (wrapper classes). Їх також називають обгортками, тому що вони обгортають або перетворюють примітивний тип даних на об'єкти.

5. Що таке конструктор у Java?

Конструктори в Java - це спеціальні методи, які автоматично викликаються під час створення об'єкта або екземпляра. Імена конструктора та класу повинні збігатися.

6. У чому різниця між масивами і ArrayList Java?

Масиви (Arrays) ArrayList
Це статична структура даних, що означає, що її розмір фіксовано і не може бути змінено. Це масив змінної довжини або динамічного розміру структури колекції, що означає, що його розмір може бути змінений відповідно до вимог.
Вони можуть зберігати як об'єкти, і примітивні типи. Він може зберігати чи містити лише об'єкти, але з примітивні типи.
Ми можемо отримати доступ до елемента, вказавши його індекс у квадратних дужках [ ]. Ми можемо отримати доступ до елемента, вказавши його порядковий номер усередині методу get() .

7. Чому в Java не використовуються покажчики?

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

8. Які існують види модифікаторів доступу Java?

У Java модифікатори доступу - це ключові слова, які використовуються для вказівки доступу до класу та методів поза класом або в іншому класі. У Java чотири різних типи модифікаторів доступу:
  • Default
  • Public
  • Private
  • Protected

9. Що таке JIT у Java?

JIT – це абревіатура для компілятора Just-In-Time у Java. Під час виконання він перетворює байт-код на свій машинний код. JIT-компілятор допомагає підвищити продуктивність програм Java.

10. Що таке ключове слово final Java?

Ключове слово final Java використовується для представлення констант. Його можна використовувати зі змінними, класами та методами.
  • Якщо ключове слово final використовується зі змінними, ви не можете змінити його значення.
  • Якщо ключове слово final використовується з методами, ви не можете змінити цей метод.
  • Якщо ви оголошуєте клас final , цей клас не може бути розширений або успадкований підкласом.

11. Які основні концепції ООП чи об'єктно-орієнтованого програмування Java?

В об'єктно-орієнтованому програмуванні або ООП Java використовуються 4 основні концепції:
  • Інкапсуляція.
  • Анотація.
  • Спадкування.
  • Поліморфізм.

12. Що таке одноелементний клас Java і як зробити клас одноелементним?

У Java одноелементний клас - це клас, що має лише один екземпляр або об'єкт. Створивши закритий конструктор ми можемо зробити клас одноелементним.

13. У чому різниця між локальними змінними та змінними примірниками Java?

Локальна змінна визначається всередині блоку чи методу. Область дії локальної змінної знаходиться виключно всередині блоку. Змінна екземпляра класу - це змінна, яка визначена всередині класу, але поза методом. Доступ до неї здійснюється шляхом створення об'єкта класу та припиняється при видаленні об'єкта.

14. Що таке ООП чи об'єктно-орієнтоване програмування?

Об'єктно-орієнтоване програмування або ООП — це парадигма програмування, яка використовується для розробки програм або програм із використанням концепції об'єктів.

15. Що робить рядки Java незмінними?

Рядки в Java є незмінними, що означає, що після створення рядкового об'єкта його не можна оновити, але створюється новий рядковий об'єкт. Це з тим, що рядкові об'єкти кешуються в пулі рядків.

16. Опишіть різницю між інтерфейсом та абстрактними класами Java

Інтерфейс Абстрактний клас
Може мати лише абстрактні методи. Допускає як абстрактні, і неабстрактні методи.
Підклас реалізує інтерфейс за допомогою ключового слова Implements . Підклас чи похідний клас успадковує абстракцію, використовуючи ключові слова розширення реалізації (extends).
Інтерфейс може лише загальнодоступні статичні методи без реалізації. Він може мати методи без реалізації або з реалізацією.
Усі методи інтерфейсу мають бути реалізовані класом, що його реалізує. Клас, успадкований від абстрактного класу, ні реалізовувати всі методи свого суперкласса.

17. Що ви маєте на увазі під поліморфізмом і які його види?

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

18. Як у Java досягається поліморфізм під час компіляції та під час виконання?

У Java поліморфізм часу компіляції досягається з допомогою перевантаження методів, а поліморфізм часу виконання досягається з допомогою перевизначення методів.

19. Що ви маєте на увазі під абстракцією і як вона досягається в Java?

Абстракція - це дія за поданням важливої ​​інформації без відображення внутрішніх деталей або деталей реалізації. У Java вона досягається за рахунок використання абстрактних класів та інтерфейсів.

20. Що таке інтерфейси Java?

Інтерфейс в Java є набір абстрактних методів тільки з оголошенням функцій, але без реалізації. Ми не можемо створювати об'єкти або екземпляри інтерфейсу. Інтерфейс неспроможна мати конструкторів. Клас може реалізувати кілька інтерфейсів, використовуючи ключове слово Implements Java.

21. Які типи спадкування існують у Java?

У Java ми використовуємо ключові слова extends для успадкування атрибутів та методів суперкласу чи базового класу. Існує п'ять типів успадкування:
  1. Єдине успадкування (Single Inheritance).
  2. Багаторівневе наслідування (Multilevel Inheritance).
  3. Ієрархічне наслідування (Hierarchical Inheritance).
  4. Множинне наслідування через інтерфейс (Multiple Inheritance through Interface).
  5. Гібридне наслідування (Hybrid Inheritance).

22. Чому Java не підтримує множинне спадкування?

Java не підтримує множинне спадкування, щоб запобігти двозначності. Наприклад, припустимо, що є два суперкласи A і B і підклас C, який успадковує як A, так і B. В обох класах A і B присутній метод show( ) . Якщо ми викличемо метод show() , створивши об'єкт класу C, компілятор видає помилку, оскільки неясно, який клас методу show() повинен виконуватися.

23. У чому різниця між перевантаженням та перевизначенням методів?

Перевантаження методу Перевизначення методу
Поліморфізм часу компіляції. Поліморфізм часу виконання.
Два або більше методів в одному класі з однаковим ім'ям функції або методу, але різними сигнатурами. Два або більше методи, що мають те саме ім'я функції або методу і сигнатуру в різних класах.

24. Чи можна перевизначити статичний чи приватний метод Java?

Приватний метод недоступний поза класом, тому не буде перевизначений підкласом. Отже, його не можна перевизначити. Так само статичний метод може бути перевизначений, оскільки якщо ми створимо статичні методи з тим самим ім'ям методу і сигнатурою як у базовому, і у похідному класі, похідний клас приховає методи у базовому класі. Це відомо як приховування методу.

25. Що таке навантаження конструктора в Java?

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

26. Чи можемо визначити клас Abstract, навіть якщо у нього немає абстрактних методів?

Так, ми можемо створити абстрактний клас, навіть якщо він не має абстрактного методу. Однак, якщо клас містить хоча б один абстрактний метод, він повинен бути визначений як абстрактний, інакше станеться помилка.

27. Яка користь від статичних змінних та методів?

Ми використовуємо статичні члени (методи та змінні), коли хочемо використовувати спільний метод або змінну для всіх об'єктів класу замість того, щоб створювати кілька копій кожного об'єкта. Наприклад, у класі співробітників назву компанії можна зробити статичним, оскільки всі об'єкти матимуть одну й ту саму назву компанії.

28. Скільки різних типів конструкторів існує у Java?

У Java є 2 типи конструкторів:
  1. Конструктор за замовчуванням не приймає жодних параметрів.
  2. Параметризований конструктор - приймає щонайменше один параметр.

29. Чи використовує Java конструктор копіювання?

Ні, Java немає конструктора копіювання, такого як в C++.

30. Вкажіть різницю між конструктором і методами Java

Конструктор Метод
Обов'язково, щоб ім'я конструктора та ім'я класу збігалися. Ім'я методу може збігатися чи збігатися з ім'ям класу.
Він не може мати тип, що повертається. Потрібно мати тип, що повертається.
Конструктори не можуть бути статичними. Метод може бути чи стати статичним.
Він викликається або викликається автоматично під час створення об'єкта чи екземпляра класу. Він викликається або застосовується з використанням імені об'єкта разом із точкою (.).
Він використовується для ініціалізації стану об'єкта. Він використовується визначення поведінки об'єкта.

31. Чи можна виконати програму без використання методу main()?

Ні, програма не може бути виконана без методу main() у Java, тому що виконання програми починається з методу main() .

32. Що означає ключове слово this в Java?

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

33. Чи можна використовувати ключове слово в Java для посилання на статичні члени?

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

34. Чи можемо зробити метод main() в Java приватним, а чи не загальнодоступним?

Ми можемо зробити метод main() закритим, але тоді ми отримаємо помилку часу виконання і, отже, програма виконуватиметься.

35. Що означає ключове слово super в Java?

У Java ключове слово super - це змінна посилання, яка використовується для посилання на об'єкт безпосереднього батьківського класу.

36. Вкажіть різницю між вектором і масивом.

Вектор Масив
Це масив із динамічним розміром. Це структура даних фіксованого розміру.
Вектор синхронізований. Масив не синхронізовано.
Він повільніший у порівнянні з масивом. Він швидший у порівнянні з вектором.
Він може лише містити або зберігати об'єкти Java. Він використовується для зберігання як примітивних типів, і об'єктів Java.
Ми можемо використовувати метод size() , щоб дізнатися про довжину вектора. Ми можемо використовувати властивість length , щоб дізнатися про довжину масиву.

37. Що таке багатопоточність у Java?

Багатопотоковість - це процес одночасного виконання декількох завдань в рамках однієї програми. Це робиться для досягнення максимального завантаження процесора.

38. Які існують методи реалізації багатопоточності в Java?

Багатопоточність у Java може бути реалізована двома способами:
  1. Шляхом реалізації інтерфейсу Runnable в java.lang.Runnable .
  2. Шляхом розширення класу Thread в java.lang.Thread .

39. Вкажіть кілька відмінностей між ключовими словами super і this Java.

Super This
Використовується посилання на об'єкти батьківського класу. Використовується для посилання на об'єкт класу.
Використовується для доступу до методів батьківського чи базового класу. Використовується для доступу до поточного класу.
Викликає конструктор за замовчуванням базового класу. Викликає конструктор за промовчанням поточного класу.

40. Які відмінності між підкласом та внутрішнім класом?

Підклас Внутрішній клас
Це клас, який успадковує властивості та методи базового чи батьківського класу. Це клас, вкладений до іншого класу.
Він може отримати доступ до всіх загальнодоступних та захищених членів суперкласу або базового класу. Він має доступ до всіх членів зовнішнього класу.

41. Що таке завантажувач класів у Java?

Завантажувач класів Java – це компонент середовища виконання Java або JRE, який використовується для завантаження класів Java у віртуальну машину Java (JVM) під час виконання.

42. Чи потрібно, щоб за блоком Try йшла обробка виключень Java в блоці Catch?

Так, використовувати блок catch обов'язково, тому що будь-який виняток, створений блоком try , повинен бути перехоплений в блоці catch .

43. Назвіть типи винятків у Java

Винятки в Java бувають двох типів:
  1. Неперевірений виняток
  2. Перевірений виняток

44. Які існують стани потоків (thread)?

Існує 4 стани потоку в Java:
  1. Новий потік.
  2. Запускається (Runnable).
  3. Незапускається (Non-Runnable).
  4. Мертвий чи припинений (Dead або Terminated).

45. Що таке виняток NullPointerException?

Коли користувач намагається отримати доступ або змінити значення нульового об'єкта, виникає виняток NullPointerException .

46. ​​Які типи ключових слів використовуються для обробки винятків Java?

  1. try

  2. catch

  3. finally

  4. throw

  5. throws

47. Чи можна перевантажувати метод main() у Java?

Так, метод main() може бути перевантажений, але JVM або віртуальна машина Java викликає лише вихідний метод main() .

48. Чи можна перевизначити метод main() Java?

Ні, оскільки метод main() є статичним методом, а статичні методи не можна перевизначити.

49. У чому різниця між equals() і == ?

Java equals() — це метод, який використовується для порівняння значень двох об'єктів або змінних, тоді як == — це оператор порівняння, який використовується для порівняння адреса або розташування в пам'яті ще двох об'єктів або змінних.

50. Чи може конструктор класу повернути будь-яке значення?

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

51. Дайте визначення агрегації

Агрегація - це форма асоціації, яка визначається як відношення "має" (has-a) між двома класами. Це зроблено для повторного використання коду. Це односторонній чи односпрямований зв'язок між двома класами.

52. Що таке асоціація?

Асоціація визначає відносини між двома класами за допомогою об'єктів. Ставлення або асоціація можуть бути "один до одного", "один до багатьох", "багато до багатьох" і "багато до одного". Агрегація та композиція – це дві форми асоціації.

53. Що таке композиція?

Композиція - це форма асоціації, в якій два класи залежать один від одного.

54. У чому різниця між динамічною та статичною прив'язкою?

При динамічній прив'язці рішення про прив'язку методу об'єкта приймається під час виконання. Пізніше зв'язування (Late binding) - це інша назва динамічного зв'язування. При статичній прив'язці рішення щодо прив'язки методу до об'єкта приймається під час компіляції. Статичне зв'язування це ще одна назва раннього зв'язування.

55. Вкажіть різницю між інкапсуляцією та абстракцією

При інкапсуляції дані та методи упаковуються або зв'язуються у єдиний блок, відомий як клас. В абстракції відображається лише важлива інформація та ховаються внутрішні деталі або деталі реалізації.

56. Що таке абстрактний клас у Java?

Абстрактний клас - це клас, екземпляр якого не можна створити, але ми можемо створити змінну посилання. Клас є абстрактним за допомогою ключового слова abstract. Він включає як абстрактні, так і неабстрактні методи.

57. Чи можемо ми використовувати у методі обидва ключові слова: final і abstract?

Ні, ми не можемо використовувати методи final і static разом з abstract , тому що абстрактний метод повинен бути перевизначений підкласом, а метод final не може бути перевизначений.

58. Чи можемо ми оголосити спосіб як final в інтерфейсі?

Ні, ми не можемо оголосити метод як final , тому що всі методи в інтерфейсі абстрактні, тому він має бути реалізований підкласом, а метод final не може бути перевизначений.

59. Назвіть базовий клас всіх класів виключень Java

Базовим класом для всіх винятків є java.lang.Throwable .

60. Чи можна створити кілька catch блоків в одному блоці try?

Так, ми можемо створити кілька catch блоків для одного блоку try .

61. Визначте два змінні середовища, які необхідно вказати для запуску будь-якої програми Java

  1. Змінна дорога (Path variable).
  2. Змінна шляхи до класів (Classpath variable).

62. Чи можна використовувати деструктор у Java?

Ні, ми не можемо використовувати деструктори в Java.

63. Що ви маєте на увазі під анонімним класом?

Анонімний внутрішній клас Java не має імені і створює тільки один об'єкт.

64. Назвіть метод Java, який має бути реалізований для всіх потоків

Метод Run () .

65. У чому різниця між break і continue у Java?

Break Continue
Використовується для припинення або завершення циклу, якщо виконується певна умова. Використовується для пропуску виконання циклу для поточної ітерації на основі певної умови.
Його можна використовувати всередині циклу та перемикача. Використовується лише усередині циклу.

66. Що таке пули рядків (string pools) у Java?

Пул рядків Java — це набір рядків, що зберігаються в купі пам'яті.

67. У чому різниця між ключовими словами throw і throws Java?

Throw Throws
Використовується для створення винятку. Використовується для оголошення винятку, який може бути викликаний методом під час виконання.
Використовується усередині тіла методу. Використовуючи ключові слова throws , ми можемо оголосити декілька винятків.
Після throw слід екземпляр класу Exception . За ним слідує ім'я класу Exception , яке має бути згенероване.

68. Чи можна викликати конструктор усередині іншого конструктора того самого класу?

Так, ми можемо викликати конструктор того ж класу всередині іншого конструктора, використовуючи this() як перший рядок.

69. Чи можна порівнювати String Buffer і клас String у Java?

Ні, ми не можемо порівнювати об'єкти String Buffer та String . Тому що ми отримаємо помилку.

70. У якій послідовності відбувається виклик конструкторів під час наслідування?

Спочатку викликається конструктор батьківського чи базового класу, та був викликається конструктор похідного класу.

71. Чи можемо ми назвати конструктор інакше, ніж ім'я класу?

Ні, конструктор та ім'я класу мають збігатися.

72. Що таке пакети Java?

Пакет – це набір згрупованих класів та інтерфейсів.

73. У чому різниця між класами String та StringBuffer?

String StringBuffer
Клас String незмінний. Клас StringBuffer змінюється.
Повільніший, ніж StringBuffer . Швидший, ніж String .
Він використовує більше пам'яті під час об'єднання багатьох рядків. Він використовує менше пам'яті під час об'єднання багатьох рядків.

74. Чи можна Java перевантажити статичні методи?

Так, ми можемо перевантажувати статичні методи Java, передаючи різні сигнатури функцій.

75. Який компонент пам'яті, стек чи купа очищається в процесі складання сміття?

Купа.

76. Який клас класів слід використовувати, коли необхідно часто оновлювати дані?

Клас StringBuffer слід використовувати у разі частих оновлень, оскільки він мінливий і отже пул рядків не буде перевантажений.

77. Що станеться, якщо ключове слово static не використовувати з методом main() Java?

Помилки компіляції не буде, але під час виконання ми отримаємо помилку NoSuchMethodError .

78. Чи буде виконуватися блок finally, якщо оператор return поміщений у кінець блоків try і catch?

Так, блок finally завжди виконуватиметься незалежно від того, чи є виняток.

79. Чи можна мати багато загальнодоступних класів у вихідному файлі Java?

Ні, ми можемо мати лише один загальнодоступний клас у вихідному файлі Java.

80. Чи може розширювати інший інтерфейс?

Так, один інтерфейс може розширювати інший інтерфейс за допомогою ключового слова extends Java.

81. Назвіть різні типи завантажувачів класів у Java

  1. Bootstrap ClassLoader

  2. Extensions ClassLoader

  3. System ClassLoader

82. Чим займається тернарний оператор Java?

Тернарний оператор використовується як заміна оператора if-else в Java. Це єдиний умовний оператор, який містить три операнди.

83. Чим займається складання сміття Java?

Складання сміття Java — це метод, за допомогою якого програми Java автоматично зберігають свою пам'ять, видаляючи або очищуючи об'єкти, що не використовуються, і пакети в пам'яті.

84. Як використовується конструктор за замовчуванням Java?

Java конструктор за замовчуванням (default constructor) використовується для ініціалізації членів даних або змінних-членів об'єкта з їх значеннями за умовчанням. Він автоматично створюється компілятором, коли у програмі немає інших конструкторів.

85. У чому різниця між path і classpath в Java

  1. Шлях до класів (classpath) визначає розташування файлів байт-коду, тобто файлів .class.
  2. Шлях (path) визначає розташування файлів .exe.

86. Які є типи даних Java?

У Java існує 8 типів даних:
  1. short

  2. byte

  3. char

  4. int

  5. float

  6. double

  7. long

  8. boolean

87. Які чотири концепції ООП Java?

  1. Інкапсуляція.
  2. Анотація.
  3. Поліморфізм.
  4. Спадкування.

88. Чи можемо ми привласнити ключове слово це нульове значення в Java?

Ні.

89. Що ви маєте на увазі під статичним блоком Java?

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

90. Що таке виняток? Який пакет містить усі визначення класів виключень Java?

Винятки (Exceptions) – це позаштатні ситуації, що виникають під час виконання програми. Вони можуть статися внаслідок неправильного введення користувача або неправильної логіки кодера. Пакет java.lang.Exception містить усі визначення класів виключень у Java.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ