Zkouska 2009-02-02

Předmět zaměřený na praktické programování v jazyku a prostředí Java
kukmuk
Matfyz(ák|ačka) level I
Příspěvky: 10
Registrován: 2. 2. 2009 20:20
Typ studia: Informatika Bc.

Zkouska 2009-02-02

Příspěvek od kukmuk »

Tak dnesni zkouska mi prisla v ramci moznosti ok. Zadani nerozdaval Hnetynka, ale nekdo jim povereny. Na zacatku jeste stihl rict, ze zkouska mu prijde tezsi nez obvykle. Ja bych to okomentoval jen tak, ze kdo byl na zkousce ze C# u Pavla Jezka, tak ma jinou predstavu o tom, co je tezka zkouska z programovaciho jazyka :).

Bylo 10 otazek. Z toho 8 zaskrtavacich a 2 na psani kodu. V zaskrtavaci sekci byla u kazde otazky alespon jedna moznost ze ctyr spravne, ale mohlo byt klidne vic. Za nezaskrtnuti toho co melo byt nebo za zaskrtnuti toho co nemelo byt se daval trestny bod. Na zkousku je 45 minut.

Hodnoceni:
  • 0-1 trestny bod - za 1
  • 2-3 trestne body - za 2
  • 4-6 trestne body - za 3

  1. Lokalni promenna typu int vyskytujici se uvnitr metody
    A. je od mista deklarace inicializovana hodnotou 0
    B. ma nedefinovanou hodnotu a pri cteni je vraceno predem nestanovitelne cislo
    C. ma nedefinovanou hodnotu a prekladac nedovoli pouziti
    D. je inicializovana maximalni hodnotou, ktera se do typu int vejde
  2. Mejme abstraktni tridu, pak
    A. od ni nelze vytvaret instance
    B. lze od ni dedit, ale nelze predefinovat zadnou jeji metodu
    C. nelze od ni dedit
    D. vsechny jeji metody jsou take abstraktni
  3. Prikazem import static lze naimportovat do lokalniho jmenneho prostoru
    A. vsechny atriuty a metody tridy
    B. pouze staticke atributy tridy
    C. pouze staticke metody tridy
    D. pouze staticke metody a staticke atributy tridy
    E. pouze atributy a metody oznacene anotaci @exportStatic
  4. Co bude vystupem nasledujiciho useku kodu?

    Kód: Vybrat vše

    public class A {
        public int x = 0;
    
        {
            x += 1;
        }
    
        public A() {
            x += 1;
        }
    
        public static void main(String[] args) {
            A a = new A();
            System.out.println(a.x);
        }
    }
    
    A. nelze prelozit
    B. 0
    C. 1
    D. 2
    E. hodnota se muze lisit pri opakovanych spousteni programu
  5. Ktera slova nejsou v Jave klicovymi?
    A. import
    B. throws
    C. implements
    D. foreach
    E. run
    F. sizeof
  6. Predpokladejme, ze metoda foo() v nasledujicim uryvku kodu skonci vyhozenim vyjimky MyException, ktera dedi od tridy Exception. Rozhodnete, co bude na standardnim vystupu po provedeni kodu

    Kód: Vybrat vše

    ...
    try {
        foo();
    } catch (MyException exc) {
        System.out.println("MyException");
    } catch (Exception exc) {
        System.out.println("Exception");
    } finally {
        System.out.println("finally");
    }
    ...
    
    A. MyException Exception finally
    B. MyException finally
    C. Exception finally
    D. finally
    E. takovy to try-catch-finally blok nelze v Jave napsat - chyba pri prekladu
  7. Rozhodnete, co bude na standardnim vystupu po spusteni programu

    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);
        }
    
        public static void main(String[] args) {
            B b = new B();
            b.foo();
        }
    }
    
    A. 2 2
    B. 1 1
    C. 2 1
    D. nelze aplikovat klicove slovo super na atributy
    E. nelze prepisovat atributy tridy, od ktere se dedi
  8. Uvazujme nasledujici tridu

    Kód: Vybrat vše

    public class A {
        private int x;
    
        public synchronized void setX(int value) {
            x = value;
        }
    
        public synchronized int getX() {
            return x;
        }
    }
    
    Dale predpokladejme, ze nejake vlakno ziskalo pristup a je uvnitr metody setX(int value). Pak jinym vlaknem
    A. nelze pristupovat ani k getX() ani k setX(int value)
    B. lze pristupovat k getX(), ale ne k setX(int value)
    C. kod nelze prelozit, u metod nejsou deklarovany "throws" parametry
  9. Napiste metodu, ktera obdrzi jako prvni parametr typu int nejakou mzdu a jako druhy parametr typu int nejakou hodnotu procent (od nuly do sta) udavajici velikost dane z prijmu. Metoda ma vracet castku (double), kterou zaplatime jako dan. Overte korektnost vstupu.
    Hint: nezapomenout k metode pripsat patricne "throws", nezapomenout pri deleni pretypovat na double
  10. Napiste tridu dynamicky rozsirujici ho se pole intu - staci metody add(int x) a get(int index)
