zkouška 2010-02-09, 9:00

Předmět zaměřený na praktické programování v jazyku a prostředí Java
sZtorkie
Matfyz(ák|ačka) level I
Příspěvky: 6
Registrován: 28. 1. 2009 10:32
Typ studia: Informatika Bc.
Kontaktovat uživatele:

zkouška 2010-02-09, 9:00

Příspěvek od sZtorkie »

Zkouška byla podle mě těžší než všechny na fóru nebo na wiki. (ale ne zas tak o moc). Mno uvidíme.

4. Která slova nejsou klíčová?
- scope
- extends
- default
- throw
- final

6. Které vyjímky je nutné odchytit nebo deklarovat?
- všechny
- potomky java.lang.Error
- potomky java.lang.Exception
- potomky java.lang.RuntimeException
- žádné

7. Co vypíše tohle:

Kód: Vybrat vše

class A {
    int x = 1;    
}
class B extends A {
    int x = 2;

    public void foo() {
        System.out.println(this.x);
        System.out.println(super.x);
        System.out.println(((A)this).x);
    }

    public static void main(String[] args) {
        B b = new B();
        b.foo();
- 2 2 2
- 2 2 1
- 2 1 2
- 2 1 1
- chyba překladu, this nejde přetypovat
- chyba překladu, super není na proměnné

8.

Kód: Vybrat vše

class Test {
public synchronized void foo() {...}
public static synchronized void bar() {...}
};
- foo() a bar() jsou vyloučeny každá i mezi sebou
- foo() a bar() jsou vyloučeny každá, ale mezi sebou ne
- chyba překladu, IllegalMonitorStateException

9. Napište deklaraci proměnné x tak, aby po provedení x = x + 0 neměla původní hodnotu. Pokud to nejde, zdůvodněte.

10. Máte

Kód: Vybrat vše

class Pair { String key; int value; } 

Napište Pair[] find(String key, Pair[] items).

a další, jednodušší...
Xerxes
Matfyz(ák|ačka) level I
Příspěvky: 37
Registrován: 23. 1. 2007 16:32
Typ studia: Informatika Bc.
Bydliště: Zlínský kraj / Kolej 17. listopadu
Kontaktovat uživatele:

Re: zkouška 2010-02-09, 9:00

Příspěvek od Xerxes »

Skutečně mi to přišlo těžší než ty dva testy, co jsou tady a na wiki. Proto, dokud si to jakž takž pamatuju, zkusím to nějak sepsat celé, aby tu byl další kompletní test (vypůjčím si, co napsal kolega, snad se nebude moc zlobit). Snad je to správně, když tak připomínkujte. Některé varianty odpovědí jsem si musel vymyslet.

1) Atribut typu int bez explicitní inicializace:
A. je inicializován hodnotou 0
B. má nedefinovanou hodnotu a při čtení je vráceno předem nestanovitelné číslo
C. má nedefinovanou hodnotu a při čtení je vyvolána výjimka typu UndefinedValueException
D. má nedefinovanou hodnotu a překladač nedovolí použití, dokud není jisté, že se napřed nějaká hodnota nastaví.
E. je inicializován maximální hodnotou, která se do typu int vejde

2) Co platí o rozhraních (interface):
A. třída může implementovat nejvýše jeden interface
B. třída může implementovat žádný, jeden nebo i více interfaces
C. interface může implementovat nejvýše jedna třída
D. interface může dědit od nejvýše jednoho interface
E. interface může dědit od žádného, jednoho nebo i více interfaces

3) Není-li u prvku třídy (metoda, atribut, ...) uveden žádný modifikátor viditelnosti (public, private, ...), je tento prvek viditelný:
A. pouze z této třídy
B. pouze z této třídy a potomků této třídy
C. pouze ze stejného balíku
D. pouze ze stejného balíku a potomků této třídy
E. odkudkoliv

4) Co vypíše (pokud něco) kód:

Kód: Vybrat vše

