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

Кава-брейк #101. 19 основних питань на співбесіді з Java та короткі приклади відповідей

Стаття з групи Random UA
Джерело: Hackernoon Представляємо вашій увазі кілька питань та відповідей, які часто зустрічаються на співбесідах з Java.

1. Що таке Java Development Kit (JDK)?

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

2. Що робить Java Runtime Environment (JRE)?

JRE відноситься до середовища виконання (Runtime Environment), в якому виконується байт-код Java. JRE підтримує файли та бібліотеки для середовища виконання.

3. Що робить віртуальна машина Java (JVM)?

JVM - це абстрактна машина, яка надає середовище виконання, в якому може виконуватися байт-код Java.

4. Java залежить від платформи. Чому?

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

5. Java не на 100% об'єктно-орієнтована. Чому?

Тому що Java використовує вісім примітивних типів даних, таких як boolean, byte, char, int, float, double, long, short, які є об'єктами.

6. Що таке конструктори в Java?

Конструктор - це блок коду, який використовується для ініціалізації об'єктів. Синтаксис:

class DemoClass
{
   // constructor name is same as class name
   DemoClass()
   {
      ....
   }
}
// calls DemoClass() constructor
DemoClass obj = new DemoClass();
Приклад:

public class ConstructorDemo
{
   int a; // class attribute
   // create constructor for class ConstructorDemo
   ConstructorDemo()
   {
      a = 26; // initial value for class attribute 'a'
   }
   public static void main(String[] args)
   {
      // creating object for ConstructorDemo class
      // here we're calling constructor ConstructorDemo()
      ConstructorDemo obj = new ConstructorDemo();
      System.out.println(obj.a);
   }
}
Результат:
26

7. Що робить одноелементний клас?

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

8. Що таке класи-обгортки (wrapper classes) у Java?

Класи-обгортки дозволяють примітивним типам даних перетворювати на об'єкт і навпаки. Приклад:

int a = 7; // using primitive datatype
Integer a = new Integer(7); // using wrapper class

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

У випадку == — це оператор, а equals() — це метод. Ми використовуємо оператор == для еталонного порівняння об'єктів у купі. У Java немає концепції навантаження операторів. Незважаючи на це оператор == використовується для перевірки того, що адресаа двох об'єктів збігається чи ні. Тобто оператор == перевіряє, чи вказують обидва об'єкти на те саме місце в пам'яті чи ні. Також оператор == використовується для порівняння типів об'єктів та примітивних типів, таких як логічне значення. Тоді як метод equals() класу String порівнює вміст двох об'єктів.

10. Які концепції ООП Java?

  • Абстракція визначається як приховування внутрішньої реалізації та відображення лише необхідної інформації.
  • Спадкування – це процедура перетворення всіх властивостей та поведінки батьківського класу (суперкласу) у дочірній клас (підклас).
  • Інкапсуляція - це процедура зв'язування даних або змінних та методів разом.
  • Поліморфізм буквально означає безліч форм. Поліморфізм – це здатність методу виконувати різні завдання. Цього можна досягти за допомогою методів.

11. Чому метод main() Java завжди статичний?

Тому що викликати статичний метод об'єкта не потрібно. Якщо main() повинен був бути нестатичним методом, віртуальна машина Java повинна спочатку створити свій об'єкт, а потім викликати метод main() , який призведе до виділення додаткової пам'яті.

12. Чому Java рядки незмінні?

Рядки в Java незмінні, тому що об'єкти String кешуються в пулі рядкових констант ( string constant pool ).

13. Що таке масиви і ArrayList Java?

Масив – це об'єкт, який містить фіксовану кількість елементів аналогічного типу.
  1. ArrayList є частиною структури колекції.

  2. ArrayList реалізує інтерфейс списку.

  3. ArrayList — це масив, що масштабується, який динамічно збільшується при додаванні елементів і зменшується при видаленні елементів.

  4. Для частої операції вилучення найкраще підходить Java ArrayList . Тому що елементи ArrayList зберігаються у послідовних осередках пам'яті.

  5. ArrayList не може містити примітивні типи даних, такі як int, double, char та long.

  6. ArrayList може містити об'єкти класу String і оболонки ( Double , Integer ).

  7. ArrayList дозволяє дублювати елементи.

  8. ArrayList зберігає порядок вставки.

  9. ArrayList широко використовується завдяки своїй функціональності та гнучкості. Він призначений для зберігання різноманітних колекцій об'єктів.

  10. ArrayList може мати будь-яку кількість нульових значень.

