Zkouška 4.2.2014

Předmět zaměřený na praktické programování v jazyku a prostředí Java
Lazybug123

Zkouška 4.2.2014

Příspěvek od Lazybug123 »

Bodovanie bolo ako vzdy, vascina otazok bola z minulych testov. Na skusku si doneste indexy, lebo zapisuje znamky na mieste a aj bez zapoctu.
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;
}
Co sa vypise?
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();
       }
    }
Co sa vypise?
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) {
    ...
  }
}
Co plati?
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
}
10. Napiste triedu na implementaciu dynamickeho pola intov, aj to uz bolo

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];
  }

}
Skuska bola velmi lahka, narocnost asi ako C++. Ucila som sa na to dokopy asi 4 hodiny a mala som jednotku, takze tak :)
Odpovědět

Zpět na „PGR013 Java“