Naposledy upravil(a) kukmuk dne 5. 2. 2009 19:41, celkem upraveno 4 x.
QZuzka
Matfyz(ák|ačka) level III
Příspěvky: 209
Registrován: 2. 12. 2007 19:51
Typ studia: Informatika Mgr.
Bydliště: Praha 4

Re: Zkouska 2009-02-02

Příspěvek od QZuzka »

kukmuk píše: Hodnoceni:
  • 0-1 trestny bod - za 1
  • 2-3 trestne body - za 2
  • 4-6 trestne body - za 3
Jen to hodnocení bylo mírnější, jednička za -2, dvojka -4, trojka snad až -8
Germoe
Matfyz(ák|ačka) level I
Příspěvky: 34
Registrován: 28. 5. 2008 15:40
Typ studia: Informatika Ph.D.

Re: Zkouska 2009-02-02

Příspěvek od Germoe »

QZuzka píše:
kukmuk píše: Hodnoceni:
  • 0-1 trestny bod - za 1
  • 2-3 trestne body - za 2
  • 4-6 trestne body - za 3
Jen to hodnocení bylo mírnější, jednička za -2, dvojka -4, trojka snad až -8
Taky špatně... já měl -5 a měl jsem ještě dvojku... takže bych to viděl tak, že známkování bylo stejné jako na C#
0-2 1
3-5 2
6-8 3
9-∞ 4
QZuzka
Matfyz(ák|ačka) level III
Příspěvky: 209
Registrován: 2. 12. 2007 19:51
Typ studia: Informatika Mgr.
Bydliště: Praha 4

Re: Zkouska 2009-02-02

Příspěvek od QZuzka »

Germoe píše:
QZuzka píše:
kukmuk píše: Hodnoceni:
  • 0-1 trestny bod - za 1
  • 2-3 trestne body - za 2
  • 4-6 trestne body - za 3
Jen to hodnocení bylo mírnější, jednička za -2, dvojka -4, trojka snad až -8
Taky špatně... já měl -5 a měl jsem ještě dvojku... takže bych to viděl tak, že známkování bylo stejné jako na C#
0-2 1
3-5 2
6-8 3
9-∞ 4

jo, to zní logicky.. ale, třeba by teď mohl přijít ještě někdo a zase to posunout a zmírnit :)
Uživatelský avatar
adam
Matfyz(ák|ačka) level I
Příspěvky: 31
Registrován: 10. 1. 2007 12:36
Typ studia: Informatika Mgr.
Kontaktovat uživatele:

Re: Zkouska 2009-02-02

Příspěvek od adam »

kukmuk píše:Tak dnesni zkouska mi prisla v ramci moznosti ok. Zadani nerozdaval Hnetynka, ale nekdo jim povereny. Na zacatku jeste stihl rict, ze zkouska mu prijde tezsi nez obvykle. Ja bych to okomentoval jen tak, ze kdo byl na zkousce ze C# u Pavla Jezka, tak ma jinou predstavu o tom, co je tezka zkouska z programovaciho jazyka :).
Doplnění:

