Java — одна з найпопулярніших мов програмування у світі, відома своєю універсальністю, портативністю та широким спектром застосувань. Java є найбільш використовуваною мовою в таких провідних компаніях, як Uber, Airbnb, Google, Netflix, Instagram, Spotify, Amazon та багато інших завдяки своїм функціям і продуктивності.
У цій статті ми надамо Понад 200 запитань на співбесіді щодо ядра Java призначений як для новачків, так і для досвідчених професіоналів із досвідом 3, 5 та 8 років. Тут ми розглядаємо все, включаючи основні концепції Java, об’єктно-орієнтоване програмування (ООП), багатопотоковість, обробку винятків, шаблони проектування, колекції Java тощо, що, безперечно, допоможе вам зламати інтерв’ю на Java.

Зміст
- Питання для співбесіди для першокурсників
- Питання для співбесіди про Java Intermediate
- Питання для співбесіди на Java для досвідчених
- Java Difference Interview Questions
Питання для співбесіди для першокурсників
1. Чи є платформа Java незалежною, якщо тоді як?
Так, Java є платформно-незалежною мовою. На відміну від багатьох мов програмування, компілятор javac компілює програму для формування байт-коду або файлу .class. Цей файл не залежить від запущеного програмного чи апаратного забезпечення, але потребує попередньо встановленого в операційній системі файлу JVM (Віртуальна машина Java) для подальшого виконання байт-коду.
Хоча JVM залежить від платформи , байт-код можна створити в будь-якій системі та виконати в будь-якій іншій системі, незважаючи на використання апаратного чи програмного забезпечення, що робить платформу Java незалежною.
2. Які основні функції Java?
Java є однією з найвідоміших і найбільш використовуваних мов у реальному світі, у Java є багато функцій, які роблять її кращою за будь-яку іншу мову, деякі з них згадані нижче:

- простий : Java досить проста для розуміння та синтаксису
- Незалежно від платформи: Java не залежить від платформи, що означає, що ми можемо запускати ту саму програму в будь-якому програмному та апаратному забезпеченні й матимемо той самий результат.
- Інтерпретований : Java інтерпретується так само, як і мова на основі компілятора.
- Міцний : такі функції, як збір сміття, обробка винятків тощо, які роблять мову надійною.
- Об'єктно-орієнтований : Java — це об’єктно-орієнтована мова, яка підтримує поняття класу, об’єктів, чотирьох стовпів OOPS тощо.
- Забезпечено : оскільки ми можемо напряму надати користувачеві доступ до програми, не повідомляючи саму програму, робить Java безпечною мовою.
- Висока ефективність: швидше, ніж інші традиційні інтерпретовані мови програмування.
- Динамічний : підтримує динамічне завантаження класів та інтерфейсів.
- Розповсюджується : функція Java дозволяє нам отримувати доступ до файлів, викликаючи методи з будь-якої підключеної машини.
- Багатопотоковий : вирішуйте кілька завдань одночасно, визначаючи кілька потоків
- Архітектура Нейтральна : не залежить від архітектури.
3. Що таке JVM?

JVM означає Java Virtual Machine, це інтерпретатор Java. Він відповідає за завантаження, перевірку та виконання байт-коду, створеного в Java.
Хоча це залежить від платформи, що означає, що програмне забезпечення JVM відрізняється для різних операційних систем, воно відіграє важливу роль у створенні незалежності платформи Java.
Щоб дізнатися більше про тему, див JVM в Java .
4. Що таке JIT?

JIT означає (Just-in-Time) компілятор є частиною JRE (Java Runtime Environment), він використовується для кращої продуктивності програм Java під час виконання. Використання JIT згадується в покроковому процесі, згаданому нижче:
- Вихідний код скомпільовано з javac компілятор для формування байт-коду
- Байт-код далі передається до JVM
- JIT є частиною JVM, JIT відповідає за компіляцію байт-коду в машинний код під час виконання.
- JIT-компілятор увімкнено всюди, але він активується під час виклику методу. Для скомпільованого методу JVM безпосередньо викликає скомпільований код, а не інтерпретує його.
- Оскільки JVM викликає скомпільований код, який підвищує продуктивність і швидкість виконання.
Щоб дізнатися більше про тему, див JIT в Java .
5. Які сховища пам'яті доступні з JVM?

JVM складається з кількох сховищ пам’яті, як зазначено нижче:
- Область класу (метод): зберігає дані рівня класу кожного класу, такі як пул констант часу виконання, дані полів і методів, а також код для методів.
- Купа: об’єкти створюються або об’єкти зберігаються. Він використовується для виділення пам'яті об'єктам під час виконання.
- Стек: зберігає дані та часткові результати, які знадобляться під час повернення значення для методу та виконання динамічного зв’язування
- Реєстр лічильника програми: зберігає адресу інструкції віртуальної машини Java, яка виконується в даний момент.
- Стек рідних методів: зберігає всі власні методи, які використовуються в програмі.
Щоб дізнатися більше про тему, див Сховища пам'яті JVM .
6. Що таке завантажувач класів?
Classloader є частиною JRE (Java Runtime Environment), під час виконання байт-коду або створеного .class файлу classloader відповідає за динамічне завантаження класів Java та інтерфейсів до JVM (Java Virtual Machine). Через завантажувачі класів системі виконання Java не потрібно знати про файли та файлові системи.
Щоб дізнатися більше про тему, див ClassLoader в Java.
7. Різниця між JVM, JRE і JDK.
JVM : JVM, також відома як віртуальна машина Java, є частиною JRE. JVM — це тип інтерпретатора, який відповідає за перетворення байт-коду в машиночитаний код. Сама JVM залежить від платформи, але вона інтерпретує байт-код, що є причиною незалежності Java від платформи.
JRE : JRE означає Java Runtime Environment, це інсталяційний пакет, який забезпечує середовище для запуску програми або програми Java на будь-якій машині.
JDK : JDK означає Java Development Kit, який забезпечує середовище для розробки та виконання програм Java. JDK — це пакет, який включає дві речі: інструменти розробки для забезпечення середовища для розробки ваших програм на Java та JRE для виконання програм або програм на Java.
Щоб дізнатися більше про тему, зверніться до Відмінності між JVM, JRE та JDK .
8. Які відмінності між Java і C++?
Основа | C++ | Java |
|---|---|---|
Платформа | C++ залежить від платформи | Java не залежить від платформи |
застосування | C++ в основному використовується для системного програмування | Java в основному використовується для програмування додатків |
Обладнання | C++ ближче до апаратного забезпечення | Java не дуже взаємодіє з апаратним забезпеченням |
Глобальний масштаб | C++ підтримує глобальну область і простір імен. | Java не підтримує глобальну область. |
Не підтримується | Функціональні можливості, які підтримуються в Java, але не в C++:
| У C++, але не в Java, підтримуються такі функції:
|
Ой | C++ є об'єктно-орієнтованою мовою. Це не однокоренева ієрархія. | Java також є об'єктно-орієнтованою мовою. Це єдина коренева ієрархія, оскільки все походить від одного класу (java.lang.Object). |
Дерево успадкування | C++ завжди створює нове дерево успадкування. | Java використовує єдине дерево успадкування, оскільки класи в Java є дочірніми класами об’єктів у Java. |
9. Поясніть public static void main(String args[]) у Java.

На відміну від будь-якої іншої мови програмування, як-от C, C++ тощо. У Java ми оголосили функцію main як public static void main (String args[]). Значення термінів наведено нижче:
- громадськість : public — це модифікатор доступу, відповідальний за згадку про те, хто може отримати доступ до елемента або методу та яке обмеження. Він відповідає за глобальну доступність основної функції. Його оприлюднюють, щоб JVM могла викликати його поза класом, оскільки його немає в поточному класі.
- статичний : static — це ключове слово, яке використовується для того, щоб ми могли використовувати елемент без ініціювання класу, щоб уникнути непотрібного виділення пам’яті.
- недійсний : void — це ключове слово, яке використовується для визначення того, що метод нічого не повертає. Оскільки функція main нічого не повертає, ми використовуємо void.
- основний : main означає, що оголошена функція є основною. Це допомагає JVM визначити, що оголошена функція є основною.
- Рядкові аргументи [] : зберігає аргументи командного рядка Java і є масивом типу java.lang.String class.
10. Що таке пул рядків Java?
Пул рядків Java — це місце в пам'яті купи, де зберігаються всі рядки, визначені в програмі. Окреме місце в стеку, де зберігається змінна, що зберігає рядок. Кожного разу, коли ми створюємо новий рядковий об’єкт, JVM перевіряє наявність об’єкта в пулі String. Якщо String доступний у пулі, те саме посилання на об’єкт спільно використовується зі змінною, інакше створюється новий об’єкт.

приклад:
String str1='Hello'; // 'Hello' will be stored in String Pool // str1 will be stored in stack memory>
11. Що станеться, якщо ми не оголосимо main як static?
Ми можемо оголосити основний метод без використання static і без помилок. Але основний метод не розглядатиметься як точка входу до програми чи програми.
12. Що таке пакети в Java?
Пакети в Java можна визначити як групування пов’язаних типів класів, інтерфейсів тощо, які забезпечують доступ до захисту та керування простором імен.
13. Чому використовуються пакети?
Пакети використовуються в Java, щоб запобігти конфліктам імен, контролювати доступ і полегшити пошук/пошук і використання класів, інтерфейсів тощо.
14. Які переваги пакетів у Java?
Існують різні переваги визначення пакетів у Java.
- Пакунки уникають зіткнення імен.
- Пакет забезпечує легший контроль доступу.
- Ми також можемо мати приховані класи, які не видно ззовні та використовуються пакетом.
- Легше знайти споріднені класи.
15. Скільки типів пакунків існує в Java?
У Java існує два типи пакетів
- Визначені користувачем пакети
- Вбудовані пакети
16. Поясніть різні типи даних у Java.
У Java існує 2 типи типів даних, як зазначено нижче:
- Примітивний тип даних
- Непримітивний тип даних або тип даних об’єкта
Примітивний тип даних: примітивні дані — це окремі значення без спеціальних можливостей. Існує 8 примітивних типів даних:
- логічний : зберігає значення true або false
- байт : зберігає 8-розрядне ціле число зі знаком
- char : зберігає один 16-бітний символ Unicode
- короткий : зберігає 16-бітове ціле число зі знаком
- внутр : зберігає 32-розрядне ціле число зі знаком
- довго : зберігає 64-розрядне ціле число з двома доповненнями
- плавати : зберігає 32-розрядний IEEE 754 з плаваючою точкою
- подвійний : зберігає 64-розрядне число з плаваючою комою IEEE 754 подвійної точності
Непримітивний тип даних: довідкові типи даних міститимуть адресу пам’яті значень змінної, оскільки вони не можуть безпосередньо зберігати значення в пам’яті. Типи непримітивних згадані нижче:
- рядки
- Масив
- Клас
- Об'єкт
- Інтерфейс
17. Коли використовується тип даних byte?
Байт — це 8-розрядне ціле число зі знаком із двома доповненнями. Мінімальне значення, яке підтримується байтами, становить -128, а 127 є максимальним значенням. Він використовується в умовах, коли нам потрібно заощадити пам’ять, а обмеження необхідних чисел становить від -128 до 127.
18. Чи можемо ми оголосити Pointer у Java?
Ні, Java не підтримує Pointer. Оскільки Java мала бути більш безпечною, тому що яка функція вказівника не передбачена в Java.
19. Яке значення типу даних byte за замовчуванням у Java?
Стандартне значення типу даних byte в Java дорівнює 0.
20. Яке значення за замовчуванням для типів даних float і double у Java?
Стандартне значення float — 0,0f, а double — 0,0d у Java.
21. Що таке клас Wrapper в Java?
Обгортка, як правило, відноситься до більшої сутності, яка інкапсулює меншу сутність. Тут, у Java, клас оболонки є класом об’єкта, який інкапсулює примітивні типи даних.
Примітивні типи даних – це ті, з яких можуть бути створені подальші типи даних. Наприклад, цілі числа можуть призвести до створення довгих, байтових, коротких тощо. З іншого боку, рядок не може, отже, він не є примітивним.
Повертаючись до класу оболонки, Java містить 8 класів оболонки. Це логічний, байтовий, короткий, цілий, символьний, довгий, плаваючий і подвійний. Крім того, спеціальні класи-оболонки також можна створювати в Java, що подібно до концепції структури в мові програмування C. Ми створюємо власний клас-обгортку з необхідними типами даних.
22. Навіщо нам потрібні класи-огортки?
Клас-оболонка — це клас об’єктів, який інкапсулює примітивні типи даних, і вони нам потрібні з наступних причин:
- Класи-огортки є остаточними та незмінними
- Надає такі методи, як valueOf(), parseInt() тощо.
- Він забезпечує функцію автопакування та розпакування.
23. Розрізняйте змінні екземпляра та локальні.
Змінна екземпляра | Локальна змінна |
|---|---|
Оголошується поза методом, безпосередньо викликається методом. | Оголошено в межах методу. |
Має значення за умовчанням. | Немає значення за умовчанням |
Його можна використовувати протягом усього класу. | Сфера застосування обмежена методом. |
24. Які значення за замовчуванням призначаються змінним і примірникам у Java?
У Java. Якщо ми не ініціалізували змінні екземпляра, то компілятор ініціалізує їх значеннями за замовчуванням. Значення за замовчуванням для екземплярів і змінних залежать від їхніх типів даних. Деякі поширені типи типів даних за замовчуванням:
- Значення за умовчанням для числових типів (byte, short, int, long, float і double) дорівнює 0.
- Значенням за замовчуванням для логічного типу є false.
- Значення за замовчуванням для типів об’єктів (класів, інтерфейсів і масивів) дорівнює null.
- Нульовий символ, u0000, є значенням за замовчуванням для типу char.
приклад:
Java // Java Program to demonstrate use of default values import java.io.*; class GFG { // static values static byte b; static int i; static long l; static short s; static boolean bool; static char c; static String str; static Object object; static float f; static double d; static int[] Arr; public static void main(String[] args) { // byte value System.out.println('byte value' + b); // short value System.out.println('short value' + s); // int value System.out.println('int value' + i); // long value System.out.println('long value' + l); System.out.println('boolean value' + bool); System.out.println('char value' + c); System.out.println('float value' + f); System.out.println('double value' + d); System.out.println('string value' + str); System.out.println('object value' + object); System.out.println('Array value' + Arr); } }> Вихід
byte value0 short value0 int value0 long value0 boolean valuefalse char value float value0.0 double value0.0 string valuenull object valuenull Array valuenull>
25. Що таке змінна класу?
У Java змінна класу (також відома як статична змінна) — це змінна, яка оголошується в класі, але поза будь-яким методом, конструктором або блоком. Змінні класу оголошуються за допомогою ключового слова static, і вони спільні для всіх екземплярів (об’єктів) класу, а також для самого класу. Незалежно від того, скільки об’єктів походить від класу, кожна змінна класу існуватиме лише один раз.
приклад:
Java // Java program to demonstrate use of Clas Variable class GFG { public static int ctr = 0; public GFG() { ctr++; } public static void main(String[] args) { GFG obj1 = new GFG(); GFG obj2 = new GFG(); GFG obj3 = new GFG(); System.out.println('Number of objects created are ' + GFG.ctr); } }> Вихід
Number of objects created are 3>
26. Яке значення за замовчуванням зберігається в локальних змінних?
З локальними змінними не зберігається значення за замовчуванням. Крім того, примітивні змінні та об’єкти не мають значень за замовчуванням.
27. Поясніть різницю між змінною екземпляра та змінною класу.
Змінна екземпляра: Змінна класу без статичного модифікатора, відома як змінна екземпляра, зазвичай використовується спільно для всіх екземплярів класу. Ці змінні можуть мати різні значення для кількох об’єктів. Вміст змінної екземпляра повністю не залежить від одного екземпляра об’єкта від іншого, оскільки вони пов’язані з конкретним екземпляром об’єкта класу.
приклад:
Java // Java Program to demonstrate Instance Variable import java.io.*; class GFG { private String name; public void setName(String name) { this.name = name; } public String getName() { return name; } public static void main(String[] args) { GFG obj = new GFG(); obj.setName('John'); System.out.println('Name ' + obj.getName()); } }> Вихід
Name John>
Змінна класу: Class Variable Змінна може бути оголошена будь-де на рівні класу за допомогою ключового слова static. Ці змінні можуть мати лише одне значення, коли застосовуються до різних об’єктів. Усі члени класу можуть спільно використовувати ці змінні, оскільки вони не пов’язані з жодним конкретним об’єктом класу.
приклад:
Java // Java Program to demonstrate Class Variable import java.io.*; class GFG { // class variable private static final double PI = 3.14159; private double radius; public GFG(double radius) { this.radius = radius; } public double getArea() { return PI * radius * radius; } public static void main(String[] args) { GFG obj = new GFG(5.0); System.out.println('Area of circle: ' + obj.getArea()); } }> Вихід
Area of circle: 78.53975>
28. Що таке статична змінна?
Ключове слово static використовується для спільного використання однієї змінної або методу даного класу. Статичні змінні — це змінні, які після оголошення створюють єдину копію змінної, яка використовується для всіх об’єктів на рівні класу.
29. Яка різниця між System.out, System.err і System.in?
System.out – Це PrintStream, який використовується для запису символів або, можна сказати, може виводити дані, які ми хочемо записати, на консоль/термінал інтерфейсу командного рядка.
приклад:
Java // Java Program to implement // System.out import java.io.*; // Driver Class class GFG { // Main Function public static void main(String[] args) { // Use of System.out System.out.println(''); } }>
System.err – Він використовується для відображення повідомлень про помилки.
приклад:
Java // Java program to demonstrate // System.err import java.io.*; // Driver Class class GFG { // Main function public static void main(String[] args) { // Printing error System.err.println( 'This is how we throw error with System.err'); } }> Вихід:
This is how we throw error with System.err>
Хоча System.err має багато подібностей, обидва вони також мають досить багато відмінностей, давайте перевіримо їх.
| System.out | System.err |
|---|---|
Він буде друкувати за стандартом поза системою. | Він друкуватиме стандартну помилку. |
Здебільшого використовується для відображення результатів на консолі. | Здебільшого використовується для виведення текстів помилок. |
Він виводить на консоль стандартний (чорний) колір. | Він також дає вихід на консоль, але більшість IDE надають йому червоний колір для розрізнення. |
System.in – Це InputStream, який використовується для читання вхідних даних із вікна терміналу. Ми не можемо використовувати System.in напряму, тому використовуємо клас Scanner для введення даних із system.in.
приклад:
Java // Java Program to demonstrate // System.in import java.util.*; // Driver Class class Main { // Main Function public static void main(String[] args) { // Scanner class with System.in Scanner sc = new Scanner(System.in); // Taking input from the user int x = sc.nextInt(); int y = sc.nextInt(); // Printing the output System.out.printf('Addition: %d', x + y); } }> Вихід:
3 4 Addition: 7>
30. Що ви розумієте під потоком IO?

