1.2.2016 - zkouška - Hnětynka

Předmět zaměřený na praktické programování v jazyku a prostředí Java
jankasvk
Matfyz(ák|ačka) level I
Příspěvky: 14
Registrován: 31. 5. 2015 13:05
Typ studia: Informatika Bc.

1.2.2016 - zkouška - Hnětynka

Příspěvek od jankasvk »

1. Aky je rozsah premennej byte
-128 az 127
2. Co plati o interface
- trieda moze dedit od ziadneho alebo maximalne jedneho interface
- trieda moze dedit od ziadneho alebo lubovolne mnoha interface
- interface moze dedit od lubovolne mnoho interface
- interface moze dedit od prave jednoho interface
- interdace nemoze dedit od interface
3. Ake modifier moze mat Inner class
- public
- private
- static
- friendly
- volatile
4. Co sa stane s nasledujucim kodom
interface A s default hello
interface B s default hello
class A implements A, B{}
- neprelozi nic
- prelozi A, B neprelozi sa C
- neprelozi sa A ani B ale C ano
....
5. Ktere nejsou keywords
- abstract
- namespace
- finalize
- self
- ...
- ...
6. Ktore vynimky nie je nutne odchytavat
- vsetky
- ziadne
- Error
- Runtime
- Exception

7. Co spravi nasledujuci kod
....
Sytem.out.println(argv[2]);
...
Ak je spusteny z prikazoveho riadku java Prog hello world
- vypise hello
- vypise world
- ....
- Vyhodi chybu

8. Doplnite deklaraci aby sychronized bolo pouzite spravne
synchronized (s) {

}
- neda sa pouzit takto
- String, int, Object, Thread, Runnable

9. Da sa napisat inicializacia premennej aby v x = x + 0 nebola hodnota rovna povodnej
10. Kod ktory sluzi na prekopirovanie suboru. Doplnte try/catch/finally aby ste odchytavali vsetky vynimky
Kalthar
Matfyz(ák|ačka) level I
Příspěvky: 6
Registrován: 5. 10. 2014 10:28
Typ studia: Informatika Mgr.

Re: 1.2.2016 - zkouška - Hnětynka

Příspěvek od Kalthar »

Správné odpovědi:

1.) [-128 ; 127]

2.)
a) Třída může implementovat od 0 do \infty interfaců
b) Iterface může implementovat od 0 do \infty interfaců

3.) Ve vnitřní třídě jsou povoleny příznaky
a) public
b) private
c) static

4.) A a B jsou v Java 8 správně implementované s tělem defaultních metod hello, takže se přeloží bez problému. Zato C, které dědí od obou interfaců neví, pro kterou metodu se má rozhodnout. Tudíž se nepřeloží. Správná náprava by byla overridnout metodu hello ve třídě C. Takto je ale správná odpověď: Přeloží A a B, ale nepřeloží C.

5.) Mezi keywords, které byly vypsané nepatřily namespace, finalize a self.

6.) Není nutné odchytávat výjimky zděděné od Error a Runtime.

7.) Vyhodí chybu. Narozdíl od Cpp neobsahují argumenty programu název programu. Tedy pole předané funkci main vypadá takto: ["hello","world"]. Tedy obsahuje 2 položky a index 2 by se snažil přistoupit k 3. položce -> IndexOutOfBoundsException.

8.) Synchronizovat blok se nechá pomocí libovolného objektu. Třída objekt obsahuje již vše potřebné k synchronizaci. Zápis je správný, takže se nechá použít. Od objektu dědí jak String, tak Object, Thread i Runnable. Nepatří sem tedy pouze základní typ int. Pokud by se jednalo například o Integer (objektová reprezentace základního typu), bylo by vše v pořádku.

9.) Ano, například String. Pozor! je potřeba jej inicializovat nějakou hodnotou. Například String x = ""; poté x + 0 = "0" != ""

10.) Zdrojový kód byl takovýto:

InputFileStream ifs = ...;
OutputFileStream ofs = ...;
char c;
while((c = ifs.read()) != -1){
ofs.write(c);
}
ifs.close();
ofs.close();


Ideální řešení:

try( InputFileStream ifs = ... ; OutputFileStream = ...; ){

char c;
while((c = ifs.read()) != -1){
ofs.write(c);
}

} catch (IOException ex){
System.out.println(ex.getMessage());
}

Nechalo by se to řešit i vícenásobným počtem try-catch bloků, ale pak by bylo třeba doplnit finally a v tom streamy uzavřít, ale zase by se muselo dát pozor na to, aby jednotlivé streamy byly inicializované. Tedy, abychom nedereferencovali null pointer. Uzavírání streamů řeší try-with-resources sám :-)
Odpovědět

Zpět na „PGR013 Java“