ОО2/К2 2024

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

K2 2024. godine održan je 26. aprila i trajao je 20min.

  • За питања са више одговора, тачни одговори су подебљани и уоквирени
  • За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
  • Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:

1. zadatak

Ovako izgledaju zadaci sa odgovorima ponuđenim u padajućem meniju.

  1. Mogu da se definišu reference tog tipa I apstraktna klasa i interfejs
  2. Podrazumevano pravo pristupa članovima je javno Interfejs
  3. Može da ima zaštićene članove Apstraktna klasa
  4. Može da ima inicijalizacione blokove Apstraktna klasa
  5. Predstavlja kombinaciju ugovora i delimične implementacijeI apstraktna klasa i interfejs

2. zadatak

Koji modifikator se stavlja uz metod interfejsa za koji želimo da napišemo podrazumevanu implementaciju sa ciljem da se izbegne modifikacija postojećih implementacija interfejsa kada je interfejsu potrebno dodati nove metode

Odgovor: default

3. zadatak

Koje od sledećih tvrdnji su tačne za programski jezik Java?

  1. Objektima tipa nabrajanja memeorija se dodeljuje na steku
  2. Argumenti koji se navode uz simboličku konstantu u definiciji tipa nabrajanja su argumenti konstruktora nabrajanja
  3. Tip nabrajanja može da definiše metode
  4. Tip nabrajanja može da definiše nestatička polja
  5. Simboličke konstante nabrajanj predstavljaju nepromenljive reference na objekte datog tipa nabrajanja

4. zadatak

Na jeziku Java, provereni izuzetak može da se baci iz:

  1. Statičkog inicijalizacionog bloka, ako svi konstruktori navode dati tip izuzetka u svojoj throws klauzuli
  2. Metoda koja navodi dati tip izuzetka u svojoj throws klauzuli
  3. Nestatičkog inicijalizacionog bloka, ako svi konstruktori navode dati tip izuzetka u svojoj throws klauzuli
  4. Bloka catch grane, ako metod u kojem se grana nalazi navodi dati tip izuzetka u svojoj throws klauzuli
  5. Konstruktora koji navodi dati tip izuzetka u svojoj throws klauzuli

5. zadatak

Šta sve može da se napiše umesto *** da bi se programski kod uspešno preveo?

public class Spoljasnja {
    private int x;
    public in y;
    class Unutrasnja {
        public void m() {
            ***
        }
    }
}
  1. super.y = 1
  2. x = 1
  3. y = 1
  4. Spoljasnja.this.y = 1
  5. this.y = 1

6. zadatak

Šta ispisuje sledeći program napisan na programskom jeziku Java?

interface I {
    int m(int x, int y);
}
public class Main {
    public static void main(String[] args) {
        int x = 2, y = 5, z = 0;
        I[] niz = new I[] {
                (a, b) -> a+b,
                (a, b) -> a*b,
                (a, b) -> b-a
        };
        for(I i: niz) {
            z += i.m(x,y);
        }
        System.out.print(z);
    }
}

Odgovor: 20 Objašnjenje: Korak gde se pravi new I[] zapravo inicijalizuje niz sa 3 anonimne klase, gde svaka implementira interfejs I, a iza -> je data implementacija metoda m() iz I. Na kraju se sabiraju rezultati sve 3 operacije s x i y

7. zadatak

Koji od navedenih metoda mogu da bace InterruptedException?

  1. notify()
  2. sleep()
  3. join()
  4. interrupt()
  5. wait()

Objašnjenje: InterruptedException bacaju metode koje na bilo koji način zaustavljaju nit koja ih poziva

8. zadatak

Koje od sledećih tvrdnji su tačne za programski jezik Java?

  1. Moguće je da nadjačani metod u izvedenoj klasi ne bude označen modifikatorom synchronized, iako je odgovarajući metod u osnovnoj klasi označen tim modifikatorom.
  2. Moguće je da u isto vreme jedna nit pristupi jednom sinhronizovanom nestatičkom metodu objekta, a druga nit pristupi drugom sinhronizovanom nestatičkom metodu istog objekta.
  3. Moguće je da u isto vreme jedna nit pristupi jednom sinhronizovanom nestatičkom metodu objekta, a druga nit pristupi istom sinhronizovanom metodu drugog objekta iste klase.
  4. Moguće je da u isto vreme jedna nit pristupi sinhronizovanom statičkom metodu klase, a druga nit pristupi sinhronizovanom nestatičkom metodu objekta iste te klase.
  5. Ukoliko nit ne može da pristupi sinhronizovanom metodu neke klase one preskače taj metod i nastavlja sa izvršavanjem.

9. zadatak

Koje od sledećih tvrdnji su tačne za notify() u programskom jeziku Java?

  1. Moguće je da pozvati metod notify() kad nijedna nit nije blokirana.
  2. Prilikom nadjačavanja metoda notify() mora se nadjačati i metod wait() .
  3. Metod notify() može da se nadjača samo za klasu koja je označena kao synchronized
  4. Prilikom nadjačavanja metoda notify() mora se nadjačati i metod notifyAll() .
  5. Prilikom poziva metoda notify() sa izvršavanjem garantovano nastavlja nit koja je najduže čekala

10. zadatak

Koji ispisi su mogući za sledeći programski kod na jeziku Java?

class Nit extends Thread {
    public void run() {
        System.out.println("3");
        for (int i = 0; i < 1000; i++);
        System.out.println("4");
    }
}
public class Main {
    public static void main(String[] args) {
        Nit nit = new Nit();
        nit.run();
        System.out.println("1");
        for(int i = 0; i < 1000; i++);
        System.out.println("2");
    }
}
  1. Dati programski kod ispisuje isključivo 1234
  2. Nijedan od ponuđenih odgovora nije tačan
  3. Moguće je više različitih ispisa, pri čemu se 1 uvek nalazi ispred 2, a 3 uvek ispred 4
  4. Dati programski kod se ne prevodi
  5. Dati programski kod ispisuje isključivo 3412

Objašnjenje: Funkcija run() se poziva sekvencijalno, kao i bilo koja druga funkcija, pa je redosled predodređen. Da bi se nad objektom napravila nit, mora da se pozove start()