Ознайомлення з запитаннями та відповідями на багатопотокові інтерв'ю Java

Завдяки своїй незалежній платформі Java в даний час переживає бум. Він може бути запущений де завгодно, і тому широко застосовується за допомогою різних майбутніх технологій. Щоб бути готовим до цього, багатопотокова річ - важлива тема, орієнтована на інтерв'ю. Отже, ви нарешті знайшли роботу своєї мрії в Java Multi-threading, але цікавитесь, як зламати інтерв'ю і що може бути ймовірним Java Multi-Threading Питання для інтерв'ю Кожне інтерв'ю різне, а сфера роботи теж різна. Розглянемо декілька важливих запитань щодо інтерв'ю Java, які можуть бути задані в інтерв'ю Java із багатопотоковою передачею, які ви б переслідували.

Нижче наведено верхні запитання та відповіді на інтерв'ю для багатопотокових програм Java

1.Яка нитка в JAVA і як ви її реалізуєте?

Відповідь:
Нитка допомагає полегшити багатозадачність та багатообробку в межах програми. Він ефективно використовує процесор і допомагає покращити продуктивність програми. Java дозволяє користувачеві використовувати декілька потоків одночасно. Він може працювати паралельно з іншими програмами без будь-яких перерв. Це допомагає скоротити час на процес. Наприклад, якщо програмі потрібно 60 секунд на виконання, ми можемо використовувати 6 потоків, які дадуть нам результат за 10 секунд.

Java пропонує два способи реалізації потоку в програмі. інтерфейс java.lang.Runnable має екземпляр java.lang.A потік, який вимагає виконання завдання через екземпляр. Клас Thread вже реалізує Runnable, тому користувач може безпосередньо замінити метод run (), розширивши клас Thread або застосувавши інтерфейс Runnable.

2.Коли використовувати Runnable і коли використовувати Thread на Java?

Відповідь:
Java не підтримує декілька успадкованих класів, але дозволяє реалізувати декілька інтерфейсів одночасно. Тому краще буде реалізувати Runnable, ніж розширити клас Thread.

3. Як ви розмежовуєте між потоком і процесом?

Відповідь:
Нитка - це підмножина процесу. Один процес може мати кілька потоків для нього. Нитки можуть запускати будь-яку частину процесу. Процес має власну адресу, де він зберігається, тоді як потік поділяє адресу процесу, який його створив. Створення процесу - це нескінченний процес, тоді як нитки можна створити легко. Нитка зазвичай називається легким процесом. Міжпроцесовий зв’язок утруднений, тоді як потоки можуть легко спілкуватися, використовуючи Java-методи методу wait () та notify (). Процеси є незалежними, тому будь-які зміни, внесені до процесу, не впливають на дочірні процеси. Навпаки, якщо зміни в потоці внесені, існують можливості, що можуть вплинути й інші потоки.

4. Чому кажуть, що поведінка нитки непередбачувана?

Відповідь:
Причиною цього є планувальник потоків, який обробляє виконання потоків. Планувальник може мати різну продуктивність на різних платформах Windows, UNIX, LINUX тощо. Під час виконання одного і того ж потоку може давати різні результати на різних платформах, а іноді навіть на одній платформі. Щоб вирішити це, користувач може створити один і той же об’єкт Runnable, створити цикли run () в обох потоках і запустити обидва потоки разом. В ідеалі планувальник повинен обирати обидва потоки разом, і на продуктивність не повинно впливати, але обидва потоки будуть вводити цикли анонімно.

5. Що таке летюча змінна в Java та яке її значення?

Відповідь:
Java полегшує користувачеві ділитися змінними, присутніми в різних потоках. Летлива змінна діє як спеціальний модифікатор, який можна використовувати лише для змінних, наприклад. Оскільки ця змінна поділяється, із нею будуть послідовні зміни. Потік повинен гарантувати, що він має винятковий доступ до цих змінних і блокування вимушене для взаємного виключення спільних змінних. Це гарантує, що запис буде відбуватися до будь-якого наступного читання. Модель пам'яті Java забезпечує послідовність цієї змінної. Нестабільних методів не може бути, оскільки їх можна використовувати лише у вигляді змінних.

6. Яке використання синхронізованого ключового слова? Чим відрізняються синхронізовані та мінливі ключові слова?

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

1) Інстанційні методи
2) Статичні методи
3) Кодові блоки в методах екземпляра
4) Кодові блоки всередині статичних методів

Його можна оголосити як:

Приклад публічного синхронізованого недійсного () ()

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

7. Чому такі методи, як wait (), notify () та notify all (), присутні в об'єктному класі, а не в класі Thread?

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

8. Поясніть різницю між методами сну () та очікування ().

Відповідь:
1) метод сну () викликається на потоках, а не на об'єктах. Метод Wait () викликається на об'єктах.
2) Коли викликається метод wait (), тоді монітор переміщує потік з запущеного в стан очікування. Після того, як потік зачекає (), він може перейти до запуску лише тоді, коли повідомить () або сповістити всі () для цього об'єкта. Планувальник після цього змінює стан. Перебуваючи в режимі сну (), стан змінюється на очікування і повертається до запуску лише після закінчення часу сну.
3) Метод Wait () є частиною класу java.lang.Object, а sleep () - частиною класу java.lang.Thread.
4) Wait () завжди використовується із синхронізованим блоком, оскільки це потрібно для блокування об'єкта, тоді як сон () може використовуватися із зовнішнього синхронізованого блоку.

9. Як змусити запустити нитку на Java?

Відповідь:
У Java багатопотоковість не може змусити запустити потік. Тільки планувальник потоків може керувати потоками, і вони не піддаються жодному API для управління.

10. Чи залишає нитка блокування об'єкта, коли викликаються методи wait () і sleep ()?

Відповідь:
Коли нитка знаходиться у режимі сну (), вона не залишає блокування та переходить у стан очікування. Нитка чекає, коли сплять час сну. Коли використовується метод wait (), нитка залишає блокування об'єкта і переходить у стан очікування. Після виклику notify () воно знову переходить у стан роботи та отримує замок.

Рекомендована стаття

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

  1. Питання для інтерв'ю Java Developer - Як зламати топ 7 питань
  2. Вичерпний посібник з розробки додатків Java (дивовижна теорія)
  3. Питання та відповіді щодо співбесіди Maven | Топ і найбільш запитувані
  4. 10 розширених питань для інтерв'ю AngularJS для досвідчених