40 najpopularniejszych pytań i odpowiedzi do rozmów kwalifikacyjnych dotyczących wielowątkowości (2025)

Najczęstsze pytania do rozmów kwalifikacyjnych na temat wielowątkowości w języku Java

Oto pytania do rozmów kwalifikacyjnych wielowątkowych i odpowiedzi na pytania do rozmów kwalifikacyjnych zarówno dla nowicjuszy, jak i doświadczonych kandydatów, którzy chcą zdobyć wymarzoną pracę.


1) Co to jest wątek?

Wątek jest współbieżną jednostką wykonania. Można powiedzieć, że jest to część procesu, która z łatwością może przebiegać równolegle z innymi częściami procesu.

Bezpłatne pobieranie pliku PDF: pytania i odpowiedzi dotyczące wielowątkowej rozmowy kwalifikacyjnej


2) Co to jest wielowątkowość?

Wielowątkowość w Javie to proces wykonywania dwóch lub więcej wątków jednocześnie w celu maksymalnego wykorzystania procesora.

Główną zaletą jest:

  • Wątki korzystają z tej samej przestrzeni adresowej
  • Nić pozostaje lekka
  • Koszt komunikacji pomiędzy wątkami jest niski.

3) Jakie stany są związane z wątkiem?

  • Gotowy
  • Bieganie
  • Czekanie
  • Stan martwy

4) Omówić cykl życia wątku?

Cykl życia wątku jest podobny do cyklu życia procesów działających w aplikacji system operacyjny. W trakcie swojego cyklu życia wątek może przechodzić z jednego stanu do drugiego. Zależy to jednak od wykonanej na nim operacji.


5) Jakie są stany wątku?

Poniżej przedstawiono różne stany wątków:

Nowość: Wątek, który właśnie został utworzony, ma nowy stan. Po wywołaniu metody start() wątek przyjmuje stan gotowości. Następnie program planujący wątki przenosi go do stanu umożliwiającego wykonanie.

  • Możliwość uruchomienia: Wątek gotowy do uruchomienia
  • Bieganie: Wykonywany wątek jest w stanie działania.
  • Zablokowany: Zablokowany wątek oczekuje na blokadę monitora w tym stanie. Taka sytuacja może się również zdarzyć, gdy wątek wykonuje operację we/wy i przechodzi do następnego stanu.
  • Czekanie: Jest to wątek oczekujący, aż inny wątek wykona określoną akcję.
  • Czas_oczekiwania: Jest to wątek oczekujący na wykonanie innego wątku.
  • Zakończony: Wątek, który zakończył działanie, jest w tym stanie.
Pytania do wywiadów wielowątkowych
Pytania do wywiadów wielowątkowych

6) Jakie są główne różnice między wątkiem a procesem?

Wątek jest podzbiorem procesu. Proces może zawierać wiele wątków. Proces może działać w innej przestrzeni pamięci, ale wszystkie wątki współdzielą tę samą przestrzeń pamięci.


7) Co to jest impas?

Zakleszczenie to sytuacja, w której wątek oczekuje na blokadę obiektu przejętą przez inny wątek, a drugi wątek również czeka na blokadę obiektu przejętą przez pierwszy wątek. Ponieważ oba wątki czekają na zwolnienie siebie nawzajem, warunek ten nazywa się zakleszczeniem.


8) Co to jest LiveLock?

Livelock ma miejsce, gdy wszystkie wątki są zablokowane i nie można ich wykonać z powodu niedostępności wymaganych zasobów i braku odblokowanego wątku.

Livelock może wystąpić w następujących warunkach:

  • Gdy wszystkie wątki w programie są wykonywane na obiekcie o zerowych parametrach. Program jest zablokowany na żywo i nigdy nie jest przetwarzany, dopóki jeden lub więcej wątków nie wywoła Object.notify () lub Object.notifyAll() na odpowiednich obiektach.
  • Livelock ma również miejsce, gdy wszystkie wątki programu utknęły w nieskończonych pętlach.
Pytania do wywiadów wielowątkowych
Wielowątkowość