9. Bylo zadáno, že při nekorektním vstupu (záporný hrubý příjem apod.) se má vyhodit výjimka MyException (máme přepokládat, že už je někde deklarovaná, případně naimportovaná). Několik lidí včetně mě to místo přetypováním řešili násobením konstantou v plovoucí řádce (tj. return příjem/(daň/100.0) místo return (double)příjem*(daň/100)), což zkoušející zprvu opravoval jako chybu (asi si toho prostě nevšiml), ale pak to uznal.

10. Byla tam zmínka o tom, že pokud je index mimo rozsah, měla by se vyhodit výjimka, a že implementovat se to má polem intů, které se bude podle potřeby realokovat. Při nejjednodušší implementaci (tj. že pole roste po jednotkách podle potřeby) výjimky vůbec nebylo třeba řešit, protože se vyhazují samy přístupem do toho pole (instanční proměnné). Taková implementace byla v pořádku (nebyly za ní žádné trestné body).
Za nezaskrtnuti toho co melo byt nebo za zaskrtnuti toho co nemelo byt se daval trestny bod.
Tj. pokud jste místo správné odpovědi A měli špatnou odpověď B, dostali jste 2 trestné body. Nezkoušel jsem nechávat otázku úplně nezodpovězenou, protože jsem o téhle penalizaci nevěděl. Pak mi bylo nějaké divné, že mám za každou chybu 2 body dolů:/. Vzhledem k tomu, že i malý bodový rozdíl může snadno rozhodnout o známce (případně udělání/neudělání zkoušky), tak je docela dobré vědět to předem a zbytečně neztrácet body, když opravdu neznáte správnou odpověď. To jen tak pro příští generace;).
Uživatelský avatar
adam
Matfyz(ák|ačka) level I
Příspěvky: 31
Registrován: 10. 1. 2007 12:36
Typ studia: Informatika Mgr.
Kontaktovat uživatele:

Re: Zkouska 2009-02-02

Příspěvek od adam »

QZuzka píše:
Germoe píše: Taky špatně... já měl -5 a měl jsem ještě dvojku... takže bych to viděl tak, že známkování bylo stejné jako na C#
0-2 1
3-5 2
6-8 3
9-∞ 4
jo, to zní logicky.. ale, třeba by teď mohl přijít ještě někdo a zase to posunout a zmírnit :)
6 trestných bodů už byla trojka, takže mírnější to asi nebude. Alespoň ne ta hranice 2/3. (Do kolika byla jednička nebo trojka, nevím.)
JPS18
Matfyz(ák|ačka) level I
Příspěvky: 6
Registrován: 17. 1. 2009 16:42
Typ studia: Informatika Bc.

Re: Zkouska 2009-02-02

Příspěvek od JPS18 »

Nemohol by pls niekto napisat ako mala vyzerat 10. a 8. ?
Uživatelský avatar
adam
Matfyz(ák|ačka) level I
Příspěvky: 31
Registrován: 10. 1. 2007 12:36
Typ studia: Informatika Mgr.
Kontaktovat uživatele:

Re: Zkouska 2009-02-02

Příspěvek od adam »

JPS18 píše:Nemohol by pls niekto napisat ako mala vyzerat 10. a 8. ?
10. (a 9.): Řešení je na http://mff.lokiware.info/Java. (Prošlo mi bez ztráty bodu, a prý to bylo dokonce jedno z těch rozumnějších. Předpokládám, že dost lidí se snažilo řešit výjimky, nebo možná alokovali pole nějak zbytečně "chytře", třeba po dvojnásobcích kapacity.)

8. Správná odpověď je A. nelze pristupovat ani k getX() ani k setX(int value). Tím nelze přistupovat je míněno (jak zkoušející ústně doplnil), že vlákno, které by se o to pokusilo, se zablokuje, dokud to nepůjde.
johnny
Donátor
Donátor
Příspěvky: 95
Registrován: 13. 12. 2005 00:31
Typ studia: Informatika Mgr.
Bydliště: Trója

Re: Zkouska 2009-02-02

Příspěvek od johnny »

6. vypise MyException finally
Odpovědět

Zpět na „PGR013 Java“