Dnes to bylo trochu obtížnější než obvykle. Házím to sem, dokud si většinu pamatuji.
Výsledky: pár jedniček a dvojek, hromada trojek a čtyřek
Formát: klasický - 8 testových otázek s 1+ správnou odpovědí, 2 otevřené na doplnění kódu. Za špatně (ne)zvolené odpovědi se akumulují trestné body. 0..2 jednička, 3..5 dvojka, 6..9 trojka, jinak čtyřka.
1. Co se nepřeloží?
a) byte x = 1024;
b) int x = 08;
c) long x = null;
d) char x = "a";
e) int x = 0x1234;
2. Co se stane při překladu programu?
Kód: Vybrat vše
class MyClass {
public static void main(String[] args) {
amethod(args);
}
public void amethod(String arguments[]) {
System.out.println(arguments[1]);
System.out.println(arguments);
}
}
a) nelze přeložit - metoda amethod není deklarována před voláním
b) nelze přeložit - statická metoda main volá instanční metodu amethod
c) nelze přeložit - špatná deklarace pole v main
d) nelze přeložit - println nepřijímá jako parametr pole
3. Co se přeloží?
a)
Kód: Vybrat vše
if (3 == 2) System.out.println("Hi!");
b)
Kód: Vybrat vše
if (3 = 2) System.out.println("Hi!");
c)
Kód: Vybrat vše
if (true) System.out.println("Hi!");
d)
Kód: Vybrat vše
if (3 != 2) System.out.println("Hi!");
4. Co dělá protected u elementu třídy (atribut, metoda)?
a) element je přístupný pouze ze třídy
b) element je přístupný pouze ze třídy a jejích potomků, pokud jsou ve stejném balíčku
c) element je přístupný pouze ze třídy a jejích potomků, pokud jsou kdekoliv
d) element je přístupný pouze ze třídy, jejích potomků (pokud jsou kdekoliv) a z balíčku, do kterého třída patří
5. Vyberte klíčová slova
a) throws
b) object
c) override
d) do
6. Co je pravda?
a) vnitřní třídy musí implementovat alespoň jeden interface
b) vnitřní třídy mají přístup ke všem (i private) elementům třídy, která je obsahuje
c) vnitřní třídy nedědí od třídy Object
d)
(už si nepamatuju, co tu bylo, ale bylo to správně)
7. Co se přeloží?
a)
Kód: Vybrat vše
import java.util.*;
package MyPackage;
class MyClass {}
b)
Kód: Vybrat vše
package MyPackage;
import java.util.*;
class MyClass {}
c)
Kód: Vybrat vše
/* komentar */
package MyPackage;
import java.util.*;
class MyClass {}
d) nic se nepřeloží
8. Co je pravda?
a) notify(), notifyAll() a wait() je definováno na třídě Object
b) notify(), notifyAll() a wait() je definováno na třídě Thread
c) notify(), notifyAll() a wait() lze volat jen ze synchronized sekcí a bloků
d) třída Thread je abstraktní
9. Funkce forEach má hlavičku:
Kód: Vybrat vše
void forEach(Consumer<? super T> action)
Kde funkcionální rozhraní Consumer je definováno:
Kód: Vybrat vše
interface Consumer<T> {
void accept(T t);
}
Doplňte výraz do forEach, aby program vypsal všechny prvky seznamu:
Kód: Vybrat vše
List<String> list = ...;
list.stream.forEach(
// zde byly asi 3 volne radky
)
10. Předefinujte korektně equals() ve třídě:
Kód: Vybrat vše
class Complex {
int re; int im;
// zde bylo asi 5 volnych radku
}
Řešení:
1. a (přetečení int literálu v byte proměnné), b (neplatný osmičkový literál), c (nelze narvat null do primitivního typu), d (nelze narvat String literál do charu)
2. b
3. a, c, d
4. d
5. a, d
6. b, d
7. b, c
8. a, c
9. například
nebo
10. například:
Kód: Vybrat vše
@override
public boolean equals(Object other) {
if (other instanceof Complex) {
Complex that = (Complex) other;
return this.re == that.re && this.im == that.im;
}
return false;
}
Dnes to bylo trochu obtížnější než obvykle. Házím to sem, dokud si většinu pamatuji.
[b]Výsledky:[/b] pár jedniček a dvojek, hromada trojek a čtyřek
[b]Formát:[/b] klasický - 8 testových otázek s 1+ správnou odpovědí, 2 otevřené na doplnění kódu. Za špatně (ne)zvolené odpovědi se akumulují trestné body. 0..2 jednička, 3..5 dvojka, 6..9 trojka, jinak čtyřka.
[b]1. Co se nepřeloží?[/b]
a) byte x = 1024;
b) int x = 08;
c) long x = null;
d) char x = "a";
e) int x = 0x1234;
[b]2. Co se stane při překladu programu?[/b]
[code]class MyClass {
public static void main(String[] args) {
amethod(args);
}
public void amethod(String arguments[]) {
System.out.println(arguments[1]);
System.out.println(arguments);
}
}[/code]
a) nelze přeložit - metoda amethod není deklarována před voláním
b) nelze přeložit - statická metoda main volá instanční metodu amethod
c) nelze přeložit - špatná deklarace pole v main
d) nelze přeložit - println nepřijímá jako parametr pole
[b]3. Co se přeloží?[/b]
a) [code]if (3 == 2) System.out.println("Hi!");[/code]
b) [code]if (3 = 2) System.out.println("Hi!");[/code]
c) [code]if (true) System.out.println("Hi!");[/code]
d) [code]if (3 != 2) System.out.println("Hi!");[/code]
[b]4. Co dělá protected u elementu třídy (atribut, metoda)?[/b]
a) element je přístupný pouze ze třídy
b) element je přístupný pouze ze třídy a jejích potomků, pokud jsou ve stejném balíčku
c) element je přístupný pouze ze třídy a jejích potomků, pokud jsou kdekoliv
d) element je přístupný pouze ze třídy, jejích potomků (pokud jsou kdekoliv) a z balíčku, do kterého třída patří
[b]5. Vyberte klíčová slova[/b]
a) throws
b) object
c) override
d) do
[b]6. Co je pravda?[/b]
a) vnitřní třídy musí implementovat alespoň jeden interface
b) vnitřní třídy mají přístup ke všem (i private) elementům třídy, která je obsahuje
c) vnitřní třídy nedědí od třídy Object
d) [i](už si nepamatuju, co tu bylo, ale bylo to správně)[/i]
[b]7. Co se přeloží?[/b]
a)
[code]import java.util.*;
package MyPackage;
class MyClass {}[/code]
b)
[code]package MyPackage;
import java.util.*;
class MyClass {}[/code]
c)
[code]/* komentar */
package MyPackage;
import java.util.*;
class MyClass {}[/code]
d) nic se nepřeloží
[b]8. Co je pravda?[/b]
a) notify(), notifyAll() a wait() je definováno na třídě Object
b) notify(), notifyAll() a wait() je definováno na třídě Thread
c) notify(), notifyAll() a wait() lze volat jen ze synchronized sekcí a bloků
d) třída Thread je abstraktní
[b]9. Funkce forEach má hlavičku:[/b]
[code]void forEach(Consumer<? super T> action)[/code]
Kde funkcionální rozhraní Consumer je definováno:
[code]interface Consumer<T> {
void accept(T t);
}[/code]
Doplňte výraz do forEach, aby program vypsal všechny prvky seznamu:
[code]List<String> list = ...;
list.stream.forEach(
// zde byly asi 3 volne radky
)[/code]
[b]10. Předefinujte korektně equals() ve třídě:[/b]
[code]class Complex {
int re; int im;
// zde bylo asi 5 volnych radku
}[/code]
[line][/line]
[b]Řešení:[/b]
1. a (přetečení int literálu v byte proměnné), b (neplatný osmičkový literál), c (nelze narvat null do primitivního typu), d (nelze narvat String literál do charu)
2. b
3. a, c, d
4. d
5. a, d
6. b, d
7. b, c
8. a, c
9. například [code]s -> { System.out.println(s); }[/code] nebo [code]System.out::println[/code]
10. například:
[code]@override
public boolean equals(Object other) {
if (other instanceof Complex) {
Complex that = (Complex) other;
return this.re == that.re && this.im == that.im;
}
return false;
}[/code]