9) Co to jest monitor?

  • Monitor to zbiór kodu, który może być wykonywany tylko przez jeden wątek na raz.
  • Jeśli jakikolwiek inny wątek spróbuje uzyskać dostęp w tym samym czasie, zostanie on zawieszony do czasu, aż bieżący wątek zwolni Monitor.

10) Co masz na myśli mówiąc „głód nici”?

W sytuacji, gdy wątek nie ma wystarczającej ilości procesora do wykonania, następuje zagłodzenie wątku.

Może się to jednak zdarzyć w następujących scenariuszach

  • Wątki o niskim priorytecie będą miały mniej procesora w porównaniu z wątkami o wysokim priorytecie. Wątek o niższym priorytecie może głodować w oczekiwaniu na więcej miejsca procesora do wykonywania obliczeń.
  • Wątek może czekać w nieskończoność na zablokowanie monitora obiektu, ale funkcja notify() może wielokrotnie budzić inne wątki. W takim przypadku również wątek zniknie.

11) Jakie jest znaczenie zajętego spinu w wielowątkowości?

Zajęty spin to technika stosowana przez programistów współbieżnych, aby wątek czekał pod pewnymi warunkami. Różni się to zupełnie od tradycyjnych metod, takich jak Wait() i Sleep(), które wymagają rezygnacji z kontroli nad procesorem. Ta metoda nie wymaga porzucenia procesora, zamiast tego po prostu uruchamia pustą pętlę.


12) Co to jest przełączanie kontekstu w wielowątkowości?

Jest to proces przechowywania i przywracania stanu procesora. To pomaga CV wykonanie wątku z tego samego punktu w późniejszym czasie. Jest to jedna z podstawowych cech wielozadaniowego systemu operacyjnego i obsługi środowiska wielowątkowego.


13) Dlaczego zachowanie wątku jest nieprzewidywalne?

Można powiedzieć, że zachowanie wątku jest nieprzewidywalne, ponieważ wykonanie wątków zależy od harmonogramu wątków. Należy pamiętać, że każdy harmonogram wątków ma inną implementację na różnych platformach, takich jak Windows, Unix itp.


14) Jak można wstrzymać wykonywanie wątku na określony czas?

Metoda Sleep() służy do wstrzymania wykonywania wątku na określony czas. Nie spowoduje to jednak zatrzymania przetwarzania wątku na określony czas. Jednakże, gdy wątek przebudzi się ze stanu uśpienia, jego stan zmieni się na możliwy do uruchomienia i na podstawie harmonogramu wątku zostanie wykonany.


15) Na jakie różne sposoby wątek może przejść w stan oczekiwania?

Wątek może przejść w stan oczekiwania na następujące sposoby

  • Korzystanie z metody Sleep().
  • Blokowanie wejść/wyjść
  • Nieudana próba uzyskania blokady obiektu
  • Wywołując metodę Wait() obiektu

16) Co się stanie, jeśli nie zastąpimy metody uruchamiania?

W Javie, gdy wywołujemy metodę start() w wątku, wywołuje ona wewnętrznie metodę run() z nowo utworzonym wątkiem. Jeśli więc nie nadpiszemy metody run(), to nowo utworzony wątek nie zostanie wywołany, więc nic się nie stanie.
Przykład:

class MyThread extends Thread {

//don't override run() method

}
public class DontOverrideRun {

public static void main(String[] args) {

System.out.println("main has started.");

MyThread thread1=new MyThread();

thread1.start();

System.out.println("main has ended.");
}

}

17) Jaka jest główna różnica pomiędzy metodą Thread.start() i Thread?run()?

Metoda Thread.start() (metoda natywna) klasy Thread wykonuje zadanie uruchomienia metody Thread.A run() w wątku. Jeśli więc bezpośrednio wywołamy Thread. Metoda run() również zostanie wykonana w tym samym wątku. W ten sposób nigdy nie rozwiąże to celu utworzenia nowego wątku.


18) Jak utworzyć wątek w Javie?

