WorksheetsJava4
Total questions: 30
Worksheet time: 15mins
81. Co to jest wątek (thread) w kontekście Javy?
A. Oddzielny proces
B. Sekwencja instrukcji wykonywana współbieżnie w ramach jednego procesu
C. Wyjątek krytyczny
D. Klasa final do obsługi kolekcji
82. Jak można utworzyć wątek w Javie?
A. Rozszerzając klasę Thread lub implementując interfejs Runnable, a następnie wywołując start()
B. Tylko przez System.runThread()
C. Przez dodanie adnotacji @Thread
D. Nie można tworzyć wątków
83. Jaka jest różnica między run() a start() w klasie Thread?
A. run() tworzy nowy wątek, a start() wykonuje kod w bieżącym wątku
B. start() tworzy nowy wątek i wewnętrznie wywołuje run() w nim, natomiast bezpośrednie wywołanie run() nie tworzy dodatkowego wątku
C. Nie ma różnicy
D. start() jest metodą prywatną, run() – publiczną
84. Co oznacza słowo kluczowe synchronized?
A. Pozwala utworzyć klasę, której obiekty są niezmienne
B. Oznacza, że dana metoda (lub blok) jest synchronizowana, tzn. tylko jeden wątek może ją wykonywać naraz na danym obiekcie
C. Automatycznie zatrzymuje wątek
D. Nie istnieje takie słowo w Javie
85. Co to jest „race condition” (warunek wyścigu)?
A. Sytuacja, gdy wątek jest zablokowany na zawsze
B. Mechanizm optymalizacji JIT
C. Sytuacja, w której dwa (lub więcej) wątki jednocześnie manipulują współdzielonym zasobem i wynik może zależeć od kolejności przełączania wątków
D. Metoda do startowania wątku
86. Jak bezpiecznie „przerwać” wątek w Javie, zgodnie z dobrymi praktykami?
A. Użyć thread.stop()
B. Wywołać thread.interrupt(), a w samym wątku sprawdzać okresowo isInterrupted() czy Thread.interrupted()
C. Nie ma możliwości przerwania wątku
D. Wywołać metodę destroy()
87. Co się stanie, jeśli dwa wątki wywołają jednocześnie metodę synchronized tego samego obiektu?
A. Oba wątki będą wykonywać metodę równolegle
B. Jeden z wątków poczeka, aż drugi skończy wykonywać metodę
C. Metoda się nie wywoła
D. Pojawi się wyjątek kompilacji
88. Czym jest volatile w kontekście zmiennych w Javie?
A. Gwarantuje, że odczyty i zapisy do tej zmiennej są zawsze widoczne w pamięci głównej i nie podlegają optymalizacji rejestrów/wątków
B. Gwarantuje synchronizację całej metody
C. Oznacza, że zmienna jest final
D. Oznacza, że zmienna jest typu long
89. Co robi metoda join() na wątku w Javie?
A. Nic, jest pusta
B. Powoduje, że bieżący wątek czeka, aż inny wątek zakończy działanie
C. Uruchamia metodę run()
D. Zmienia priorytet wątku na najwyższy
90. Jak nazywa się wyjątek rzucany, gdy wątek został przerwany (interrupt) w trakcie np. sleep()?
A. InterruptedException
B. IOException
C. RuntimeException
D. NoSuchThreadException
91. Do czego służy blok synchronized(obj) { ... }?
A. Do serializacji obiektu obj
B. Do zablokowania obiektu obj jako monitora – wewnątrz tego bloku może przebywać tylko jeden wątek naraz
C. Do automatycznego wstrzymania wątku
D. Do wyczyszczenia pamięci
92. Jakie są podstawowe stany wątku w Javie w dużym uproszczeniu?
A. new, runnable, blocked (czasem waiting), terminated
B. start, stop, run, main
C. off, on, standby
D. single, multi
93. Czym jest Thread.sleep(1000)?
A. Blokuje obiekt this
B. Usypia bieżący wątek na co najmniej 1000 ms (1 sek.)
C. Kończy działanie wątku
D. Tworzy nowy wątek
94. Co można w prosty sposób zrobić, aby uniknąć jednoczesnego zapisu do współdzielonej zmiennej z wielu wątków?
A. Nie używać zmiennych
B. Oznaczyć zmienną jako volatile i użyć mechanizmu synchronized lub innej blokady przy zapisie/odczycie
C. Nie ma możliwości uniknięcia
D. W każdym wątku utworzyć osobną kopię zmiennej
95. Czym jest tzw. „deadlock”?
A. Sytuacją, gdy wątki wzajemnie na siebie czekają, blokując się na zawsze
B. Metodą do zatrzymania wątku
C. Wyjątkiem RuntimeException
D. Mechanizmem do przyspieszania wątków
96. Jak nazwiemy sytuację, gdy wątek czeka na zasób, ale się go nigdy nie doczeka, bo np. inny wątek ma wyższy priorytet?
A. Race condition
B. Starvation (głodzenie wątku)
C. Deadlock
D. Polimorfizm
97. Czy można w Javie tworzyć „pule wątków” (thread pool)?
A. Tak, np. poprzez Executors.newFixedThreadPool(...)
B. Nie, to niemożliwe
C. Tylko w Javie 7 i starszych
D. Tylko przez użycie Gita
98. Co to jest metoda yield() w klasie Thread?
A. Uśmierca wątek natychmiast
B. Sugeruje oddanie czasu procesora innym wątkom (może lub nie może być uwzględnione przez system)
C. Zwiększa priorytet wątku
D. Zmniejsza pamięć dostępną dla wątku
99. Jak nazywamy wątki, które pracują w tle i kończą się, gdy wszystkie inne (zwykłe) wątki zakończą działanie?
A. Wątki user-level
B. Wątki systemowe
C. Wątki demonowe (daemon threads)
D. Wątki final
100. Co oznacza, że klasa Thread w Javie implementuje interfejs Runnable?
A. Oznacza, że można przeciążać konstruktory
B. Oznacza, że w klasie jest metoda run(), która określa zadanie wątku
C. Oznacza, że wątek nie może się zakończyć
D. Nie ma znaczenia, to jest błąd w implementacji
101. Czym jest klasa wewnętrzna (inner class)?
A. Klasa z adnotacją @Inner
B. Klasa zdefiniowana wewnątrz innej klasy
C. Klasa, która nie ma konstruktora
D. Rodzaj wyjątku
102. Co oznacza modyfikator static przy klasie wewnętrznej?
A. Taka klasa nie ma dostępu do pól instancji klasy zewnętrznej
B. Taka klasa automatycznie dziedziczy po Thread
C. Taka klasa staje się prywatna
D. Nie ma różnicy w stosunku do zwykłej klasy wewnętrznej
103. Czym jest klasa anonimowa (anonymous class)?
A. Klasa utworzona bez nazwy, zazwyczaj w miejscu, gdzie potrzebna jest jednorazowa implementacja interfejsu lub klasy abstrakcyjnej
B. Klasa, która dziedziczy po Object
C. Klasa prywatna
D. Metoda statyczna
104. Co to jest enum w Javie?
A. Mechanizm do serializacji obiektów
B. Specjalny typ wyliczeniowy, zawierający skończony zbiór stałych
C. Mechanizm do łączenia wątków
D. Klasa abstrakcyjna
105. Jak w enumie można zdefiniować własne metody?
A. Enumy nie mogą mieć metod
B. Normalnie, np.: java KopiujEdytuj public enum Kolor { CZERWONY, ZIELONY; public void wypisz() { ... }}
C. Tylko metody statyczne
D. Trzeba dziedziczyć po klasie EnumMethods
106. Czy enum może mieć konstruktory?
A. Tak, można zdefiniować prywatny konstruktor (wywoływany wewnętrznie)
B. Nie, enum nigdy nie ma konstruktora
C. Tylko publiczny
D. Tylko chroniony adnotacją @EnumConstructor
107. Jakie jest domyślne dziedziczenie każdej klasy w Javie, gdy nie podajemy explicit?
A. Każda klasa dziedziczy po Object
B. Każda klasa dziedziczy po BaseClass
C. Klasa nie dziedziczy po niczym
D. Dziedziczenie jest niemożliwe bez extends
108. Kiedy stosujemy klasę wewnętrzną niestatyczną?
A. Gdy chcemy, aby miała dostęp do pól i metod instancji klasy zewnętrznej
B. Gdy potrzebujemy klasy final
C. Gdy chcemy wielokrotnego dziedziczenia
D. Gdy chcemy zdefiniować metodę main
109. Czym różni się klasa abstrakcyjna od interfejsu w Javie?
A. Klasa abstrakcyjna może mieć metody z ciałem i pola instancji, a interfejs (w klasycznej postaci) zawierał tylko metody abstrakcyjne i stałe (choć w nowszych wersjach Javy interfejs może mieć metody domyślne i statyczne)
B. Interfejs zawsze musi być final
C. Klasa abstrakcyjna to inna nazwa interfejsu
D. Nie ma różnicy
110. Do czego służy słowo kluczowe package w pliku źródłowym Javy?
A. Do importowania bibliotek
B. Do zdefiniowania, w jakim pakiecie (namespace) znajduje się dana klasa
C. Do zaznaczenia metod prywatnych
D. Nie ma takiego słowa w Javie