Java пропонує різні потоки зі своїм пакетом вводу-виводу, який допомагає користувачеві виконувати всі операції введення-виведення. Ці потоки підтримують усі типи об’єктів, типи даних, символи, файли тощо для повного виконання операцій введення/виведення.
31. Яка різниця між ієрархією класів Reader/Writer та ієрархією класів InputStream/OutputStream?
Ключова відмінність між ними полягає в тому, що дані потоку байтів читаються та записуються класами потоку введення/виведення. Символи обробляються класами Reader і Writer. На відміну від класів Reader/Writer, які приймають масиви символів як параметри, методи класу потоку введення/виведення приймають масиви байтів. У порівнянні з потоками вводу/виводу, класи Reader/Writer ефективніші, обробляють усі символи Unicode та корисні для інтерналізації. Використовуйте класи Reader/Writer замість двійкових даних, наприклад зображень, якщо ви цього не зробите.
приклад:
Java // Java Program to demonstrate Reading Writing Binary Data // with InputStream/OutputStream import java.io.*; class GFG { public static void main(String[] args) { try { // Writing binary data to a file using OutputStream byte[] data = {(byte) 0xe0, 0x4f, (byte) 0xd0, 0x20, (byte) 0xea}; OutputStream os = new FileOutputStream('data.bin'); os.write(data); os.close(); // Reading binary data from a file using InputStream InputStream is = new FileInputStream('data.bin'); byte[] newData = new byte[5]; is.read(newData); is.close(); // Printing the read data for (byte b : newData) { System.out.println(b); } } catch (IOException e) { e.printStackTrace(); } } }> Вихід
-32 79 -48 32 -22>
32. Які найвищі класи для всіх потоків?
Усі класи потоку можна розділити на два типи класів: класи ByteStream і класи CharacterStream. Класи ByteStream далі поділяються на класи InputStream і класи OutputStream. Класи CharacterStream також поділяються на класи Reader і Writer. Класи SuperMost для всіх класів InputStream — це java.io.InputStream, а для всіх класів вихідних потоків — java.io.OutPutStream. Подібним чином, для всіх класів читачів найвищим класом є java.io.Reader, а для всіх класів письменників — java.io.Writer.
33. Що таке FileInputStream і FileOutputStream?
Для читання та запису даних Java пропонує потоки введення-виведення. Потік представляє джерело введення або призначення виводу, яким може бути файл, пристрій введення/виведення, інша програма тощо. FileInputStream у Java використовується для читання даних із файлу як потоку байтів. Здебільшого він використовується для читання двійкових даних, таких як зображення, аудіофайли або серіалізовані об’єкти.
приклад:
File file = new File('path_of_the_file'); FileInputStream inputStream = new FileInputStream(file);>У Java, FileOutputStream функція використовується для запису даних байт за байтом у заданий файл або файловий дескриптор. Зазвичай необроблені байтові дані, наприклад зображення, записуються у файл за допомогою FileOutputStream.
приклад:
File file = new File('path_of_the_file'); FileOutputStream outputStream = new FileOutputStream(file);>34. Яка мета використання класів BufferedInputStream і BufferedOutputStream?
Коли ми працюємо з файлами або потоком, то для підвищення продуктивності вводу/виводу програми нам потрібно використовувати класи BufferedInputStream і BufferedOutputStream. Ці обидва класи забезпечують можливість буферизації, що означає, що дані будуть зберігатися в буфері перед записом у файл або читанням його з потоку. Це також зменшує кількість разів, коли наша ОС повинна взаємодіяти з мережею або диском. Буферизація дозволяє програмам записувати велику кількість даних замість того, щоб записувати їх невеликими фрагментами. Це також зменшує накладні витрати на доступ до мережі або диска.
BufferedInputStream(InputStream inp); // used to create the bufferinput stream and save the arguments.>
BufferedOutputStream(OutputStream output); // used to create a new buffer with the default size.>
35. Що таке FilterStreams?
Фільтр потоку або фільтр потоків повертає потік, що складається з елементів цього потоку, які відповідають заданому предикату. Під час роботи filter() він фактично не виконує фільтрацію, а натомість створює новий потік, який під час проходження містить елементи початкових потоків, які відповідають заданому предикату.
приклад:
FileInputStream fis =new FileInoutStream('file_path'); FilterInputStream = new BufferedInputStream(fis);>
36. Що таке фільтр введення/виведення?
Фільтр вводу/виводу також визначений як фільтр вводу-виводу — це об’єкт, який читає з одного потоку та записує дані до джерел введення та виведення. Для використання цього фільтра використовувався пакет java.io.
37. Скількома способами можна вводити дані з консолі?
Нижче наведено два способи отримання вхідних даних із консолі в Java:
- Використання аргументу командного рядка
- Використання буферизованого класу Reader
- Використання класу консолі
- Використання класу Scanner
Програма, яка демонструє використання кожного методу, наведена нижче.
приклад:
Java // Java Program to implement input // using Command line argument import java.io.*; class GFG { public static void main(String[] args) { // check if length of args array is // greater than 0 if (args.length > 0) { System.out.println( 'The command line arguments are:'); // iterating the args array and printing // the command line arguments for (String val : args) System.out.println(val); } else System.out.println('No command line ' + 'arguments found.'); } } // Use below commands to run the code // javac GFG.java // java Main techcodeview.com> Java // Java Program to implement // Buffer Reader Class import java.io.*; class GFG { public static void main(String[] args) throws IOException { // Enter data using BufferReader BufferedReader read = new BufferedReader( new InputStreamReader(System.in)); // Reading data using readLine String x = read.readLine(); // Printing the read line System.out.println(x); } }> Java // Java program to implement input // Using Console Class public class GfG { public static void main(String[] args) { // Using Console to input data from user String x = System.console().readLine(); System.out.println('You entered string ' + x); } }> Java // Java program to demonstrate // working of Scanner in Java import java.util.Scanner; class GfG { public static void main(String args[]) { // Using Scanner for Getting Input from User Scanner in = new Scanner(System.in); String str = in.nextLine(); System.out.println('You entered string ' + str); } }> Вихід:
techcodeview.com>
38. Різниця у використанні print, println і printf.
print, println і printf all використовуються для друку елементів, але print друкує всі елементи, а курсор залишається в тому самому рядку. println переміщує курсор на наступний рядок. І з printf ми також можемо використовувати ідентифікатори формату.
39. Що таке оператори?
Оператори — це спеціальні типи символів, які використовуються для виконання деяких операцій над змінними та значеннями.
40. Скільки типів операторів доступно в Java?
Усі типи операторів у Java згадуються нижче:
- Арифметичні оператори
- Унарні оператори
- Оператор присвоєння
- Оператори відношення
- Логічні оператори
- Тернарний оператор
- Порозрядні оператори
- Оператори зсуву
- примірник оператора
Постфіксні оператори вважаються найвищим пріоритетом відповідно до пріоритету операторів Java.
41. Поясніть різницю між операторами>> і>>>.
Такі оператори, як>> і>>>, здаються однаковими, але діють дещо по-різному.>> оператор зсуває біти знака, а оператор>>> використовується для зсуву бітів із заповненими нулями.
приклад:
Java // Java Program to demostrate //>> і>>> оператори import java.io.*; // Клас драйвера GFG { public static void main(String[] args) { int a = -16, b = 1; // Використання>> System.out.println(a >> b); а = -17; b = 1; // Використання>>> System.out.println(a >>> b); } }> Вихід
-8 2147483639>
42. Який оператор Java є правоасоціативним?
Існує лише один правоасоціативний оператор, який є оператором =.
43. Що таке оператор крапки?
Оператор Dot в Java використовується для доступу до змінних екземплярів і методів об’єктів класу. Він також використовується для доступу до класів і підпакетів пакета.
44. Що таке коваріантний тип повернення?
Коваріантний тип повернення вказує, що тип повернення може змінюватися в тому ж напрямку, що й підклас. Можна мати різні типи повернення для методу перевизначення в дочірньому класі, але тип повернення дочірнього елемента має бути підтипом типу повернення батьківського класу, і через те, що метод перевизначення стає варіантом щодо типу повернення.
Ми використовуємо коваріантний тип повернення з таких причин:
- Уникає плутанини, наявної в ієрархії класів, і робить код читабельним, придатним для використання та обслуговуванням.
- Дає свободу мати більш конкретні типи повернення під час перевизначення методів.
- Допомога в запобіганні ClassCastExceptions під час виконання під час повернення.
45. Що таке перехідне ключове слово?
Ключове слово transient використовується під час серіалізації, якщо ми не хочемо зберігати значення певної змінної у файлі. Коли JVM стикається з тимчасовим ключовим словом, вона ігнорує вихідне значення змінної та зберігає значення за замовчуванням цього типу даних змінної.
46. Яка різниця між методами sleep() і wait()?
сон() | Зачекайте() |
|---|---|
Метод sleep() належить до класу потоків. | Метод Wait() належить до класу об'єктів. |
Режим сну не знімає блокування, яке утримує поточний потік. | wait() знімає блокування, що дозволяє іншим потокам отримати його. |
Цей метод є статичним. | Цей метод не є статичним. |
| Sleep() не створює InterruptedException. | InterruptedException відображається, якщо потік переривається під час очікування. |
В основному використовується для затримки потоку на певний проміжок часу. | В основному використовується для призупинення потоку, поки не буде сповіщено іншим потоком. |
Sleep() має два перевантажені методи:
| Wait() має три перевантажені методи:
|
47. Які відмінності між String і StringBuffer?
Рядок | StringBuffer |
|---|---|
| Зберігання послідовності символів. | Надає функціональність для роботи з рядками. |
| Це незмінно. | Він змінний (можна змінювати та виконувати інші операції над рядками). |
| Немає операцій потоку в рядку. | Це потокобезпечно (два потоки не можуть викликати методи StringBuffer одночасно) |
48. Які відмінності між StringBuffer і StringBuilder?
StringBuffer | StringBuilder |
|---|---|
| StringBuffer надає функціональність для роботи з рядками. | StringBuilder — це клас, який використовується для створення змінного рядка. |
| Це потокобезпечно (два потоки не можуть викликати методи StringBuffer одночасно) | Це небезпечно для потоків (два потоки можуть викликати методи одночасно) |
| Порівняно повільно, оскільки він синхронізований. | Будучи несинхронізованим, впровадження відбувається швидше |
49. Що з рядка чи буфера рядків слід віддати перевагу, коли в даних потрібно виконати багато оновлень?
Рядок є кращим над StringBuffer, оскільки StringBuilder швидший за StringBuffer, але об’єкти StringBuffer є кращими, оскільки вони забезпечують більшу безпеку потоку.
50. Чому StringBuffer називається змінним?
Клас StringBuffer в Java використовується для представлення змінного рядка символів. Він пропонує альтернативу незмінному класу String, дозволяючи змінювати вміст рядка без постійного створення нових об’єктів. Змінні (модифіковані) рядки створюються за допомогою класу StringBuffer. Клас StringBuffer в Java ідентичний класу String, за винятком того, що він змінний.
приклад:
Java // Java Program to demonstrate use of stringbuffer public class StringBufferExample { public static void main(String[] args) { StringBuffer s = new StringBuffer(); s.append('Geeks'); s.append('for'); s.append('Geeks'); String message = s.toString(); System.out.println(message); } }> Вихід
techcodeview.com>
51. Чим створення рядка за допомогою new() відрізняється від створення літералу?
Рядок із використанням new() відрізняється від літералу, оскільки коли ми оголошуємо рядок, він зберігає елементи в пам’яті стеку, тоді як коли він оголошується за допомогою new(), він виділяє динамічну пам’ять у пам’яті купи. Об’єкт створюється в пам’яті купи, навіть якщо присутній той самий об’єкт вмісту.
Синтаксис:
String x = new String('ABC');>

52. Що таке масив у Java?
Масив у Java — це структура даних, яка використовується для зберігання послідовності елементів одного типу фіксованого розміру. Доступ до елементів масиву можна отримати за їх індексом, який починається з 0 і досягає довжини мінус 1. Оголошення масиву в Java виконується за допомогою квадратних дужок, а розмір також вказується під час оголошення.
Синтаксис:
int[] Arr = new int[5];>
53. На якій пам'яті створюються масиви в Java?
Масиви в Java створюються в пам’яті купи. Коли масив створюється за допомогою ключового слова new, у купі виділяється пам’ять для зберігання елементів масиву. У Java пам’яттю купи керує віртуальна машина Java (JVM), і вона також ділиться між усіма потоками програми Java. Пам'ять, яка більше не використовується програмою, JVM використовує збирач сміття, щоб відновити пам'ять. Масиви в Java створюються динамічно, тобто розмір масиву визначається під час виконання програми. Розмір масиву вказується під час оголошення масиву та не може бути змінений після створення масиву.
54. Які є типи масиву?
Існує два типи масивів, тобто примітивні масиви та масиви посилань.
- Одновимірні масиви: Масиви, які мають лише один вимір, тобто масив цілих чисел або масив рядків, відомі як одновимірні масиви.

