Bodovanie zaskrtavacich otazok je podobne ako na C++. V kazdej z programovacich otazok clovek moze stratit od 0 do 3 bodov, podla toho kolko chyb tam urobi. Z preklepy, ako napr. chybajuci strednik, sa body nestrhavaju.
1. Co z toho sa neskompiluje?
a) System.out.println(1+1); //OK, println vie vypisat int
b) int x = 42 + '25'; //OK, inty s charmi sa scitavat mozu
c) String s = "foo" + 'bar'; //neskompiluje, lebo medzi apostrofmi moze byt len 1 znak
d) byte x = 255; //neskompiluje, lebo rozsah byte je od -127 do 128, takze 255 je mimo rozsah
Spravne odpovede: C, D
2. Zakruzkujte, co plati pre abstract triedu:
a) Nejde z nej vytvarat instance
b) Nejde z nej dedit
c) Jej metody sa v potomkoch nemozu predefinovat
d) Vsetky jej metody musia byt abstract
e) Nemusi obsahovat ani jednu abstract metodu, teda ze moze existovat abstract class ktora nema ani jednu abstract metodu
Spravne odpovede: A, E
3. Co sa importuje prikazom static import?
Spravna odpoved: vsetky static metody a premenne
4.
Kód: Vybrat vše
int i = 9;
switch (i) {
default: System.out.println("default");
0: System.out.println("nula");
break;
1: System.out.println("jedna");
break;
2: System.out.println("dva");
break;
}
Vypise sa "default nula". Default kludne moze byt aj na zaciatku switchu, to vobec nevadi. Program skoci do defaultu, vypise "default", a kedze za defaultom nie je break, prepadne do "0:", a vypise "nula". Za nulou uz break je, takze switch skonci.
5. Ktore slova NIE SU klucove?
Malo to 6 moznosti, nepamatam presne ake to boli. Tri boli klucove, tri neboli. Klucovych slov je len 50, to sa nejak naucte.
6. Co z toho je spravna deklaracia?
a) void foo(void) throws MyException { }
b) void foo() throws MyException { }
c) void foo() throws { } MyException
d) foo() throw MyException { }
Spravna odpoved: B
7.
Kód: Vybrat vše
class A {
int x = 1;
}
class B extends A {
int x = 2;
public void foo() {
System.out.println(super.x);
System.out.println(((A)this).x);
}
public static void main(String[] args) {
B b = new B();
b.foo();
}
}
Opdpoved: Vypise "1 1", lebo super.x a ((A)this).x je to iste
8.
Kód: Vybrat vše
class Foo {
...
public synchronized int getX() {
...
}
public synchronized void setX(int x) {
...
}
}
a) getX() a setX() jsou vyloučeny každá i mezi sebou
b) este nieco o tom vyluceni
c) este nieco o tom vyluceni
d) Ak volanie getX vlozime do vnutra setX, a zavolame setX, nieco sa stane (nepamatam co)
e) Ak volanie getX vlozime do vnutra setX, a zavolame setX, nieco ine sa stane (nepamatam co)
Spravne odpovede: A, D
9. Napiste metodu na vypocet dane, to tu uz bolo
Riesenie:
Kód: Vybrat vše
double dane(int zaklad, int percento) throws MyException {
if (dan < 0 || percento < 0 || percento > 100) {
throw new MyException();
}
return zaklad * (percento / 100.0); //100.0 robi ten prevod na double
}
Kód: Vybrat vše
class Pole {
public int[] pole;
public int size;
public Pole() {
pole = new int[0];
size = 0;
}
public void add(int x) {
size++;
int[] pole2 = new int[size];
for (int i = 0; i < (size - 1); i++) {
pole2[i] = pole[i];
}
pole2[size - 1] = x;
pole = pole2;
}
public int get(int i) throws IndexOutofBoundsException {
if (i < 0 || i >= size ) {
throw new IndexOutofBoundsException();
}
return pole[i];
}
}