class A {
	static int x = 1;
}

public class Main {
	static A a = null;
	public static void main(String[] args) {
		System.out.println(a.x);
	}
}
A. 0
B. 1
C. pokažé něco jiného (závisí na okolnostech)
D. spadne na NullPointerException
E. nelze přeložit

5) Která slova nejsou klíčová?
A. scope
B. extends
C. main
D. throw
E. final

6) Které vyjímky je nutné odchytit nebo deklarovat?
A. všechny
B. potomky java.lang.Error
C. potomky java.lang.Exception
D. potomky java.lang.RuntimeException
E. žádné

7) Co vypíše (pokud něco) kód:

Kód: Vybrat vše

class A {
    int x = 1;
}

class B extends A {
    int x = 2;
    public void foo() {
        System.out.println(this.x);
        System.out.println(super.x);
        System.out.println(((A)this).x);
    }
    public static void main(String[] args) {
        B b = new B();
        b.foo();
	}
}
A. 2 2 2
B. 2 2 1
C. 2 1 2
D. 2 1 1
E. chyba překladu, this nejde přetypovat
F. chyba překladu, super není na proměnné

8) Mějme třídu

Kód: Vybrat vše

class Test {
	public synchronized int foo() {...}
	public static synchronized void bar() {...}
}
Co platí?
A. foo() a bar() jsou pro přístup více vlákny vyloučeny každá sama se sebou i mezi sebou navzájem
B. foo() a bar() jsou pro přístup více vlákny vyloučeny každá sama se sebou, ale nikoliv mezi sebou navzájem
C. chyba překladu, nedeklaruje se výjimka IllegalMonitorStateException

9) Napište deklaraci proměnné x tak, aby po provedení x = x + 0 neměla původní hodnotu. Pokud to nejde, zdůvodněte.

10) Máme "class Pair { String key; int value; }", napište metodu "Pair[] find(String key, Pair[] items)", která vrátí všechny páry z "items", které mají stejný klíč jako ten daný.

Výsledky a komentáře:
1) A. Pozor, jde o atribut, nikoliv lokální proměnnou, pro kterou by platitlo D.
2) B, E.
3) C.
4) B. Jde totiž o statický atribut a při přístupu k těm se používá jen typ výrazu, nikoliv jeho hodnota (která je null).
5) A, C.
6) C. Trochu mě to mátlo, protože RuntimeException je potomkem Exception, ale vylučovací metodou nic jiného nezbylo.
7) D.
8) B. Pozor na to, jedna metoda je static (používá zámek na třídě jako takové) a druhá není (používá zámek na instanci). Proto nejsou navzájem vyloučené. C je špatně, minimálně proto, že IllegalMonitorStateException dědí od RuntimeException.
9) String x = "";
10) Nějak to napsat (pozor na porovnávání stringů).

Po půl hodině doběhl pan Hnětynka a jal se opravovat. Celková bilance: 1 jednička, cca 7 dvojek, 5 trojek a 3 čtverky.
Uživatelský avatar
LadyMalande
Matfyz(ák|ačka) level I
Příspěvky: 5
Registrován: 27. 1. 2019 21:14
Typ studia: Informatika Bc.

Re: zkouška 2010-02-09, 9:00

Příspěvek od LadyMalande »

Ahoj,
přidávám vysvětlení podle dokumentace k otázce číslo 6:
The class Exception and any subclasses that are not also subclasses of RuntimeException are checked exceptions. Checked exceptions need to be declared in a method or constructor's throws clause if they can be thrown by the execution of the method or constructor and propagate outside the method or constructor boundary.
RuntimeException and its subclasses are unchecked exceptions. Unchecked exceptions do not need to be declared in a method or constructor's throws clause if they can be thrown by the execution of the method or constructor and propagate outside the method or constructor boundary.
We now have a dog and Alistair is still the dumbest one in the party. - Morrigan
Odpovědět

Zpět na „PGR013 Java“