Istnieją dwie metody tworzenia wątku w Javie.

  • Najpierw implementując interfejs Runnable, a następnie utwórz z niego obiekt wątku.
  • Druga metoda polega na rozszerzeniu klasy wątku.

19) Jakie jest znaczenie priorytetu wątku?

Każdy wątek ma priorytet. Jednak wyższy priorytet ma również pierwszeństwo w wykonaniu. Zależy to jednak również od implementacji Harmonogramu wątków, która jest zależna od systemu operacyjnego. Możliwa jest zmiana priorytetu wątku, ale nie daje to pewności, że wątek o wyższym priorytecie zostanie wykonany jako pierwszy.


20) Do czego służy metoda Join()?

Metoda Join() czeka na śmierć wątku. Zmusza wszystkie działające wątki do zaprzestania wykonywania do czasu, gdy wątek dołączy, aby zakończyć swoje zadanie.


21) Co to jest hak zamykający Java?

Hak zamykający Java służy do czyszczenia zasobów podczas zamykania JVM. Czyste zasoby oznaczają zamknięcie pliku dziennika, wysłanie niektórych alertów lub coś innego. Hak zamykający musi zostać użyty do wykonania kodu przed zamknięciem JVM.


22) Jakie są dwa główne zastosowania volatile w Javie?

Wątki mogą przechowywać wartości zmiennych w pamięci lokalnej. Jeśli zmienna jest oznaczona jako ulotna, to za każdym razem, gdy używana jest ta sama zmienna, należy ją odczytać z pamięci głównej.

W ten sam sposób za każdym razem, gdy zmienna jest zapisywana, wartość musi być przechowywana w pamięci głównej.


23) Jak możesz udostępniać dane między dwoma wątkami w Javie?

Możemy pobierać dane między wątkami, używając obiektu współdzielonego lub współbieżnie struktura danych jak BlockingQueue. Implementuje wzorzec producent-konsument przy użyciu metod oczekiwania i powiadamiania. Obejmuje to także współdzielenie obiektów pomiędzy dwoma wątkami.


24) W jaki sposób można sterować wieloma wątkami jednocześnie?

Można jednocześnie kontrolować wiele wątków, jeśli zostaną utworzone w obiekcie ThreadGroup.


25) Jaka jest metoda blokowania w Javie?

W Javie metoda blokowania to metoda, która blokuje do momentu wykonania zadania. Na przykład metoda akceptowania () bloków ServerSocket do czasu połączenia klienta. Tutaj blokowanie odnosi się do wszystkiego, nad czym kontrola nie wróci do osoby wywołującej, dopóki zadanie nie zostanie zakończone.


26) Jaka jest główna różnica między metodą oczekiwania () a metodą uśpienia ()?

Czekać() Spać()
Metoda ta jest zdefiniowana w klasie Object Metoda jest zdefiniowana w klasie Thread
Metoda Wait() zwalnia blokadę Ta metoda nigdy nie zwalnia blokady.

27) Co to jest obiekt niezmienny? Jak może pomóc w pisaniu aplikacji współbieżnej?

Każdy obiekt można uznać za niekwestionowany, jeśli jego stan nie ulegnie zmianie po jego zbudowaniu. Obiekty niezmienne służą do tworzenia prostych, niezawodnych i współbieżnych aplikacji.

Aby utworzyć obiekt niezmienny, ważne jest, aby klasa i jej element były ostateczne, tak aby po utworzeniu obiektów ich stan nie uległ zmianie.


28) Powiedz mi, jaka jest różnica między poddaniem się a spaniem?

Kiedy zadanie wywołuje metodę Yield(), powraca do stanu gotowości.

Gdy zadanie wywołuje metodę Sleep(), powraca do stanu oczekiwania.


29) Co to jest ThreadPool?

ThreadPool to pula wątków, która ponownie wykorzystuje stałą liczbę wątków do wykonania określonego zadania.


30) Jaki jest pożytek ze słowa kluczowego Synchronized?