14. У чому різниця між HashSet та HashMap у Java?

У HashSet :
  1. Ми можемо зберігати об'єкти в HashSet . Наприклад, HashSet: {"Hello", "World"} .

  2. Порядок вставки не зберігається. Він ґрунтується на хеш-коді.

  3. Має метод add() .

  4. Реалізує інтерфейс Set .

  5. Не допускає дублювання елементів.

  6. Допускає поодиноке нульове значення.

У HashMap :
  1. У HashMap ми можемо зберігати пари ключа та значення. Наприклад, {1 -> "Hello", 2 -> "World"} .

  2. Не підтримує порядок вставлення. Він ґрунтується на функції хешування.

  3. Має метод put() .

  4. Реалізує карту інтерфейс.

  5. Допускає значення, що повторюються. Не допускає дублювання ключів.

  6. Допускає одиночний нульовий ключ та будь-яку кількість нульових значень.

16. У чому різниця між this і super Java?

Ключове слово this в Java:
  1. this — це ключове слово, яке є змінною посиланням, яка посилається на поточний об'єкт.

  2. Може використовуватися для неявного дзвінка поточного методу класу.

  3. Ключове слово this() , яке використовується для виклику конструктора поточного класу.

  4. Це можна використовувати для передачі в якості аргументу під час виклику методу.

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

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

17. Що таке оператор break і continue у Java?

Якщо оператор break зустрічається в циклі, цей цикл завершиться, і керування перейде до наступного оператора того ж циклу. Приклад:

public class Example
{
   public static void main(String[] args) 
   {
      for(int a = 1; a <= 10; a++)
      {
         if(a == 3)
         {  
            // breaking loop  
            break;  
         }  
         System.out.println(a);  
      }
   }
}
Результат:
1 2
Оператор continue переходить до наступної ітерації циклу залежно від певної умови. Приклад:

public class Example 
{
   public static void main(String[] args) 
   {
      for(int a = 1; a <= 10; a++)
      {
         if(a % 2 != 0)
         {
            continue;
         }
         System.out.println(a + " ");
      }
   }
}
Результат:
2 4 6 8 10

18. Що таке модифікатори доступу Java?

Модифікатори доступу визначають межу чи область дії змінної, конструктора, класу чи методу. У Java є чотири типи модифікаторів доступу:
  1. Модифікатор приватного доступу
  2. Модифікатор захищеного доступу
  3. Модифікатор загального доступу
  4. Модифікатор доступу за промовчанням.

19. У чому різниця між циклами for і for each Java?

Цикл for :
  1. Не має послідовності, що виконується. У циклі for ми можемо змінити лічильник за власним бажанням.
  2. З'явився на початку, в JDK 1.
  3. Не потрібно реалізовувати інтерфейс.
  4. Може мати доступ до index. Отже, можна замінити елемент у масиві.
  5. Лічильник може збільшуватися та зменшуватися.
Цикл for each :
  1. Виконується послідовно. Лічильник збільшується на одиницю.
  2. Вперше з'явився у JDK 5.
  3. Щоб перебирати контейнери, використовуючи кожного циклу, контейнер повинен реалізовувати інтерфейс Iterable.
  4. Неможливо замінити елемент за цим індексом, оскільки немає доступу до індексу масиву.
  5. Може виконувати ітерацію тільки у порядку, що зростає, не може зменшуватися.
Приклад різниці між циклами for each та for :

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class DifferenceBetween 
{
   public static void main(String[] args) 
   {
      List<String> players = new ArrayList<>(Arrays.asList("Virat", "Rohit", "Dhoni"));
      // iterate over List using for loop
      System.out.println("using for loop: ");
      for(int a = 0; a < players.size(); a++) 
      {
         System.out.println(players.get(a));
      }
      // iterate over List using enhanced for loop
      System.out.println("using for each loop: ");
      for(String str : players)
      {
         System.out.println(str);
      }
   }
}
Результат для циклів for та for each:
Virat Rohit Dhoni.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