Синтаксис:
data_type[] Array_Name = new data_type[ArraySize];>
- Багатовимірні масиви: Масиви, які мають два або більше вимірів, наприклад двовимірні або тривимірні масиви.
55. Чому індекс масиву Java починається з 0?
Індекс масиву означає відстань від початку масиву. Отже, перший елемент має 0 відстані, тому початковий індекс дорівнює 0.
Синтаксис:
[Base Address + (index * no_of_bytes)]>
56. Яка різниця між масивом int[] і int[]?
Як int array[], так і int[] array використовуються для оголошення масиву цілих чисел у java. Єдина різниця між ними полягає в тому, що вони не мають функціональної різниці в синтаксисі.
int arr[] is a C-Style syntax to declare an Array.>
int[] arr is a Java-Style syntax to declare an Array.>
Однак зазвичай рекомендується використовувати синтаксис у стилі Java для оголошення масиву. Оскільки його легко читати та розуміти, він більш сумісний з іншими конструкціями мови Java.
57. Як скопіювати масив у Java?
У Java існує кілька способів копіювання масиву на основі вимог.
- метод clone() в Java: Цей метод у Java використовується для створення неглибокої копії даного масиву, що означає, що новий масив матиме ту саму пам’ять, що й оригінальний масив.
int[] Arr = { 1, 2, 3, 5, 0}; int[] tempArr = Arr.clone();>- метод arraycopy(): Щоб створити глибоку копію масиву, ми можемо використати цей метод, який створює новий масив із тими самими значеннями, що й вихідний масив.
int[] Arr = {1, 2, 7, 9, 8}; int[] tempArr = new int[Arr.length]; System.arraycopy(Arr, 0, tempArr, 0, Arr.length);>- метод copyOf(): Цей метод використовується для створення нового масиву певної довжини та копіювання вмісту вихідного масиву в новий масив.
int[] Arr = {1, 2, 4, 8}; int[] tempArr = Arrays.copyOf(Arr, Arr.length);>- метод copyOfRange(): Цей метод дуже схожий на метод copyOf() в Java, але він також дозволяє нам вказати діапазон елементів для копіювання з вихідного масиву.
int[] Arr = {1, 2, 4, 8}; int[] temArr = Arrays.copyOfRange(Arr, 0, Arr.length);>58. Що ви розумієте під зубчастим масивом?
Зубчастий масив у Java — це просто двовимірний масив, у якому кожен рядок масиву може мати різну довжину. Оскільки всі рядки у двовимірному масиві мають однакову довжину, але зубчастий масив забезпечує більшу гнучкість у розмірі кожного рядка. Ця функція дуже корисна в умовах, коли дані мають різну довжину або коли потрібно оптимізувати використання пам’яті.
Синтаксис:
int[][] Arr = new int[][] { {1, 2, 8}, {7, 5}, {6, 7, 2, 6} };>59. Чи можна зробити масив непостійним?
У Java неможливо створити volatile. Volatile ключові слова в Java можна застосовувати лише до окремих змінних, але не до масивів чи колекцій. Значення змінної завжди зчитується з основної пам’яті та записується в неї, якщо воно визначено як мінливе, а не кешується в локальній пам’яті потоку. Це полегшує переконання, що всі потоки, які мають доступ до змінної, можуть бачити зміни, внесені до неї.
60. Які переваги та недоліки масиву?

Перевагами Arrays є:
- Прямий і ефективний доступ до будь-якого елемента в колекції стає можливим завдяки масивам. Доступ до елементів масиву можна отримати за допомогою операції O(1), що означає, що час, необхідний для цього, є постійним і не залежить від розміру масиву.
- Дані можна ефективно зберігати в пам'яті за допомогою масивів. Розмір масиву відомий під час компіляції, оскільки його елементи зберігаються в безперервних областях пам’яті.
- Завдяки тому, що дані зберігаються в безперервних областях пам'яті, масиви забезпечують швидкий пошук даних.
- Масиви легко реалізувати та зрозуміти, що робить їх ідеальним вибором для початківців, які вивчають комп’ютерне програмування.
Недоліками масивів є:
- Масиви створюються із заздалегідь визначеним розміром, який вибирається в цей момент. Це означає, що якщо розмір масиву потрібно збільшити, потрібно буде створити новий масив, а дані потрібно буде скопіювати зі старого масиву в новий, що може зайняти багато часу та пам’яті.
- У просторі пам’яті масиву може бути невикористаний простір, якщо масив не повністю зайнятий. Якщо ви погано запам’ятаєте, це може бути проблемою.
- Порівняно з іншими структурами даних, такими як зв’язані списки та дерева, масиви можуть бути жорсткими через їхній фіксований розмір і обмежену підтримку складних типів даних.
- Оскільки всі елементи масиву мають бути одного типу даних, він не підтримує складні типи даних, такі як об’єкти та структури.
61. Що таке об'єктно-орієнтована парадигма?
Парадигма буквально означає шаблон або метод. Парадигми програмування — це методи вирішення програми чотирьох типів, а саме імперативної, логічної, функціональної та об’єктно-орієнтованої. Коли об’єкти використовуються як базові сутності, до яких застосовуються методи, виконуються функції інкапсуляції або успадкування, це відомо як об’єктно-орієнтована парадигма.
62. Які основні поняття ООП в Java?
Нижче наведено основні концепції ООП у Java:
- Спадщина
- Поліморфізм
- Абстракція
- Інкапсуляція
63. Чим об’єктно-орієнтована мова програмування відрізняється від об’єктно-орієнтованої мови програмування?
Об'єктно-орієнтована мова програмування | Об'єктно-орієнтована мова програмування |
|---|---|
| Об’єктно-орієнтована мова програмування охоплює більші поняття, такі як успадкування, поліморфізм, абстракція тощо. | Сфера застосування об'єктно-орієнтованого програмування обмежена використанням об'єктів та інкапсуляцією. |
| Він підтримує всі вбудовані об'єкти | Він підтримує не всі вбудовані об’єкти |
| Приклади: Java, C# тощо. | Приклади: сценарій Java, візуальні основи тощо. |
64. Чим оператор «new» відрізняється від оператора «newInstance()» у Java?
оператор new використовується для створення об’єктів, але якщо ми хочемо визначити тип об’єкта, який буде створено під час виконання, ми не можемо використати оператор new. У цьому випадку ми повинні використовувати метод newInstance(). .
65. Що таке класи в Java?
У Java класи — це набір об’єктів, що мають подібні характеристики та атрибути. Класи представляють план або шаблон, з якого створюються об'єкти. Класи не є сутностями реального світу, але допомагають нам створювати об’єкти, які є сутностями реального світу.
66. Яка різниця між статичним (класовим) методом і методом екземпляра?
Статичний (класовий) метод | Метод екземпляра |
|---|---|
Статичний метод асоціюється з класом, а не з об’єктом. | Метод екземпляра асоціюється з об’єктом, а не з класом. |
Статичні методи можна викликати лише за допомогою імені класу без створення екземпляра класу. | Метод екземпляра можна викликати в конкретному екземплярі класу за допомогою посилання на об’єкт. |
Статичні методи не мають доступу до це ключове слово . | Методи екземпляра мають доступ до це ключове слово . |
Цей метод може отримати доступ лише до статичних членів класу | Цей метод може отримати доступ як до статичних, так і до нестатичних методів класу. |
67. Що це за ключове слово в Java?

«this» — це ключове слово, яке використовується для посилання на змінну, яка посилається на поточний об’єкт.
68. Що таке короткі специфікатори доступу та типи специфікаторів доступу?

Специфікатори доступу в Java допомагають обмежити область класу, конструктора, змінної, методу або члена даних. Нижче наведено чотири типи специфікаторів доступу в Java:
- Громадський
- Приватний
- Захищений
- За замовчуванням
69. Яким буде початкове значення посилання на об’єкт, визначеного як змінна екземпляра?
Початкове значення посилання на об’єкт, яке визначено як змінна екземпляра, є значенням NULL.
70. Що таке об’єкт?
Об’єкт — це реальна сутність, яка має певні властивості та методи, пов’язані з нею. Об'єкт також визначається як екземпляр класу. Об’єкт можна оголосити за допомогою нового ключового слова.
71. Які існують способи створення об’єктів у Java?
Нижче наведено методи створення об’єктів у Java:
- Використання нового ключового слова
- Використання нового екземпляра
- Використання методу clone().
- Використання десеріалізації
- Використання методу newInstance() класу Constructor
Щоб дізнатися більше про методи створення об’єктів у Java, див Ця стаття .
72. Які переваги та недоліки клонування об’єктів?
Нижче наведено багато переваг і недоліків використання клонування об’єктів:
Переваги:
- У Java оператор присвоєння «=» не можна використовувати для клонування, оскільки він просто створює копію посилальних змінних. Щоб подолати таку невідповідність, можна використати метод clone() класу Object замість оператора присвоювання.
- Метод clone() є захищеним методом класу Object, що означає, що лише клас Employee може клонувати об’єкти Employee. Це означає, що жоден клас, крім Employee, не може клонувати об’єкти Employee, оскільки йому не відомі атрибути класу Employee.
- Розмір коду зменшується зі зменшенням кількості повторів.
- Дозволяє реплікацію (на кшталт шаблону прототипу), ініціалізація кожного поля вручну створює великий код, якщо об’єкт складний, це швидше за допомогою клонування.
Недоліки:
- Оскільки метод Object.clone() захищений, потрібно надати наш власний clone() і опосередковано викликати Object.clone() з нього.
- Якщо у нас немає жодних методів, тоді нам потрібно надати інтерфейс Cloneable, оскільки нам потрібно надати інформацію JVM, щоб ми могли виконати clone() для нашого об’єкта. Якщо ні, ми не можемо clone clone робить неглибоку копію полів, якщо ми просто поверніть super.clone() із методу clone, що може бути проблематичним.
73. Які переваги передачі this в метод замість самого поточного об’єкта класу?
Передача цього в метод замість самого поточного об’єкта класу має кілька переваг:
- це кінцева змінна, через яку їй не можна призначити жодне нове значення, тоді як поточний об’єкт класу може бути не остаточним і його можна змінити.
- це можна використовувати в синхронізованому блоці.
74. Що таке конструктор?
Конструктор - це спеціальний метод, який використовується для ініціалізації об'єктів. Конструктор викликається під час створення об’єкта. Назва конструктора така ж, як і у класу.
приклад:
// Class Created class XYZ{ private int val; // Constructor XYZ(){ val=0; } };>75. Що станеться, якщо ви не надасте конструктор у класі?
Якщо ви не надаєте конструктор у класі в Java, компілятор автоматично генерує конструктор за замовчуванням без аргументів і без операцій, який є конструктором за замовчуванням.
76. Скільки типів конструкторів використовується в Java?
У Java є два типи конструкторів, як зазначено нижче:
- Конструктор за замовчуванням
- Параметризований конструктор
Конструктор за замовчуванням: це тип, який не приймає жодних значень параметрів. Використовується для встановлення початкових значень атрибутів об’єкта.
class_Name(); // Default constructor called>
Параметризований конструктор: це тип конструктора, який приймає параметри як аргументи. Вони використовуються для призначення значень змінним екземплярів під час ініціалізації об’єктів.
class_Name(parameter1, parameter2......); // All the values passed as parameter will be // allocated accordingly>
77. Яке призначення конструктора за замовчуванням?
Конструктори допомагають створювати екземпляри класу або, можна сказати, створювати об’єкти класу. Конструктор викликається під час ініціалізації об'єктів. Конструктор за замовчуванням — це тип конструктора, який не приймає жодних параметрів, тому будь-яке значення, присвоєне властивостям об’єктів, вважається значенням за замовчуванням.
78. Що ви розумієте під конструктором копіювання в Java?
Конструктор копіювання — це тип конструктора, у якому ми передаємо інший об’єкт як параметр, тому що властивості обох об’єктів здаються однаковими, тому здається, що конструктори створюють копію об’єкта.
79. Де і як можна використовувати приватний конструктор?
Приватний конструктор використовується, якщо ви не хочете, щоб будь-який інший клас ініціював об’єкт, щоб уникнути створення підкласів. Використання приватного конструктора можна побачити як реалізоване в прикладі.
приклад:
Java // Java program to demonstrate implementation of Singleton // pattern using private constructors. import java.io.*; class GFG { static GFG instance = null; public int x = 10; // private constructor can't be accessed outside the // class private GFG() {} // Factory method to provide the users with instances static public GFG getInstance() { if (instance == null) instance = new GFG(); return instance; } } // Driver Class class Main { public static void main(String args[]) { GFG a = GFG.getInstance(); GFG b = GFG.getInstance(); a.x = a.x + 10; System.out.println('Value of a.x = ' + a.x); System.out.println('Value of b.x = ' + b.x); } }> Вихід
Value of a.x = 20 Value of b.x = 20>
80. Чим відрізняються конструктори від методів?
Для ініціалізації об'єктів використовуються конструктори Java. Під час створення конструктори викликаються для встановлення атрибутів для об’єктів, окрім кількох основних відмінностей між ними:
- Конструктори викликаються лише під час створення об’єкта, але інші методи можна викликати кілька разів протягом життя об’єкта.
- Конструктори нічого не повертають, тоді як інші методи можуть повертати будь-що.
- Конструктори використовуються для налаштування початкового стану, але методи використовуються для виконання певних дій.
81. Що таке інтерфейс?
Інтерфейс у Java — це набір статичних кінцевих змінних і абстрактних методів, які визначають договір або угоду для набору пов’язаних класів. Будь-який клас, який реалізує інтерфейс, повинен реалізовувати певний набір методів. Він визначає поведінку, яку повинен демонструвати клас, але не специфіку того, як він має бути реалізований.
Синтаксис:
interface { // constant fields // methds that are abstract by default }>приклад:
Java // Java Program to demonstrate Interface import java.io.*; interface Shape { double getArea(); double getPerimeter(); } class Circle implements Shape { private double radius; public Circle(double radius) { this.radius = radius; } public double getArea() { return Math.PI * radius * radius; } public double getPerimeter() { return 2 * Math.PI * radius; } } class GFG { public static void main(String[] args) { Circle circle = new Circle(5.0); System.out.println('Area of circle is ' + circle.getArea()); System.out.println('Perimeter of circle is' + circle.getPerimeter()); } }> Вихід
Area of circle is 78.53981633974483 Perimeter of circle is31.41592653589793>
82. Наведіть деякі особливості Інтерфейсу.
Інтерфейс у мові програмування Java визначається як абстрактний тип, який використовується для визначення поведінки класу. Інтерфейс у Java — це схема поведінки. Інтерфейс Java містить статичні константи та абстрактні методи.
Нижче наведено особливості інтерфейсу:
- Інтерфейс може допомогти досягти повної абстракції.
- Дозволяє нам використовувати багаторазове успадкування в Java.
- Будь-який клас може реалізувати декілька інтерфейсів, навіть якщо один клас може розширювати лише один клас.
- Він також використовується для досягнення слабкого зчеплення.
83. Що таке інтерфейс маркера?
Інтерфейс розпізнається як порожній інтерфейс (без поля чи методів), його називають інтерфейсом маркера. Прикладами маркерних інтерфейсів є серіалізований, клонований і віддалений інтерфейси.
84. Які відмінності між абстрактним класом та інтерфейсом?

Абстрактний клас | Клас інтерфейсу |
|---|---|
В абстрактному класі можна знайти як абстрактні, так і неабстрактні методи. | Інтерфейс містить лише абстрактні методи. |
Абстрактний клас підтримує методи Final. | Клас інтерфейсу не підтримує фінальні методи. |
Множинне успадкування не підтримується класом Abstract. | Інтерфейсний клас підтримує множинне успадкування. |
Ключове слово Abstract використовується для оголошення абстрактного класу. | Ключове слово інтерфейсу використовується для оголошення класу інтерфейсу. |
| розширити Ключове слово використовується для розширення абстрактного класу. | інвентар Ключове слово використовується для реалізації інтерфейсу. |
Абстрактний клас має такі члени, як protected, private тощо. | За замовчуванням усі члени класу є відкритими. |
85. Що ви маєте на увазі під інкапсуляцією даних?

Інкапсуляція даних — це концепція властивостей OOPS і характеристик класів, з якими пов’язаний інтерфейс. По суті, він об’єднує дані та методи, які працюють з цими даними, в одному блокі. Інкапсуляція досягається шляхом оголошення змінних екземплярів класу як приватних, що означає, що до них можна отримати доступ лише в межах класу.
86. Які переваги інкапсуляції в Java?
Нижче наведено переваги інкапсуляції в Java:
- Приховування даних: це спосіб обмеження доступу членів наших даних шляхом приховування деталей реалізації. Інкапсуляція також забезпечує спосіб приховування даних. Користувач не матиме уявлення про внутрішню реалізацію класу.
- Підвищена гнучкість: залежно від наших вимог ми можемо зробити змінні класу доступними лише для читання або лише для запису.
- Повторне використання: інкапсуляція також покращує можливість повторного використання та її легко змінити відповідно до нових вимог.
- Тестувати код легко: код легко тестувати для модульного тестування.
87. Яка основна перевага інкапсуляції?
Головною перевагою інкапсуляції в Java є її здатність захищати внутрішній стан об’єкта від зовнішньої модифікації або доступу. Це спосіб приховати деталі реалізації класу від зовнішнього доступу та відкрити лише публічний інтерфейс, який можна використовувати для взаємодії з класом. Основна перевага полягає в забезпеченні способу контролювати та керувати станом і поведінкою об’єкта, а також одночасно захищати його від модифікації та несанкціонованого доступу.
приклад:
Java // Java Program to demonstrate use of Encapsulation import java.io.*; class Person { private String Name; private int age; public String getName() { return Name; } public void setName(String Name) { this.Name = Name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } // Driver class class GFG { // main function public static void main(String[] args) { Person p = new Person(); p.setName('Rohan'); p.setAge(29); System.out.println('Name is ' + p.getName()); System.out.println('Age is ' + p.getAge()); } }> Вихід
Name is Rohan Age is 29>
88. Що ви маєте на увазі під агрегацією?

Агрегація — це термін, пов’язаний із зв’язком між двома класами, який найкраще охарактеризувати як зв’язок має-є. Цей вид є найбільш спеціалізованим варіантом асоціації. Це односпрямована асоціація, що означає односторонній зв’язок. Він містить посилання на інший клас і, як кажуть, володіє цим класом.
89. Що таке зв’язок «Є-А» в ООП Java?
«IS-A» — це тип зв’язку в ООП Java, де один клас успадковує інший клас.
inttostr java
90. Дайте визначення успадкування.
Коли об’єкт, який належить до підкласу, набуває всіх властивостей і поведінки батьківського об’єкта, який походить із суперкласу, це називається успадкуванням. Клас у класі називається підкласом, а останній — суперкласом. Підклас або дочірній клас називають специфічними, тоді як суперклас або батьківський клас є загальними. Спадкування забезпечує повторне використання коду.
91. Які різні типи успадкування в Java?
Спадкування — це метод, за допомогою якого клас Child може успадкувати функції класу Super або Parent. У Java успадкування буває чотирьох типів:
- Одинарне успадкування: Коли нащадок або підклас розширює лише один суперклас, відомо, що це єдине успадкування. Властивості однобатьківського класу передаються до дочірнього класу.
- Багаторівневе успадкування: Коли дочірній клас або підклас розширює будь-який інший підклас, створюється ієрархія успадкування, яка відома як багаторівневе успадкування. Іншими словами, один підклас стає батьківським класом іншого.
- Ієрархічне успадкування: Коли кілька підкласів походять від одного батьківського класу, це називається ієрархічним успадкуванням. Іншими словами, клас, який має одного батька, має багато підкласів.
- Множинне успадкування: Коли дочірній клас успадковує від кількох батьківських класів, це називається множинним успадкуванням. У Java він підтримує лише множинне успадкування інтерфейсів, а не класів.
92. Що таке множинне успадкування? Чи підтримується Java?
Компонент об'єктно-орієнтованого поняття, відомий як множинне успадкування, дозволяє класу успадковувати властивості багатьох батьківських класів. Коли методи з однаковою сигнатурою присутні як у суперкласах, так і в підкласах, виникає проблема. Виклик методу не може вказати компілятору, який метод класу слід викликати або навіть якому методу класу слід надати перевагу.
Примітка: Java не підтримує множинне успадкування
приклад:
Java // Java Program to show multiple Inheritance import java.io.*; interface Animal { void eat(); } interface Mammal { void drink(); } class Dog implements Animal, Mammal { public void eat() { System.out.println('Eating'); } public void drink() { System.out.println('Drinking'); } void bark() { System.out.println('Barking'); } } class GFG { public static void main(String[] args) { Dog d = new Dog(); d.eat(); d.drink(); d.bark(); } }> Вихід
Eating Drinking Barking>
93. Чим успадкування в C++ відрізняється від Java?
Спадкування в C++ | Спадкування в Java |
|---|---|
| C++ дозволяє користувачеві успадковувати декілька класів. | Java не підтримує множинне успадкування. |
| Коли клас створюється в C++, він не успадковує клас об’єкта, натомість існує сам по собі. | Кажуть, що Java завжди має єдине успадкування, оскільки всі класи тим чи іншим чином успадковують клас об’єктів. |
94. Чи є якісь обмеження щодо використання успадкування?
Так, існує обмеження щодо використання успадкування в Java, оскільки через успадкування можна успадкувати все від суперкласу та інтерфейсу, через що підклас надто кластеризований і іноді схильний до помилок, коли в певних ситуаціях виконується динамічне перевизначення або динамічне перевантаження.
95. Хоча успадкування є популярною концепцією ООП, воно менш вигідне, ніж композиція. Поясніть.
Спадкування — це популярна концепція об’єктно-орієнтованого програмування (ООП), у якій клас може успадковувати властивості та методи від будь-якого іншого класу, який називають батьківським або суперкласом. З іншого боку, у Композиції клас може містити екземпляр іншого класу як змінну-член, яку часто називають частиною або компонентом. Нижче наведено кілька причин, чому композиція є більш вигідною, ніж успадкування:
- Жорстке зчеплення: Щоразу, коли в суперклас вносяться будь-які зміни, ці зміни можуть вплинути на поведінку всіх його дочірніх класів або підкласів. Ця проблема робить код менш гнучким, а також створює проблеми під час обслуговування. Ця проблема також призводить до тісного зв'язку між класами.
- Крихка проблема базового класу: Коли зміни в базовому класі можуть порушити функціональність його похідних класів. Ця проблема може ускладнити додавання нових функцій або зміну існуючих. Ця проблема відома як проблема класу крихкої основи.
- Обмежене повторне використання: Успадкування в Java може призвести до обмеженого повторного використання коду, а також до дублювання коду. Оскільки підклас успадковує всі властивості та методи свого суперкласу, іноді він може закінчитися непотрібним кодом, який непотрібний. Це призводить до менш зручної підтримки кодової бази.
96. Що таке асоціація?
Асоціація — це відношення між двома окремими класами, встановлене через їхні об’єкти. Він представляє відносини Has-A.
97. Що ви маєте на увазі під агрегацією?
Композиція — це обмежена форма агрегації, у якій дві сутності сильно залежать одна від одної. Це представляє частина відносини.
98. Який склад Java?
Композиція передбачає відносини, де дит не може існувати самостійно батька. Наприклад, людське серце, серце не існує окремо від людини.
99. Вкажіть різницю між композицією та агрегацією.
Агрегація | Композиція |
|---|---|
Він визначає зв'язок між об'єктами | Він представляє частину відносин |
Об'єкти незалежні один від одного. | Об'єкти залежать один від одного. |
Зобразіть це за допомогою заповненого ромба. | Представте це, використовуючи порожній ромб. |
Дочірні об’єкти не мають часу життя. | Дочірні об’єкти мають тривалість життя. |
100. Чи можна успадкувати конструктор?
Ні, ми не можемо успадкувати конструктор.
101. Що таке поліморфізм?
Поліморфізм визначається як здатність приймати більше ніж одну форму. Він буває двох типів, а саме поліморфізм під час компіляції або перевантаження методу – функція, яка викликається під час компіляції. Наприклад, візьмемо «область» класу. За кількістю параметрів він може обчислити площу квадрата, трикутника або кола. Поліморфізм під час виконання або перевизначення методів – посилання під час виконання. Метод всередині класу перевизначає метод батьківського класу.
102. Що таке поліморфізм під час виконання або динамічна диспетчеризація методів?
Динамічна диспетчеризація методів — це механізм вирішення для перевизначення методів під час виконання. Перевизначення методу – це те, де метод у підкласі має таке ж ім’я, параметри та тип повернення, що й метод у суперкласі. Коли перевизначений метод викликається через посилання суперкласу, java визначає, яку версію (суперклас чи підклас) цього методу слід виконати на основі типу об’єкта, на який посилається під час виклику. Таким чином, рішення приймається під час виконання. Це називається диспетчеризацією динамічного методу.
103. Що таке перевизначення методу?
Перевизначення методу, також відоме як поліморфізм часу виконання, коли дочірній клас містить той самий метод, що й батьківський клас. Наприклад, у батьківському класі ми маємо метод під назвою «gfg()». Метод gfg() знову визначено в підкласі. Таким чином, коли gfg() викликається в підкласі, виконується метод у межах id класу. Тут gfg() у межах класу перевизначає зовнішній метод.
104. Що таке перевантаження методу?

Перевизначення методу — це метод досягнення поліморфізму під час виконання в Java. Перевизначення методу — це функція, яка дозволяє дочірньому класу надавати конкретну реалізацію методу, який уже надається одним із його батьківських класів. Коли метод у дочірньому класі має таке ж ім’я, ті самі параметри або підпис і той самий тип (або підтип) повернення, що й метод у його батьківському класі, тоді метод у підкласі, як кажуть, перевизначає метод у суперклас.
105. Чи можемо ми перевизначити статичний метод?
Ні, оскільки статичні методи є частиною класу, а не об’єкта, тому ми не можемо їх перевизначити.
106. Чи можемо ми перевизначити перевантажений метод?
Так, оскільки перевантажений метод є зовсім іншим методом в очах компілятора. Перевизначення – це зовсім не одне й те саме. Рішення про те, який метод викликати, відкладається на час виконання.
107. Чи можемо ми перевантажити метод main()?
Так, у Java ми можемо перевантажити основний метод, щоб викликати основний метод за допомогою попередньо визначеного методу виклику.
108. Що таке перевантаження методу та перевизначення методу?
Перевантаження методу: Він також відомий як поліморфізм часу компіляції. При перевантаженні методів два або більше методів спільно використовуються в одному класі з різною сигнатурою.
приклад:
Java // Java Program to demonstrate use of Method Overloading import java.io.*; class GFG { static int multiply(int a, int b) { return a * b; } static int multiply(int a, int b, int c) { return a * b * c; } static int multiply(int a, int b, int c, int d) { return a * b * c * d; } public static void main(String[] args) { System.out.println('multiply() with 2 parameters'); System.out.println(multiply(4, 5)); System.out.println('multiply() with 3 parameters'); System.out.println(multiply(2, 3, 4)); System.out.println('multiply() with 4 parameters'); System.out.println(multiply(2, 3, 4, 1)); } }> Вихід
multiply() with 2 parameters 20 multiply() with 3 parameters 24 multiply() with 4 parameters 24>
Перевизначення методу: Перевизначення методу відбувається, коли підклас може забезпечити реалізацію методу, який уже визначено в батьківському класі або суперкласі. Тип повернення, ім’я та аргументи мають бути подібними до методів у суперкласі.
приклад:
Java // Java Program to demonstrate use of Method Overriding import java.io.*; class Vehicle { void drive() { System.out.println('drive() method of base class'); System.out.println('driving the Car.'); } } class Car extends Vehicle { void drive() { System.out.println( 'drive() method of derived class'); System.out.println('Car is driving.'); } } class GFG { public static void main(String[] args) { Car c1 = new Car(); Vehicle v1 = new Vehicle(); c1.drive(); v1.drive(); Vehicle vehicle = new Car(); // drive() method of Vehicle class is overridden by // Car class drive() vehicle.drive(); } }> Вихід
drive() method of derived class Car is driving. drive() method of base class driving the Car. drive() method of derived class Car is driving.>
Перевантаження методу | Перевизначення методу |
|---|---|
Коли два або декілька методів знаходяться в одному класі з різними параметрами, але однаковими назвами. | Коли підклас забезпечує власну реалізацію методу, який уже визначено в батьківському класі. |
Перевантаження методів може статися лише в одному класі або між підкласом чи батьківським класом. | Перевизначення методу може відбуватися лише в підкласі. |
Коли виникає помилка, вона виявляється під час компіляції програми. | Коли виникає помилка, вона фіксується під час виконання програми. |
Приклад поліморфізму часу компіляції. | Приклад поліморфізму часу виконання. |
Перевантаження методів може вимагати або не вимагати успадкування. | Перевизначення методу завжди вимагає успадкування. |
Це відбувається всередині класу. | Виконується двома класами з правовідношенням успадкування. |
109. Чи можемо ми перевизначити приватні методи?
Неможливо перевизначити приватні методи в Java. Перевизначення методу полягає в тому, що метод у підкласі реалізується замість методу з батьківського класу. Приватні методи доступні лише в межах класу, у якому вони оголошені. Оскільки цей метод не видимий для інших класів і до нього неможливо отримати доступ, його не можна змінити.
110. Чи можемо ми змінити область перевизначеного методу в підкласі?
У Java неможливо змінити область перевизначеного методу. Область видимості методу підкласу має бути рівною або ширшою, ніж область перевизначеного методу суперкласу. Перевизначений метод у підкласі, наприклад, може мати публічну область або більш доступну область, як-от protected або default, якщо перевизначений метод у суперкласі має публічну область. Однак він не може мати більш ексклюзивний обсяг, як приватний.
111. Чи можемо ми змінити пункт throws методу суперкласу, перевизначаючи його в підкласі?
Ми можемо змінити пункт throws методу суперкласу з деякими обмеженнями, ми можемо змінити пункт throws методу суперкласу, перевизначаючи його в підкласі. Перевизначений метод підкласу може вказувати лише неперевірені винятки, якщо метод суперкласу не оголошує жодних винятків. Якщо метод суперкласу оголошує виняток, метод підкласу може оголосити той самий виняток, виняток підкласу або взагалі не оголосити виняток. Однак метод підкласу не може оголосити батьківський виняток, який є ширшим, ніж ті, що оголошені в методі суперкласу.
112. Чи можна мати віртуальні функції в Java?
Так, Java підтримує віртуальні функції. Функції за замовчуванням є віртуальними, і їх можна зробити невіртуальними за допомогою ключового слова final.
113. Що таке абстракція?
Абстракція відноситься до акту представлення суттєвих ознак без включення фонових деталей. Детальна інформація або реалізація прихована. Найпоширенішим прикладом абстракції є автомобіль, ми знаємо, як вмикати двигун, прискорюватися та рухатися, однак те, як працює двигун, і його внутрішні компоненти є складною логікою, прихованою від звичайних користувачів. Зазвичай це робиться, щоб впоратися зі складністю.
114. Що таке абстрактний клас?
Клас, оголошений як абстрактний, не може бути створений, тобто об’єкт не може бути створений. Він може містити або не містити абстрактні методи, але якщо клас має принаймні один абстрактний метод, він повинен бути оголошений абстрактним.
Приклад абстрактного класу з абстрактним методом:
Java // Java Program to implement // abstract method import java.io.*; // Abstract class abstract class Fruits { abstract void run(); } // Driver Class class Apple extends Fruits { void run() { System.out.println('Abstract class example'); } // main method public static void main(String args[]) { Fruits obj = new Apple(); obj.run(); } }> 115. Коли використовуються абстрактні методи?
Абстрактний метод використовується, коли ми хочемо використовувати метод, але хочемо, щоб дочірні класи вирішували реалізацію, у цьому випадку ми використовуємо абстрактні методи з батьківськими класами.
116. Як можна уникнути серіалізації в дочірньому класі, якщо базовий клас реалізує інтерфейс Serializable?
Серіалізація в дочірньому класі, якщо базовий клас реалізує інтерфейс Serializable, ми можемо уникнути цього, визначивши метод writeObject() і викинувши NotSerializableException().
117. Що таке Collection Framework в Java?
Колекції — це одиниці об’єктів у Java. Структура колекції — це набір інтерфейсів і класів у Java, які використовуються для представлення та керування колекціями об’єктів різноманітними способами. Структура колекції містить класи (ArrayList, Vector, LinkedList, PriorityQueue, TreeSet) і кілька інтерфейсів (Set, List, Queue, Deque), де кожен інтерфейс використовується для зберігання певного типу даних.
118. Поясніть різні інтерфейси, які використовуються в рамках колекції.
Колекційні рамки
- Інтерфейс колекції
- Інтерфейс списку
- Встановити інтерфейс
- Інтерфейс черги
- І інтерфейс
- Інтерфейс карти
Інтерфейс колекції: Колекція — це основний доступний інтерфейс, який можна імпортувати за допомогою java.util.Collection.
Синтаксис:
public interface Collection extends iterable>
119. Як можна синхронізувати ArrayList у Java?
ArrayList можна синхронізувати за допомогою двох описаних нижче методів:
- Використання Collections.synchronizedList()
- Використання CopyOnWriteArrayList
Використання Collections.synchronizedList():
public static List synchronizedList(List list)>
Використання CopyOnWriteArrayList:
- Створіть порожній список.
- Він реалізує інтерфейс списку
- Це потокобезпечний варіант ArrayList
- Т означає загальний
120. Навіщо нам потрібен синхронізований ArrayList, коли у Java є вектори (які синхронізовані)?
ArrayList потрібен, навіть якщо у нас є вектори, з певних причин:
- ArrayList швидший за Vectors.
- ArrayList підтримує багатопотоковість, тоді як Vectors підтримує лише однопотокове використання.
- ArrayList безпечніший у використанні, оскільки Vectors підтримує окремі потоки, а окремі операції менш безпечні та потребують більше часу для синхронізації.
- Вектори вважаються застарілими в Java через їх синхронізовану природу.
121. Чому ми не можемо створити загальний масив?
Загальні масиви не можна створити, оскільки масив несе інформацію про тип його елементів під час виконання, через що під час виконання викидає «ArrayStoreException», якщо тип елементів не схожий. Оскільки інформація про загальний тип стирається під час компіляції за допомогою Type Erasure, перевірка сховища масиву була б пройдена там, де вона мала б бути невдалою.
122. Безперервні місця пам’яті зазвичай використовуються для зберігання фактичних значень у масиві, але не в ArrayList. Поясніть.
Елементи масиву зберігаються в безперервних місцях пам’яті, що означає, що кожен елемент зберігається в окремому блоці на основі його розташування в масиві. Оскільки елементи масиву зберігаються в безперервних розташуваннях, можна відносно легко отримати доступ до будь-якого елемента за його індексом, оскільки адреса елемента може бути обчислена на основі розташування елемента. Але Java реалізує ArrayLists як динамічні масиви, що означає, що розмір може змінюватися, коли елементи видаляються або додаються. Елементи ArrayList не зберігаються в безперервних місцях пам’яті, щоб відповідати цій динамічній природі. Натомість ArrayList використовує метод, відомий як розширюваний масив, у якому основний масив за потреби розширюється до більшого розміру, а елементи потім копіюються в нове розташування. На відміну від ArrayList, який має динамічний розмір і не зберігає свої елементи в безперервних розташуваннях пам’яті, масив має фіксований розмір, і його елементи зберігаються там.
123. Поясніть метод перетворення ArrayList на Array і Array на ArrayList.
Перетворення списку в ArrayList
Існує кілька методів перетворення списку в ArrayList

Програмісти можуть перетворити масив на ArrayList за допомогою методу asList() класу Arrays. Це статичний метод класу Arrays, який приймає об’єкт List.
Синтаксис:
Arrays.asList(item)>
приклад:
Java // Java program to demonstrate conversion of // Array to ArrayList of fixed-size. import java.util.*; // Driver Class class GFG { // Main Function public static void main(String[] args) { String[] temp = { 'Abc', 'Def', 'Ghi', 'Jkl' }; // Conversion of array to ArrayList // using Arrays.asList List conv = Arrays.asList(temp); System.out.println(conv); } }> Вихід
[Abc, Def, Ghi, Jkl]>
Перетворення ArrayList на Array

Java-програмісти можуть конвертувати ArrayList у
Синтаксис:
List_object.toArray(new String[List_object.size()])>
приклад:
Java // Java program to demonstrate working of // Objectp[] toArray() import java.io.*; import java.util.List; import java.util.ArrayList; // Driver Class class GFG { // Main Function public static void main(String[] args) { // List declared List<Integer> arr = new ArrayList<Integer>(); arr.add(1); arr.add(2); arr.add(3); arr.add(2); arr.add(1); // Conversion Object[] objects = arr.toArray(); // Printing array of objects for (Object obj : objects) System.out.print(obj + ' '); } }> Вихід
1 2 3 2 1>
124. Як динамічно зростає розмір ArrayList? А також вкажіть, як це реалізовано всередині.
Завдяки тому, що ArrayLists базується на масиві, він динамічно зростає в розмірі, гарантуючи, що завжди буде достатньо місця для елементів. Коли елемент ArrayList створюється вперше, місткість за замовчуванням становить близько 10-16 елементів, що в основному залежить від версії Java. Елементи ArrayList копіюються з оригінального масиву в новий масив, коли ємність вихідного масиву заповнюється. Оскільки розмір ArrayList динамічно збільшується, клас створює новий масив більших розмірів і копіює всі елементи зі старого масиву в новий масив. Тепер посилання на новий масив використовується внутрішньо. Цей процес динамічного збільшення масиву відомий як зміна розміру.
125. Що таке вектор у Java?
Вектори в Java схожі і можуть зберігати в собі кілька елементів. Вектори дотримуються певних правил, наведених нижче:
- Vector можна імпортувати за допомогою Java.util.Vector.
- Вектор реалізовано за допомогою динамічного масиву, коли розмір вектора збільшується та зменшується залежно від елементів, які в нього вставлено.
- Елементи вектора з використанням індексів.
- Вектори синхронізовані за своєю природою, це означає, що вони використовують лише один потік (лише один процес виконується в певний час).
- Вектор містить багато методів, які не є частиною структури колекцій.
Синтаксис:
Vector gfg = new Vector(size, increment);>
126. Як зробити Java ArrayList лише для читання?
ArrayList можна підготувати лише за допомогою методу, наданого Collections за допомогою методу Collections.unmodifiableList().
Синтаксис:
array_readonly = Collections.unmodifiableList(ArrayList);>
приклад:
Java // Java program to demonstrate // unmodifiableList() method import java.util.*; public class Main { public static void main(String[] argv) throws Exception { try { // creating object of ArrayList <Character> ArrayList<Character> temp = new ArrayList<Character>(); // populate the list temp.add('X'); temp.add('Y'); temp.add('Z'); // printing the list System.out.println('Initial list: ' + temp); // getting readonly list // using unmodifiableList() method List<Character> new_array = Collections.unmodifiableList(temp); // printing the list System.out.println('ReadOnly ArrayList: ' + new_array); // Adding element to new Collection System.out.println('
If add element in ' + ' the ReadOnly ArrayList'); new_array.add('A'); } catch (UnsupportedOperationException e) { System.out.println('Exception is thrown : ' + e); } } }> Вихід
Initial list: [X, Y, Z] ReadOnly ArrayList: [X, Y, Z] If add element in the ReadOnly ArrayList Exception is thrown : java.lang.UnsupportedOperationException>
127. Що таке пріоритетна черга в Java?

Пріоритетна черга — це абстрактний тип даних, подібний до звичайної черги або стекової структури даних. Елементи, що зберігаються в елементах, залежать від пріоритету, визначеного від низького до високого. PriorityQueue базується на купі пріоритетів.
Синтаксис:
Java // Java program to demonstrate the // working of PriorityQueue import java.util.*; class PriorityQueueDemo { // Main Method public static void main(String args[]) { // Creating empty priority queue PriorityQueue<Integer> var1 = new PriorityQueue<Integer>(); // Adding items to the pQueue using add() var1.add(10); var1.add(20); var1.add(15); // Printing the top element of PriorityQueue System.out.println(var1.peek()); } }> Вихід
10>
128. Поясніть клас LinkedList.
Клас LinkedList — це Java, яка використовує подвійний зв’язаний список для зберігання елементів. Він успадковує клас AbstractList і реалізує інтерфейси List і Deque. Нижче наведено властивості класу LinkedList:
- Класи LinkedList не синхронізовані.
- Підтримує порядок вставки.
- Його можна використовувати як список, стек або чергу.
Синтаксис:
LinkedList list_name=new LinkedList();>
129. Що таке клас Stack в Java і які різні методи він надає?
Клас стека в Java — це структура даних LIFO, яка реалізує структуру даних «Останній прийшов — перший вийшов». Він походить від класу Vector, але має функції, специфічні для стеків. Клас Stack у java надає такі методи:
- peek(): повертає верхній елемент зі стеку, не вилучаючи його
- порожній(): повертає true, якщо стек порожній, і false в іншому випадку
- push(): штовхає елемент на вершину стека
- поп(): видаляє та повертає верхній елемент зі стека
- пошук(): повертає першу позицію об'єкта з вершини стека. Якщо об’єкта немає в стеку, він повертає -1
130. Що таке Set у рамках Java Collections і перелічіть його різні реалізації?
Набори — це колекції, які не зберігають повторювані елементи. Вони не зберігають порядок елементів. Структура колекцій Java надає кілька реалізацій інтерфейсу Set, зокрема:
- HashSet: HashSet у Java зберігає елементи в таблиці has, яка забезпечує швидший пошук і швидшу вставку. HashSet не впорядкований.
- LinkedHashSet: LinkedHashSet — це реалізація HashSet, яка підтримує порядок вставки елементів.
- TreeSet: TreeSet зберігає елементи в відсортованому порядку, який визначається природним порядком елементів або спеціальним компаратором, наданим під час створення.
131. Що таке клас HashSet в Java і як він зберігає елементи?
Клас HashSet реалізує інтерфейс Set у Java Collections Framework і є членом класу HashSet. На відміну від повторюваних значень, він зберігає набір різних елементів. У цій реалізації кожен елемент зіставляється з індексом у масиві за допомогою хеш-функції, а індекс використовується для швидкого доступу до елемента. Він створює індекс для елемента в масиві, де він зберігається, на основі вхідного елемента. Якщо припустити, що хеш-функція розподіляє елементи між сегментами належним чином, клас HashSet забезпечує продуктивність у постійному часі для базових операцій (додавання, видалення, вмісту та розміру).
132. Що таке LinkedHashSet у Java Collections Framework?
LinkedHashSet — це впорядкована версія Hashset, яка підтримується двозв’язаним списком у всіх елементах. Це дуже корисно, коли потрібен порядок ітерацій. Під час ітерації в LinkedHashSet елементи повертаються в тому ж порядку, в якому вони вставлені.
Синтаксис:
LinkedHashSet hs = new LinkedHashSet();>
приклад:
Java // Java Program to implement // LinkedHashSet import java.io.*; import java.util.*; // Driver Class class GFG { // Main Function public static void main(String[] args) { // LinkedHashSet declared LinkedHashSet<Integer> hs = new LinkedHashSet<Integer>(); // Add elements in HashSet hs.add(1); hs.add(2); hs.add(5); hs.add(3); // Print values System.out.println('Values:' + hs); } }> Вихід
Values:[1, 2, 5, 3]>
133. Що таке інтерфейс карти в Java?

Інтерфейс карти присутній у колекції Java і може використовуватися з пакетом Java.util. Інтерфейс карти використовується для відображення значень у формі форми ключ-значення. Карта містить усі унікальні ключі. Крім того, він надає пов’язані з ним методи, як-от containsKey(), contains value () тощо.
В інтерфейсі карт є кілька типів карт, як зазначено нижче:
- SortedMap
- TreeMap
- HashMap
- LinkedHashMap
134. Поясніть Treemap у Java
TreeMap – це тип карти, яка зберігає дані у формі пари ключ-значення. Реалізовано за допомогою червоно-чорного дерева. Особливості TreeMap:
- Він містить лише унікальні елементи.
- Він не може мати ключ NULL
- Він може мати кілька значень NULL.
- Він несинхронізований.
- Він підтримує порядок зростання.
135. Що таке EnumSet?
EnumSet — це спеціалізована реалізація інтерфейсу Set для використання з типом перерахування. Кілька особливостей EnumSet:
- Він несинхронізований.
- Швидше, ніж HashSet.
- Усі елементи в EnumSet мають походити від одного типу перерахування.
- Він не дозволяє нульові об’єкти та викидає NullPointerException для винятків.
- Він використовує безвідмовний ітератор.
Синтаксис:
public abstract class EnumSet>
Параметр: E визначає елементи.
136. Що таке BlockingQueue?

Черга блокування — це черга, яка підтримує операції, які очікують, поки черга стане непорожньою під час отримання та видалення елемента, і чекають, поки в черзі звільниться місце під час додавання елемента.
Синтаксис:
public interface BlockingQueue extends Queue>
Параметри: E — тип елементів, що зберігаються в колекції
137. Що таке ConcurrentHashMap в Java і чи реалізовано ви його?
ConcurrentHashMap реалізовано за допомогою Hashtable.
Синтаксис:
public class ConcurrentHashMap extends AbstractMap implements ConcurrentMap, Serializable>
Параметри : K – ключовий тип об’єкта, а V – тип об’єкта значення
138. Чи можете ви використовувати будь-який клас як ключ карти?
Так, ми можемо використовувати будь-який клас як ключ карти, якщо він відповідає певним попередньо визначеним правилам, згаданим нижче:
- Клас, який перевизначає метод equals(), також має перевизначати метод hashCode().
- Клас concurrentHashMap є потокобезпечним.
- Стандартний рівень паралелізму для ConcurrentHashMap становить 16.
- Вставлення нульових об’єктів у ConcurrentHashMap неможливе як ключ або значення.
139. Що таке ітератор?

Інтерфейс Iterator надає методи для повторення будь-якої колекції в Java. Ітератор є заміною Enumeration у Java Collections Framework. Він може отримати екземпляр ітератора з колекції за допомогою методу _iterator()_. Це також дозволяє абоненту видаляти елементи з базової колекції під час ітерації.
140. Що таке перерахування?
Перерахування – це визначений користувачем тип даних. Він в основному використовується для призначення імен інтегральним константам, імена роблять програму легкою для читання та підтримки. Основна мета enum — визначити визначені користувачем типи даних.
приклад:
// A simple enum example where enum is declared // outside any class (Note enum keyword instead of // class keyword) enum Color { RED, GREEN, BLUE; }>141. Яка різниця між колекцією та колекціями?
Колекція | Колекції |
|---|---|
Колекція — це інтерфейс. | Колекції - це клас. |
Він забезпечує стандартну функціональність структури даних. | Він призначений для сортування та синхронізації елементів колекції. |
Він надає методи, які можна використовувати для структури даних. | Він надає статичні методи, які можна використовувати для різних операцій. |
142. Розрізняйте Array і ArrayList у Java.
Масив | ArrayList |
|---|---|
Одновимірний або багатовимірний | Одновимірний |
Для і для кожного використовується для ітерації | Тут ітератор використовується для обходу riverArrayList |
Ключове слово length повертає розмір масиву. | Метод size() використовується для обчислення розміру ArrayList. |
Масив має фіксований розмір. | Розмір ArrayList є динамічним і може бути збільшений або зменшений у разі потреби. |
Це швидше, оскільки вище ми бачимо, що він має фіксований розмір | Це відносно повільніше через його динамічний характер |
Примітивні типи даних можна зберігати безпосередньо в малоймовірних об'єктах. | Примітивні типи даних не додаються безпосередньо до малоймовірних масивів, вони додаються опосередковано за допомогою автоматичного упаковування та розпакування |
Їх не можна додати сюди, тому тип належить до небезпечних. | Їх можна додати сюди, отже, роблячи ArrayList безпечним для типів. |
Оператор присвоєння служить лише меті | Тут використовується спеціальний метод, відомий як метод add(). |
143. Яка різниця між масивом і колекцією в Java?
Масив | Колекції |
|---|---|
Масив в Java має фіксований розмір. | Колекції в Java мають динамічні розміри. |
У масиві елементи зберігаються в безперервних місцях пам’яті. | У Колекціях Елементи не обов’язково зберігаються в безперервних розташуваннях пам’яті. |
Об’єкти та примітивні типи даних можна зберігати в масиві. | Ми можемо зберігати об’єкти лише в колекціях. |
Для зміни розміру масиву потрібні ручні маніпуляції. | Зміна розміру в колекціях обробляється автоматично. |
Масив має основні методи маніпулювання. | Колекції мають вдосконалені методи маніпулювання та ітерації. |
Масив доступний з початку появи Java. | Колекції були представлені в Java 1.2. |
144. Різниця між ArrayList і LinkedList.
ArrayList | LinkedList |
|---|---|
ArrayList реалізовано як розширюваний масив. | LinkedList реалізовано як подвійний список. |
У ArrayList елементи зберігаються в безперервних розташуваннях пам’яті | Елементи LinkedList зберігаються в несуміжних розташуваннях пам’яті, оскільки кожен елемент має посилання на наступний і попередній елементи. |
ArrayLists швидші для довільного доступу. | LinkedLists є швидшими для операцій вставки та видалення |
ArrayLists більш ефективні для пам’яті. | LinkedList менш ефективно використовує пам’ять |
ArrayLists Використовуйте більше пам’яті завдяки збереженню розміру масиву. | LinkedList Використовує менше пам’яті, оскільки містить лише посилання на елементи |
Операція пошуку в ArrayList відбувається швидше. | Операція пошуку в LinkedList повільніша |
145. Розрізняйте ArrayList і Vector в Java.
ArrayList | Вектор |
|---|---|
ArrayLists реалізовано як розширюваний масив. | Вектор реалізовано як масив, що росте. |
ArrayList не синхронізовано. | Вектор синхронізований. |
ArrayLists є швидшими для неконкурентних операцій. | Вектор працює повільніше для неконкурентних операцій через додаткові витрати на синхронізацію. |
ArrayLists були введені в Java 1.2. | Vector було представлено в JDK 1.0. |
Рекомендовано для використання в однопоточному середовищі. | Вектори рекомендовано для використання в багатопоточному середовищі. |
Початкова ємність ArrayLists за умовчанням становить 10. | У Vectors початкова ємність за замовчуванням становить 10, але приріст за замовчуванням у два рази перевищує розмір. |
Продуктивність ArrayList висока. | Векторна продуктивність низька. |
146. Яка різниця між Iterator і ListIterator?
Ітератор | ListIterator |
|---|---|
Можна перетинати елементи, наявні в колекції, лише в прямому напрямку. | Може перетинати елементи колекції як вперед, так і назад. |
Використовується для обходу карти, списку та набору. | Може проходити лише список, а не два інших. |
Індекси не можна отримати за допомогою Iterator | Він має такі методи, як nextIndex() і previousIndex() для отримання індексів елементів у будь-який час під час перегляду списку. |
Не можна змінювати або замінювати елементи, присутні в колекції | Можна змінювати або замінювати елементи за допомогою набору (E e) |
Неможливо додати елементи, а також викидає ConcurrentModificationException. | Можна легко додавати елементи до колекції в будь-який час. |
Певними методами Ітератора є next(), remove() і hasNext(). | Певними методами ListIterator є next(), previous(), hasNext(), hasPrevious(), add(E e). |
147. Розрізняйте HashMap і HashTable.
HashMap | HashTable |
|---|---|
HashMap не синхронізовано | HashTable синхронізовано |
Один ключ може мати значення NULL | Значення NULL не допускаються |
Ітератор використовується для обходу HashMap. | Можна використовувати як Iterator, так і Enumertar |
HashMap швидше. | HashTable повільніший порівняно з HashMap. |
148. Яка різниця між ітератором і перерахуванням?
Ітератор | Перерахування |
|---|---|
Ітератор може проходити як застарілі, так і не застарілі елементи. | Перерахування може проходити лише застарілі елементи. |
Ітератор є безвідмовним. | Перерахування не є безвідмовним. |
Ітератори повільніші. | Перерахування відбувається швидше. |
Ітератор може виконувати операцію видалення під час обходу колекції. | Перерахування може виконувати лише операції обходу колекції. |
149. Яка різниця між Comparable і Comparator?
Порівнянний | компаратор |
|---|---|
Інтерфейс присутній в пакеті java.lang. | Інтерфейс присутній у пакеті java.util. |
Надає метод compareTo() для сортування елементів. | Надає метод compare() для сортування елементів. |
Він забезпечує одну послідовність сортування. | Він забезпечує кілька послідовностей сортування. |
Логіка сортування повинна бути в тому ж класі, об'єкт якого ви збираєтеся сортувати. | Логіка сортування повинна бути в окремому класі, щоб писати різні сортування на основі різних атрибутів об'єктів. |
Метод сортує дані відповідно до фіксованого порядку сортування. | Метод сортує дані відповідно до налаштованого порядку сортування. |
Це впливає на початковий клас. | Це не впливає на оригінальний клас. |
Часто реалізується в API календарем, класами оболонки, датою та рядком. | Він реалізований для сортування екземплярів сторонніх класів. |
150. Яка різниця між Set і Map?
встановити | Карта |
|---|---|
Інтерфейс Set реалізований за допомогою пакета java.util. | Карта реалізована за допомогою пакета java.util. |
Він може розширити інтерфейс колекції. | Він не розширює інтерфейс колекції. |
Він не допускає повторюваних значень. | Це дозволяє повторювати значення. |
Набір може сортувати лише одне нульове значення. | Карта може сортувати кілька нульових значень. |
Питання для співбесіди про Java Intermediate
151. Поясніть ітератор FailFast та ітератор FailSafe разом із прикладами для кожного.
Ітератор FailFast — це ітератор, який видає a ConcurrentModificationException якщо він виявить, що базову колекцію було змінено під час використання ітератора. Це типова поведінка ітераторів у Java Collections Framework. Наприклад, ітератором для HashMap є FailFast.
приклад:
Java // Java Program to demonstrate FailFast iterator import java.io.*; import java.util.HashMap; import java.util.Iterator; import java.util.Map; class GFG { public static void main(String[] args) { HashMap<Integer, String> map = new HashMap<>(); map.put(1, 'one'); map.put(2, 'two'); Iterator<Map.Entry<Integer, String> > iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<Integer, String> entry = iterator.next(); // this will throw a // ConcurrentModificationException if (entry.getKey() == 1) { map.remove(1); } } } }> Вихід:
Exception in thread 'main' java.util.ConcurrentModificationException>
Ітератор FailSafe не кидає a ConcurrentModificationException якщо базову колекцію змінено під час використання ітератора. Крім того, він створює знімок колекції під час створення ітератора та виконує ітерації по знімку. Наприклад, ітератор для ConcurrentHashMap є FailSafe.
приклад:
Java
// Java Program to demonstrate FailSafe import java.io.*; import java.util.Iterator; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; class GFG { public static void main(String[] args) { ConcurrentHashMap<Integer, String> map = new ConcurrentHashMap<>(); map.put(1, 'one'); map.put(2, 'two'); Iterator<Map.Entry<Integer, String> > iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<Integer, String> entry = iterator.next(); // this will not throw an exception if (entry.getKey() == 1) { map.remove(1); } } } }> 152. Що таке обробка винятків?
Ан Виняток це подія, яка перериває нормальний хід програми та потребує спеціальної обробки. Під час виконання програми помилки та незаплановані події можна усунути за допомогою механізму обробки винятків Java. Нижче наведено кілька причин, чому в Java виникають винятки:
- Збій пристрою
- Втрата підключення до мережі
- Помилки коду
- Відкриття недоступного файлу
- Недійсні дані користувача
- Фізичні обмеження (брак дискової пам'яті)
153. Скільки типів винятків може виникати в програмі Java?

У Java зазвичай існує два типи винятків:
- Вбудовані винятки: Вбудовані винятки в Java надаються бібліотеками Java. Ці винятки можна далі розділити на дві підкатегорії, тобто перевірені та неперевірені винятки. Нижче наведено деякі з вбудованих винятків у Java:
- ArrayIndexOutOfBoundsExceptions
- ClassNotFoundException
- FileNotFoundException
- IOException
- NullPointerException
- ArithmeticException
- InterruptedException
- RuntimeException
- Винятки, визначені користувачем: Виняткові ситуації, визначені користувачем, визначаються самими програмістами для обробки певних ситуацій або помилок, які не охоплюються вбудованими винятковими ситуаціями. Щоб визначити визначені користувачем винятки, необхідно визначити новий клас, який розширює відповідний клас винятків. Визначені користувачем винятки в Java використовуються, коли в Java є вбудовані винятки.
154. Різниця між помилкою та винятком.
Помилки | Винятки |
|---|---|
Відновлення після помилок неможливе. | Відновлюйте винятки за допомогою блоку try-catch або повертаючи винятки абоненту. |
Усі помилки є неперевіреними типами в Java. | Він включає як перевірені, так і неперевірені типи, які зустрічаються. |
Помилки здебільшого викликані середовищем, у якому працює програма. | Програма здебільшого відповідає за створення винятків. |
Помилки можуть виникати як під час компіляції, так і під час виконання. Час компіляції: синтаксична помилка, час виконання: логічна помилка. | Усі винятки виникають під час виконання, але перевірені винятки відомі компілятору, а неперевірені – ні. |
Вони визначені в пакеті java.lang.Error. | Вони визначені в пакеті java.lang.Exception |
Приклади : java.lang.StackOverflowError, java.lang.OutOfMemoryError | Приклади : Перевірені винятки: SQLException, IOException Неперевірені винятки: ArrayIndexOutOfBoundException, NullPointerException, ArithmeticException. |
155. Поясніть ієрархію класів Java Exception.

Усі типи винятків і помилок у Java є підкласами класу throwable, який є базовим класом ієрархії. Потім цей клас використовується для виняткових умов, які програми користувача повинні вловити. NullPointerException є прикладом такого винятку. Інша гілка, помилка, використовується системою виконання Java для вказівки на помилки, пов’язані з JRE. StackOverflowError є прикладом однієї з таких помилок.
156. Поясніть винятки під час виконання.
Винятки під час виконання — це винятки, які виникають під час виконання коду, на відміну від винятків під час компіляції, які виникають під час компіляції. Винятки під час виконання є неперевіреними винятками, оскільки вони не враховуються JVM.
Приклади винятків часу виконання в Java включають:
- NullPointerException: це відбувається, коли програма намагається використати посилання на нульовий об’єкт.
- ArrayIndexOutOfBoundsException: це відбувається, коли програма намагається отримати доступ до індексу масиву, який знаходиться поза межами.
- ArithmeticException: це відбувається, коли програма намагається поділити на нуль.
- IllegalArgumentException: це відбувається, коли метод передається через недопустимий або невідповідний аргумент.
На відміну від перевірених винятків, винятки під час виконання не вимагають оголошення в пропозиції throws або захоплення в блоці try-catch. Проте обробку винятків під час виконання бажано, щоб надавати значущі повідомлення про помилки та запобігати збою системи. Оскільки винятки під час виконання надають більш точну інформацію про проблему, ніж перевірені винятки, вони дозволяють розробникам легше та швидше виявляти та виправляти помилки програмування.
157. Що таке NullPointerException?
Це тип винятку під час виконання, який виникає, коли програма намагається використати посилання на об’єкт, яке має нульове значення. Основне використання NullPointerException полягає в тому, щоб вказати, що посилальній змінній не присвоєно жодного значення, також він використовується для реалізації структур даних, таких як зв’язані списки та дерева.
158. Коли виникає виключення ArrayStoreException?
ArrayStoreException виникає, коли робиться спроба зберегти неправильний тип об’єкта в масиві об’єктів.
приклад:
Java
// Java Program to implement // ArrayStoreException public class GFG { public static void main(String args[]) { // Since Double class extends Number class // only Double type numbers // can be stored in this array Number[] a = new Double[2]; // Trying to store an integer value // in this Double type array a[0] = new Integer(4); } }> приклад:
Exception in thread 'main' java.lang.ArrayStoreException: java.lang.Integer at GFG.main(GFG.java:6)>
159. Яка різниця між перевіреним винятком і неперевіреним винятком?
Перевірений виняток:
Перевірені винятки — це винятки, які перевіряються під час компіляції програми. У програмі, якщо якийсь код у межах методу створює перевірений виняток, тоді метод повинен або обробити виняток, або вказати виняток за допомогою ключового слова throws.
Перевірені винятки бувають двох типів:
- Повністю перевірені винятки: усі дочірні класи також перевіряються, наприклад IOException і InterruptedException.
- Частково перевірені винятки: деякі з його дочірніх класів не перевірені, як Виняток.
Неперевірений виняток:
Неперевірені винятки, які не перевіряються під час компіляції програми. Винятки в класах Error і RuntimeException є неперевіреними винятками, усе інше під throwable перевіряється.
160. Який базовий клас для Error і Exception?

Помилка — це незаконна операція, виконана користувачем, яка спричиняє збій у роботі програми. Винятки — це несподівані події або умови, які виникають під час роботи програми; виняток порушує нормальний хід виконання інструкцій програми.
І помилки, і винятки мають спільний батьківський клас, яким є клас java.lang.Throwable.
161. Чи обов’язково, щоб після кожного блоку try слідував блок catch?
Ні, не обов’язково використовувати блок catch після блоку try в Java, оскільки ми можемо створити іншу комбінацію з блоком finally. Нарешті, це блок, який виконується незважаючи на те, виняток викинуто чи ні.
162. Що таке розповсюдження винятків?
Розповсюдження виключення — це процес, у якому виняток відкидається від верхньої до нижньої частини стека. Якщо виняток не буде перехоплено один раз, виняток знову переходить до попереднього методу і так далі, доки його не буде перехоплено або поки він не досягне самого дна стека викликів.
163. Що станеться, якщо ви помістите System.exit(0) у блок try або catch? Нарешті заблокує виконання?
System.exit(int) має можливість викидати SecurityException. Отже, якщо у випадку безпеки викидається виняток, тоді буде виконано остаточний блок, інакше JVM буде закрито під час виклику System. exit(0), через що блок finally не буде виконано.
164. Що ви розумієте під клонуванням об’єктів і як цього досягти в Java?
Це процес створення точної копії будь-якого об'єкта. Щоб підтримувати це, клас Java має реалізувати інтерфейс Cloneable пакета java.lang і перевизначати метод clone(), наданий класом Object, синтаксис якого:
Захищений об’єкт clone() викидає CloneNotSupportedException{ return (Object)super.clone();}Якщо інтерфейс Cloneable не реалізовано та перевизначено лише метод, це призводить до CloneNotSupportedException у Java.
165. Як винятки впливають на програму, якщо вона їх не обробляє?
Винятки відповідають за раптове припинення роботи програми під час виконання, а код, написаний після виникнення винятку, не виконується.
166. Яке використання ключового слова final?
Ключове слово final використовується, щоб зробити функції невіртуальними. За замовчуванням усі функції є віртуальними, тому, щоб зробити їх невіртуальними, ми використовуємо ключове слово final.
167. Яку мету виконують ключові слова final, finally і finalize?
i). фінал:
final — це ключове слово, яке використовується зі змінною, методом або класом, щоб їх не можна було замінити.
приклад:
Java
// Java Program to use final // keyword import java.io.*; // Driver Class class GFG { // Main function public static void main(String[] args) { final int x = 100; x = 50; } }> Вихід:
./GFG.java:6: error: cannot assign a value to final variable x x=50; ^ 1 error>
ii). нарешті
finally — це блок коду, який використовується з try-catch під час обробки винятків. Код, написаний у блоці finally, виконується незважаючи на те, кидається виняток чи ні.
приклад:
Java
// Java Program to implement finally import java.io.*; // Driver class class GFG { // Main function public static void main(String[] args) { int x = 10; // try block try { System.out.println('Try block'); } // finally block finally { System.out.println( 'Always runs even without exceptions'); } } }> Вихід
Try block Always runs even without exceptions>
iii). завершити
Це метод, який викликається безпосередньо перед видаленням/знищенням об’єктів, які підходять для збирання сміття, щоб виконати дії з очищення.
приклад:
Java
/*package whatever // do not write package name here */ import java.io.*; class GFG { public static void main(String[] args) { System.out.println('Main function running'); System.gc(); } // Here overriding finalize method public void finalize() { System.out.println('finalize method overridden'); } }> Вихід
Main function running>
168. Яка різниця між this() і super() у Java?
це ( ) | супер( ) |
|---|---|
Він представляє поточний екземпляр класу. | Він представляє поточний екземпляр батьківського класу. |
Викликає конструктор за замовчуванням того самого класу. | Викликає типовий конструктор базового класу. |
Доступ до методів того самого класу. | Доступ до методів батьківського класу. |
Вказує поточний екземпляр класу. | Вказує екземпляр суперкласу. |
169. Що таке багатозадачність?
Багатозадачність у Java означає здатність програми виконувати кілька завдань одночасно. Це можуть зробити потоки, які є швидкими операціями, що містяться в одній програмі. Виконання кількох завдань одночасно називається багатозадачністю.
приклад:
Java
// Java program for multitasking import java.io.*; public class MyThread extends Thread { public void run() { // Code to be executed in this thread for (int i = 0; i < 10; i++) { System.out.println( 'Thread ' + Thread.currentThread().getId() + ': ' + i); } } } public class GFG { public static void main(String[] args) { MyThread thread1 = new MyThread(); MyThread thread2 = new MyThread(); // Start the threads thread1.start(); thread2.start(); } }> 170. Що ви маєте на увазі під багатопоточною програмою?
Багатопотокові програми в Java містять потоки, які виконуються одночасно, а не послідовно. Комп’ютер може ефективніше використовувати свої ресурси, об’єднуючи кілька завдань одночасно. Будь-яка програма з багатопотоковістю дозволяє більш ніж одному користувачеві одночасно використовувати програму без запуску кількох копій. Багатопотокова програма призначена для запуску кількох процесів одночасно, що може покращити продуктивність програми та дозволяє програмі використовувати кілька процесорів і покращує загальну пропускну здатність.
171. Які переваги багатопоточності?
Існує кілька переваг використання багатопоточності, а саме:
- Швидкість реагування: реакція користувачів підвищується, оскільки багатопотокова інтерактивна програма дозволяє запускати код, навіть коли розділ заблоковано або виконує тривалий процес.
- Спільне використання ресурсів: процес може виконувати передачу повідомлень і спільну пам'ять через багатопотоковість.
- Економія: ми можемо ділитися пам'яттю, завдяки чому процеси економічні.
- Масштабованість: багатопотоковість на машинах з декількома процесорами збільшує паралелізм.
- Кращий зв’язок: функції синхронізації потоків покращують зв’язок між процесами.
- Використання багатопроцесорної архітектури
- Зведене до мінімуму використання системних ресурсів
172. Якими двома способами можна створити Thread?
Багатопотоковість — це функція Java, яка дозволяє одночасне виконання двох або більше частин програми для максимального використання ЦП. Загалом, потоки — це невеликі легкі процеси з окремими шляхами виконання. Ці потоки використовують спільну пам'ять, але вони діють незалежно, отже, якщо один з потоків виходить з ладу, це не впливає на інші потоки. Існує два способи створення потоку:
- Розширюючи клас Thread
- Шляхом реалізації інтерфейсу Runnable.
Розширюючи клас Thread
Ми створюємо клас, який розширює java.lang.Клас потоку . Цей клас замінює метод run(), доступний у класі Thread. Потік починає своє життя всередині методу run().
Синтаксис:
public class MyThread extends Thread { public void run() { // thread code goes here } }>Шляхом реалізації інтерфейсу Runnable
Ми створюємо новий клас, який реалізує java.lang.Runnable інтерфейс і перевизначити метод run(). Потім ми створюємо об’єкт Thread і викликаємо метод start() для цього об’єкта.
Синтаксис:
public class MyRunnable implements Runnable { public void run() { // thread code goes here } }>173. Що таке нитка?
Потоки в Java — це легкий підпроцес із найменшою одиницею процесів, а також окремі шляхи виконання. Ці потоки використовують спільну пам’ять, але вони діють незалежно, отже, якщо є виключення в потоках, які не впливають на роботу інших потоків, незважаючи на те, що вони спільно використовують ту саму пам’ять. Потік має власний програмний лічильник, стек виконання та локальні змінні, але він поділяє той самий простір пам’яті з іншими потоками в тому самому процесі. Java забезпечує вбудовану підтримку багатопоточності через Запускний інтерфейс і Клас ниток .
174. Розрізняйте процес і потік?
Процес і потік є одиницями виконання в комп’ютерній системі, але вони відрізняються кількома способами:
процес | Нитка |
|---|---|
Процес — це програма у виконанні. | Потік — це одна послідовність інструкцій у процесі. |
Для завершення процесу потрібно більше часу. | Для завершення потоку потрібно менше часу. |
Процес займає більше часу для перемикання контексту. | Потік потребує менше часу для перемикання контексту. |
Процес менш ефективний з точки зору спілкування. | Потік більш ефективний з точки зору спілкування. |
Процес ізольований. | Потоки спільно використовують пам'ять. |
Процес має власний блок керування процесом, стек і адресний простір. | Потік має батьківську плату, власний блок керування потоками, стек і загальний адресний простір. |
Процес не обмінюється даними один з одним. | Потоки обмінюються даними один з одним. |
175. Опишіть життєвий цикл потоку?

А нитка в Java в будь-який момент часу існує в будь-якому з наступних станів. Потік знаходиться лише в одному з показаних станів у будь-який момент:
- новий: Потік створено, але ще не розпочато.
- Запуск: Потік запущено, виконує своє завдання або готовий до запуску, якщо немає інших потоків з вищим пріоритетом.
- заблоковано: Потік тимчасово призупинено, очікуючи на ресурс або подію.
- Очікування: Потік очікує, поки інший потік виконає завдання або мине певний проміжок часу.
- Припинено: Потік виконав своє завдання або був припинений іншим потоком.
176. Поясніть метод suspend() у класі Thread.
Метод suspend() класу Thread у Java тимчасово призупиняє виконання потоку. Коли потік призупинено, він переходить у заблокований стан і операційною системою він не буде запланований, що означає, що він не зможе виконати своє завдання, доки його не буде відновлено. У сучасній мові програмування Java є більш безпечні та гнучкі альтернативи методам suspend(). Цей метод не повертає жодного значення.
Синтаксис:
public final void suspend();>
приклад:
Java
// Java program to show thread suspend() method import java.io.*; class MyThread extends Thread { public void run() { for (int i = 0; i < 10; i++) { System.out.println(' Running thread : ' + i); try { Thread.sleep(1000); } catch (Interrupted_Exception e) { e.printStackTrace(); } } } } class GFG { public static void main(String[] args) { MyThread t1 = new MyThread(); t1.start(); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } // suspend the execution of the thread t1.suspend(); System.out.println('Suspended thread '); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } // resume the execution of the thread t1.resume(); System.out.println('Resumed thread'); } }> Вихід:
Thread running: 0 Thread running: 1 Thread running: 2 Suspended thread Resumed thread Thread running: 3 Thread running: 4 Thread running: 5 Thread running: 6 Thread running: 7 Thread running: 8 Thread running: 9>
177. Поясніть головний потік у розділі Виконання класу потоку.
Java забезпечує вбудовану підтримку багатопотокового програмування. Головний потік вважається батьківським для всіх інших потоків, створених під час виконання програми. Головний потік створюється автоматично, коли програма починає працювати. Цей потік виконує основний метод програми. Він відповідає за виконання основної логіки програми Java, а також за обробку операцій введення користувача. Головний потік служить базовим потоком, з якого породжуються всі інші дочірні потоки.

178. Що таке потік демона?
Потік демона в Java — це потік із низьким пріоритетом, який використовується для виконання фонових операцій або завдань, які використовуються для безперервного виконання. такі як збір сміття, відправлення сигналів, прослуховувачі дій тощо. Потоки Daemon у Java мають нижчий пріоритет, ніж потоки користувача, що означає, що вони можуть виконуватися лише тоді, коли потоки користувача не запущені. Потоки демона в Java — це корисні функції, необхідні для фонових завдань, які не вимагають явного завершення роботи чи завершення. Це дозволяє більш ефективно використовувати системні ресурси та використовується для спрощення ресурсів і може спростити довгострокові завдання.
179. Якими способами потік може перейти в стан очікування?
Потік — це легкий процес, який виконується одночасно з іншим потоком в одному процесі. Кожен потік може виконувати різні завдання та спільно використовувати ресурси в рамках одного процесу. Потік у Java може перейти в стан очікування різними способами:
- Виклик методу Sleep(): сон Метод () використовується для призупинення виконання потоку на певний час. Коли потік призупинено, він переходить у стан очікування.
- Метод Wait(): Цей метод використовується для очікування потоку, поки інший потік не дасть йому сигнал прокинутися. Потік переходить у стан очікування, доки не отримає сповіщення від іншого потоку.
- Метод Join(): Метод Join() можна використовувати для очікування завершення виконання потоком. Викликаючий потік переходить у стан очікування, доки цільовий потік не буде завершено.
- Очікування операцій введення/виведення: Якщо потік очікує завершення операції введення/виведення, він переходить у стан очікування до завершення операції.
- Проблеми синхронізації: Якщо в багатопотоковій програмі виникають проблеми з синхронізацією, потоки можуть перейти в стан очікування, доки проблеми з синхронізацією не будуть вирішені.
180. Як відбувається багатопотоковість на комп’ютері з одним ЦП?
Java використовує техніку під назвою розподіл часу, яку зазвичай називають розділенням часу, для реалізації багатопоточності на комп’ютерах з одним ЦП. Вигляд паралельного виконання створюється процесором, який перемикається між активними потоками. Операційна система відповідає за послідовний розподіл процесорного часу для кожного потоку та планування потоків.
Щоб зупинити взаємодію потоків один з одним і створення ситуацій змагань або інших проблем, Java має кілька способів керувати поведінкою потоків, включаючи синхронізацію та блокування. Можна створити багатопотокові програматори, які правильно й ефективно працюють на машині з одним центральним процесором, регулюючи взаємодію між потоками та забезпечуючи синхронізацію важливих частин коду. На відміну від запуску тієї самої програми на комп’ютері з декількома ЦП або ядрами, багатопотоковість на одному ЦП може створювати лише видимість паралелізму, а фактичний приріст продуктивності може бути скромним. Операційна система розділяє процесорний час, який доступний, коли численні потоки виконуються на одному ЦП, на невеликі часові проміжки та надає кожному потоку проміжок часу для виконання. Швидке перемикання між потоками операційною системою створює видимість паралельного виконання. Здається, що перемикання між потоками відбувається миттєво, оскільки проміжки часу часто дуже маленькі, порядку мілісекунд або мікросекунд.
Питання для співбесіди на Java для досвідчених
181. Які існують різні типи пріоритетів потоків у Java? І який пріоритет потоку за замовчуванням, призначений JVM?
Пріоритети в потоках — це концепція, де кожен потік має пріоритет, тобто мовою неспеціаліста можна сказати, що кожен об’єкт має пріоритет, який представлено числами від 1 до 10. У Java є різні типи властивостей потоку, згадані нижче:
- MIN_PRIORITY
- MAX_PRIORITY
- NORM_PRIORITY
За замовчуванням потоку призначається NORM_PRIORITY.
182. Чому збірка сміття потрібна в Java?
Для Java збірка сміття необхідна, щоб уникнути витоків пам’яті, які можуть призвести до збою програми та стати нестабільною. У Java неможливо уникнути збирання сміття. На відміну від C++, збірка сміття в Java допомагає програмістам зосередитися на розробці програми замість того, щоб керувати ресурсами пам’яті та турбуватися про витік пам’яті. Віртуальна машина Java (JVM) автоматично періодично керує пам’яттю, запускаючи збирач сміття, який звільняє невикористану пам’ять у програмі. Збирання сміття робить пам’ять Java ефективнішою, оскільки видаляє об’єкти, на які немає посилань, із пам’яті купи.
183. У чому недолік Garbage Collection?
Окрім багатьох переваг, Garbage Collector має певні недоліки, зазначені нижче:
- Основним недоліком збору сміття є те, що він може спричиняти паузи у виконанні програми, оскільки працює для очищення пам’яті, що сповільнює продуктивність програми.
- Процес збирання сміття є недетермінованим, тому важко передбачити, коли відбудеться збирання сміття, що спричиняє непередбачувану поведінку програм. Наприклад, якщо ми пишемо будь-яку програму, то програмістам важко вирішити, чи проблема викликана збиранням сміття чи будь-якими іншими факторами в програмі.
- Збирання сміття також може збільшити використання пам’яті, якщо програма створює та відкидає багато короткочасних об’єктів.
184. Поясніть різницю між другорядним, основним і повним збором сміття.
Віртуальна машина Java (JVM) видаляє об’єкти, які більше не використовуються, за допомогою збирача сміття, який періодично перевіряє та видаляє ці об’єкти. Існують різні типи збирання сміття в JVM, кожен з яких має різні характеристики та вплив на продуктивність. Основними видами збору сміття є:
- Вивіз дрібного сміття: Також відомий як збирання сміття молодого покоління, цей тип збирання сміття використовується для збирання та відновлення пам’яті, яка використовується короткоживучими об’єктами (об’єктами, які швидко створюються та відкидаються).
- Основний збір сміття: Також відомий як збирання сміття старого покоління, цей тип збирання сміття використовується для збору та відновлення пам’яті, яка використовується довгоживучими об’єктами (об’єктами, які переживають кілька незначних збирань сміття та переходять до старого покоління).
- Повний збір сміття: Під час повного збору сміття збираються та повертаються спогади всіх поколінь, у тому числі спогади молодих і старих. Повне збирання сміття зазвичай займає більше часу, ніж другорядне чи велике збирання сміття, через яке програма тимчасово призупиняється.
185. Як ви ідентифікуєте основні та другорядні збірки сміття в Java?
Основне збирання сміття працює в просторі вцілілих, а другорядне збирання сміття працює в просторі Едем для виконання процедури позначення та підмітання. І ми можемо ідентифікувати їх обидва на основі вихідних даних, де другорядна колекція друкує GC, тоді як основна колекція друкує повний GC у випадку, коли журнал збору сміття ввімкнено за допомогою -XX:PrintGCDetails або verbose:gc.
186. Що таке витік пам'яті та як він впливає на збирання сміття?
У Java витоки пам’яті можуть бути викликані різними факторами, такими як неправильне закриття ресурсів, утримання посилань на об’єкти довше, ніж необхідно, або створення занадто великої кількості об’єктів без потреби. Бувають ситуації, коли збирач сміття не збирає об’єкти, оскільки на ці об’єкти є посилання. У таких ситуаціях, коли програма створює багато об’єктів і не використовує їх, і кожен об’єкт має деякі дійсні посилання, збирач сміття в Java не може знищити об’єкти. Ці марні об’єкти, які не надають жодної цінності програмі, відомі як витік пам’яті. Витоки пам’яті можуть негативно вплинути на збирання сміття, не дозволяючи збиральнику сміття відновити невикористану пам’ять. Така поведінка призведе до зниження продуктивності або іноді до збою системи. У програмі важливо уникати витоків пам’яті шляхом належного керування ресурсами та посиланнями на об’єкти.
приклад:
Java
// Java Program to demonstrate memory leaks import java.io.*; import java.util.Vector; class GFG { public static void main(String[] args) { Vector a = new Vector(21312312); Vector b = new Vector(2147412344); Vector c = new Vector(219944); System.out.println('Memory Leak in Java'); } }> Вихід:
Exception in thread 'main' java.lang.OutOfMemoryError: Java heap space at java.base/java.util.Vector.(Vector.java:142) at java.base/java.util.Vector.(Vector.java:155) at GFG.main(GFG.java:9)>
187. Назвіть деякі класи, присутні в пакеті java.util.regex.
Регулярні вирази або регулярні вирази в Java — це API, який використовується для пошуку та маніпулювання рядками в Java. Він створює шаблони рядків, які можуть отримувати необхідні дані з рядків або можуть узагальнювати шаблон.
У java.util.regex є 3 класи, згадані нижче:
- Клас шаблону: може визначати шаблони
- Клас відповідності: може виконувати операції зіставлення з текстом за допомогою шаблонів
- Клас PatternSyntaxException: може вказувати на синтаксичну помилку в шаблоні регулярного виразу.
Також, окрім 3 класів, пакет складається з єдиного інтерфейсу MatchResult Interface, який можна використовувати для представлення результату операції зіставлення.
188. Напишіть регулярний вираз для перевірки пароля. Пароль має починатися з літери, після чого йдуть буквено-цифрові символи; Його довжина повинна бути від 8 до 20.
regex = ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&-+=()])(?=S+$).{8, 20}$>Пояснення:
- ^ використовується для початку символу рядка.
- (?=.*[0-9]), що використовується для цифри, має зустрічатися принаймні один раз.
- (?=.*[a-z]), що використовується для алфавіту в нижньому регістрі, має зустрічатися принаймні один раз.
- (?=.*[A-Z]) використовується для верхнього регістру алфавіту, який має зустрічатися принаймні один раз у підрядку.
- (?=.*[@#$%^&-+=()] використовується для спеціального символу, який має зустрічатися принаймні один раз.
- (?=S+$) пробіли не дозволяють у всьому рядку.
- .{8, 20} використовується принаймні для 8 і не більше 20 символів.
- $ використовується в кінці рядка.
189. Що таке JDBC?
JDBC Стандартний API використовується для зв'язку програм Java і реляційних баз даних. Він надає набір класів та інтерфейсів, які дозволяють програмістам використовувати мову програмування Java для спілкування з базою даних. Класи та інтерфейс JDBC дозволяють програмі надсилати запити, зроблені користувачами, до вказаної бази даних. Загалом існує чотири компоненти JDBC, за допомогою яких він взаємодіє з базою даних:
- JDBC API
- Менеджер драйверів JDBC
- Набір тестів JDBC
- Драйвери мосту JDBC-ODBC

190. Що таке драйвер JDBC?
Драйвер JDBC це програмний компонент, який використовується для того, щоб програма Java могла взаємодіяти з базою даних. JDBC забезпечує реалізацію JDBC API для конкретної системи керування базами даних, що дозволяє підключати базу даних, виконувати оператори SQL і отримувати дані. Існує чотири типи драйверів JDBC:
- Драйвер мосту JDBC-ODBC
- Драйвер Native-API
- Драйвер мережевого протоколу
- Тонкий драйвер

191. Які кроки необхідно виконати для підключення до бази даних у Java?
Існують певні кроки для з’єднання бази даних і програми Java, як зазначено нижче:
- Імпортуйте пакети
- Завантажте драйвери за допомогою методу forName().
- Зареєструйте драйвери за допомогою DriverManager
- Встановіть з’єднання за допомогою об’єкта класу Connection
- Створіть заяву
- Виконайте запит
- Закрийте з’єднання
192. Що таке компоненти JDBC API?
Компоненти API JDBC надають різні методи та інтерфейси для легкого зв’язку з базами даних, а також пакети, такі як java Se та java EE, які забезпечують можливість запису після запуску будь-де (WORA).
Синтаксис:
java.sql.*;>
193. Що таке інтерфейс JDBC Connection?
Інтерфейс підключення до бази даних Java (JDBC) — це програмний компонент, який дозволяє програмам Java взаємодіяти з базами даних. Для покращення з’єднання JDBC вимагає драйверів для кожної бази даних.
194. Що означає інтерфейс JDBC ResultSet?
Інтерфейс JDBC ResultSet використовується для зберігання даних із бази даних і використання їх у нашій програмі Java. Ми також можемо використовувати ResultSet для оновлення даних за допомогою методів updateXXX(). Об’єкт ResultSet вказує курсор перед першим рядком даних результату. Використовуючи метод next(), ми можемо перебирати ResultSet.
195. Що таке набір рядків JDBC?
JDBC RowSet забезпечує спосіб зберігання даних у табличній формі. RowSet — це інтерфейс у Java, який можна використовувати в пакеті java.sql. Зв’язок між об’єктом RowSet і джерелом даних підтримується протягом усього життєвого циклу. Набори рядків класифікуються на п’ять категорій на основі реалізації, зазначеної нижче:
- JdbcRowSet
- CachedRowSet
- WebRowSet
- FilteredRowSet
- JoinRowSet
196. Яка роль класу JDBC DriverManager?
Клас JDBC DriverManager діє як інтерфейс для користувачів і драйверів. Він використовується багатьма способами, як зазначено нижче:
- Він використовується для створення зв'язку між програмою Java і базою даних.
- Допомагає відстежувати доступні драйвери.
- Це може допомогти встановити зв'язок між базою даних і відповідними драйверами.
- Він містить усі методи, які можуть реєструвати та скасовувати реєстрацію класів драйвера бази даних.
- Метод DriverManager.registerDriver() може підтримувати список класів драйверів, які самі зареєструвалися.
Java Difference Interview Questions
197. Розрізняйте Iterable та Iterator.
Повторювані | Ітератор |
|---|---|
Iterable надає спосіб перебору послідовності елементів. | Ітератор допомагає в послідовному повторенні колекції елементів. |
| ітератор() метод повертає Ітератор. | hasNext() і наступний() потрібні методи. |
| видалити() метод необов'язковий. | видалити() метод потрібен в ітераторі. |
Приклади є Список, Черга та Набір. | Приклади є ListIterator, Enumeration і ArrayIterator. |
198. Розрізняйте список і набір.
Список | встановити |
|---|---|
Замовив | Невпорядкований |
Список допускає дублікати. | Набір не допускає повторюваних значень. |
Доступ до списку здійснюється за індексом. | Доступ до набору здійснюється за допомогою хеш-коду. |
Можна зберігати кілька нульових елементів. | Нульовий елемент можна зберігати лише один раз. |
Прикладами є ArrayList, LinkedList тощо. | Прикладами є HashSet і TreeSet. LinkedHashSet тощо. |
199. Розрізняйте список і карту.
Список | Карта |
|---|---|
Інтерфейс списку дозволяє дублювати елементи. | Карта не допускає повторюваних елементів. |
Список підтримує порядок вставлення. | Карта не підтримує порядок вставки. |
Можна зберігати кілька нульових елементів. | Карта допускає щонайбільше один нульовий ключ і будь-яку кількість нульових значень. |
Список містить метод get() для отримання елемента за вказаним індексом. | Карта не надає метод get для отримання елементів за вказаним індексом. |
Список реалізовано ArrayList тощо. | Карта реалізована HashMap, TreeMap, LinkedHashMap |
200. Розрізняйте чергу та стек.
Черга | Стек |
|---|---|
Структура даних черги використовується для зберігання елементів і для виконання таких операцій, як додавання в чергу, вилучення з черги з кінця або кінця черги. | Структура даних стека використовується для зберігання елементів і для виконання таких операцій, як надсилання, висування з вершини стеку. |
Структура даних черги Реалізує порядок FIFO. | Структура стекових даних Реалізує порядок LIFO. |
Вставлення та видалення в чергах відбувається з протилежних кінців списку. Видалення відбувається з початку списку, а вставка – з кінця списку. | Вставлення та видалення в стеки відбувається лише з одного кінця списку, який називається верхнім. |
Операція вставки називається операцією постановки в чергу. | Операція вставки називається операцією Push. |
Черга зазвичай використовується для вирішення проблем, пов'язаних з послідовною обробкою. | Стек зазвичай використовується для вирішення проблем, пов'язаних з рекурсією. |
201. Розрізняйте PriorityQueue і TreeSet.
Пріоритетна черга | TreeSet |
|---|---|
Він використовує чергу як базову структуру даних. | Він використовує набір як базову структуру даних. |
Ця структура даних дозволяє повторювати елементи | Ця структура даних не допускає повторюваних елементів |
Пріоритетна черга реалізована класом PriorityQueue. | TreeSet реалізовано класом TreeSet. |
PriorityQueue поставляється в JDK 1.5. | TreeSet поставляється в JDK 1.4. |
PriorityQueue pq = новий PriorityQueue(); | reeSet ts = новий TreeSet(); |
202. Розрізняйте однозв’язний список і двозв’язаний список.
Однозв'язаний список | Двізв'язаний список |
|---|---|
Однозв’язаний список містить лише два сегменти, тобто дані та посилання. | Двозв’язаний список містить три сегменти, тобто дані та два покажчики. |
Перехід у однозв’язаному списку можливий лише в прямому напрямку. | Перехід у двозв’язаному списку можливий лише в обох напрямках вперед і назад. |
Він використовує менше пам’яті, оскільки кожен окремий вузол має лише один покажчик. | Він вимагає більше пам’яті, ніж однозв’язаний список, оскільки кожен вузол має два покажчики. |
Простий у використанні та вставці вузлів на початку списку. | Трохи складніше у використанні та легко вставити в кінець списку. |
Часова складність вставки та видалення становить O(n). | Часова складність вставки та видалення становить O(1). |
| | |
203. Розрізняйте Failfast і Failsafe.
FailFast | Безаварійності |
|---|---|
Failsfast виходить з ладу негайно, коли виявляє одночасну модифікацію під час ітерації. | Failsafe продовжує перегляд оригінальної колекції, а також створює копію для модифікації. |
Failfast зазвичай використовується в однопоточних середовищах. | Failsafe використовується в багатопоточних середовищах. |
Failfast не дозволяє жодних змін під час ітерації. | Failsafe дозволяє модифікувати під час ітерації. |
Failfast є швидким у порівнянні з failsafe, оскільки він не передбачає копіювання колекції. | Failsafe зазвичай повільний порівняно з failfast. |
FailFast кидає ConcurrentModificationException якщо колекцію змінено під час ітерації. | FailSafe не створює винятків, а натомість створює копію колекції для повторення. |
204. Розрізняйте HashMap і TreeMap.
HashMap | TreeMap |
|---|---|
Hasmap використовує хеш-таблицю для зберігання пар ключ-значення. | Treemap використовує червоно-чорні дерева для зберігання пари ключ-значення. |
Hashmap не підтримує жодного конкретного порядку для пар ключ-значення. | Treemap підтримує природний порядок на основі ключів. |
Порядок ітерації не гарантується в хеш-карті. | Ітерація відсортована на основі ключів. |
Хеш-карти швидші для пошуку порівняно з Treemap. | Пошук у Treemap відбувається повільніше, оскільки для пошуку ключів використовується обхід дерева. |
Hashmap реалізовано за допомогою масиву пов’язаного списку. | TreeMap реалізовано за допомогою червоно-чорного дерева. |
Hashmap використовує метод equals() класу Object для порівняння ключів. | TreeMap використовує метод compareTo() для порівняння ключів. |
205. Розрізняйте Queue і Deque.
Черга | Про що |
|---|---|
Черга — це лінійна структура даних, яка використовується для зберігання набору елементів. | Deque, також відомий як двостороння черга, також є лінійною структурою даних, яка зберігає набір елементів з операціями видалення та додавання з обох кінців. |
Елементи черги можна вставляти лише в кінець структури даних. | Елементи можна вставляти з обох кінців структури даних. |
Черга може бути реалізована за допомогою масиву або пов’язаного списку. | Вилучення з черги може бути реалізовано за допомогою циклічного масиву або двозв’язаного списку. |
Черги зазвичай використовуються для створення списку очікування або черги завдань. | Deque використовується для реалізації елементів стека або виведення з черги з обох кінців. |
| | |
206. Розрізняйте HashSet і TreeSet.
HashSet | TreeSet |
|---|---|
HashSet не впорядкований. | TreeSet заснований на природному впорядкуванні. |
HashSet допускає нульові елементи. | TreeSet не допускає нульових елементів. |
HashSet реалізується класом HashSet. | TreeSet реалізовано класом TreeSet. |
HashSet hs = новий HashSet(); | TreeSet ts = новий TreeSet(); |
Запитання для співбесіди по Java – поширені запитання
Q1. Яка зарплата Java-розробника в Індії?
Згідно з різними ресурсами, середня зарплата Java Backend Developer перевищує 14 лакхів на рік, що на 30% вище, ніж будь-яка інша роль розробника . Тут ви також можете переглянути наш останній курс Портал практики GeekforGeeks також може бути корисним.
Q5. Як я можу виділитися на співбесіді на Java?
Щоб виділитися на співбесіді з Java, продемонструйте глибоке розуміння концепцій і практичних застосувань Java. Продемонструйте свої навички вирішення проблем, пояснюючи свій підхід до складних сценаріїв і надаючи ефективні рішення. Крім того, виділіть будь-які відповідні проекти чи внески, які ви зробили для спільноти Java. Виявлення ентузіазму, хороше спілкування та бажання вчитися також можуть залишити позитивне враження.



