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

Odeslat odpověď

Smajlíci
:D :) :( :o :shock: :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode je zapnutý
[img] je zapnutý
[flash] je vypnutý
[url] je zapnuté
Smajlíci jsou zapnutí

Přehled tématu
   

Rozšířit náhled Přehled tématu: zkouška 2010-02-09, 9:00

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

od LadyMalande » 27. 1. 2019 21:36

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.

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

od Xerxes » 9. 2. 2010 11:36

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.

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

od sZtorkie » 9. 2. 2010 09:37

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šší...

Nahoru