Synchronized słowo kluczowe można zastosować do metody statycznej lub niestatycznej. Używając Synchronized, tylko jeden wątek może uzyskać dostęp do zsynchronizowanych metod. Jednakże w sytuacji, gdy istnieje wiele wątków próbujących uzyskać dostęp do tej samej metody. W tym czasie inne wątki muszą czekać na wątek wykonawczy. Zapewnia również blokadę obiektu, aby zapobiec sytuacji wyścigu.

public void synchronized method1(){}

public void synchronized staticmethod1(){}

public void myMethod(){

synchronized (this){

//synchronized keyword on block of code

}

}

31) Co to jest niestabilne słowo kluczowe?

Słowo kluczowe Volatile to kwalifikator stosowany do zmiennej podczas jej deklarowania. Informuje kompilator, że wartość zmiennej może zmienić się w dowolnym momencie – bez podejmowania jakichkolwiek działań przez kod.


32) Jakie są główne różnice między notify i notifyAll w Javie?

Metoda Notify () nie zapewnia możliwości wybrania konkretnego wątku, dlatego jest użyteczna tylko wtedy, gdy pojedyncza funkcja While notifyAll() wysyła powiadomienie do wszystkich wątków. Pozwala im także konkurować o zamki. Zapewnia również, że co najmniej jeden wątek będzie kontynuowany.


33) Który parametr JVM służy do kontrolowania rozmiaru stosu wątku?

Do kontrolowania rozmiaru stosu wątku w Javie używany jest parametr Xss.


34) Czy możesz rozpocząć wątek dwukrotnie w Javie?

Nie, raz rozpoczęty wątek nie może zostać rozpoczęty po raz drugi.


35) Jaki jest cel stosowania metody plastyczności klasy wątku?

Metoda Yield to najprostszy sposób, aby zażądać od bieżącego wątku rezygnacji z procesora i zająć się innym wątkiem. Jest to metoda statyczna i gwarantuje jedynie, że bieżący wątek zrezygnuje z procesora, ale nie mówi nic o tym, który inny wątek również wpływa na procesor.


36) Kiedy możemy powiedzieć, że wątki nie są lekkim procesem w Javie?

Wątki nie są lekkim procesem, gdy wątki tego samego procesu są wykonywane jednocześnie. Chociaż, jeśli wątki różnych procesów są wykonywane jednocześnie, wątki stają się procesami o dużej wadze.


37) Czy możliwa jest synchronizacja konstruktora klasy Java?

Zgodnie ze standardem Java konstruktory nie mogą być synchronizowane, ponieważ inne wątki nie mogą zobaczyć obiektu przed zakończeniem procesu tworzenia wątku. Nie ma potrzeby synchronizowania konstruktora obiektów Java, ponieważ zablokowałoby to konstruowany obiekt.


38) Co to jest zmienna przejściowa?

Zmienna przejściowa to zmienna, której nie można serializować podczas serializacji. Podczas serializacji jest inicjowany do wartości domyślnej.

Te pytania podczas rozmowy kwalifikacyjnej pomogą również w Twoim życiu (ustach)

Udziały

Komentarze 4

  1. Avatar szkolenie z Javy mówi:

    Hii
    to naprawdę mi pomaga. podczas przygotowań do rozmowy kwalifikacyjnej.
    Naprawdę warto napisać ten artykuł i podać te informacje.
    Godne polecenia

  2. Avatar Shwethashree Venkatesh mówi:

    5) Jakie są stany wątku?
    Stan Runnable nie jest uruchomiony. Jest gotowy do uruchomienia

    1. zaktualizowany! Dziękuję za zwrócenie uwagi

    2. Avatar Amuda Adeolu Badmus mówi:

      1. Stany możliwe do uruchomienia są postrzegane jako dwuwarstwa na poziomie systemu operacyjnego

      2. Prawie wszystkie języki programowania postrzegają wątek jako uruchamialny lub NIE.

      3. Uruchomiony wątek może być w stanie (gotowy lub uruchomiony).

      4. Możesz mieć dwa wątki w stanie nadającym się do uruchomienia, ale tylko jeden wątek będzie istniał w stanie „uruchomionym”,
      podczas gdy drugi wątek istnieje w stanie „działającym”.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *