ОО2/К2 2021

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
  • За питања са више одговора, тачни одговори су подебљани и уоквирени.
  • За питања за које се одговори уносе, тачни одговори су подвучени и сакривени: овако.
  • Притисните на следеће дугме како бисте их сакрили или открили:

Г1

1. задатак

Означити тачна тврђења на програмском језику Јава:

  1. Ако конструктор наткласе нема конструктор без параметара (но-арг) потребно је експлицитно позвати тај конструктор у првој линији конструктора посматране класе.
  2. Конструктор наткласе ће бити имплицитно позван ако постоји и без параметара је.
  3. Конструктор наткласе се може експлицитно позвати именом те класе.
  4. ??
  5. ??

2. задатак

Означити тачна тврђења на програмском језику Јава:

  1. Интерфејс може да проширује[1] више класа.
  2. Интерфејс може да проширује[1] више интерфејса.
  3. Интерфејс може да прошири[1] само један интерфејс.
  4. Интерфејс може бити основа за проширивање[1] више интерфејса.
  5. Интерфејс се имплицитно изводи из класе Објецт.

3. задатак

Означити тачна тврђења на програмском језику Јава:

  1. Анонимна класа је локална класа без имена.
  2. Анонимна класа се дефинише у изразу неw, као део наредбе.
  3. Анонимна класа проширује другу класу или интерфејс.
  4. Наткласа анонимне класе се дефинише у имену те класе.
  5. Анонимна класа у својој дефиницији користи кључне речи extends и/или implements.

4. задатак

Шта исписује следећи код на програмском језику Јава? (Уписати 0 ако се програм не преводи.)

interface A { default void m() { System.out.print("A.m()"); } }
interface B { default void m() { System.out.print("B.m()"); } }
public class C implements A,B {
    public void m() { System.out.print("C.m()"); A.super.m(); B.super.m(); }
    public static void main(String[] arguments) {
        C c = new C();
        c.m();
    }
}

Одговор: C.м()А.м()Б.м()

5. задатак

Шта се може написати уместо ### како би се следећи код на програмском језику Јава преводио исправно?

interface Calc {
    int m(int a, int b);
}
public class Test {
    public static void main(String[] arguments) {
        ###
    }
}
  1. Цалц ц = (инт а, инт б) -> а + б;
  2. Цалц ц = а, б -> а + б ;
  3. Цалц ц = а, б -> { а + б };
  4. Цалц ц = (инт а, б) -> ретурн а + б;
  5. Цалц ц = (инт а, инт б) -> { ретурн а + б; };

6. задатак

Шта се може написати уместо $$$ како би се следећи код на програмском језику Јава исправно извршавао и исписивао 3?

class Spoljna {
    int x = 1;
    class Unutrasnja {
        int x = 2;
        public void m(int x) {
            System.out.println($$$);
        }
    }
}

public class Main {
    public static void main(String[] arguments) {
        new Spoljna().new Unutrasnja().m(3);
    }
}
  1. тхис.x
  2. x
  3. супер.x
  4. Спољна.тхис.x
  5. Спољна.x

7. задатак

Означити тачна тврђења на програмском језику Јава:

  1. финаллy блок се извршава само уколико се у трy блоку баци изузетак.
  2. финаллy блок се извршава само уколико се у трy блоку не баци изузетак.
  3. финаллy блок се извршава без обзира на то да ли је у трy блоку бачен изузетак.
  4. Може постојати само један финаллy блок за посматрани трy блок.
  5. У финаллy блоку може бити бачен изузетак.

8. задатак

Означити тачна тврђења на програмском језику Јава:

  1. Тело методе рун класе Тхреад је празно.
  2. Корисник експлицитно треба да позове методу рун.
  3. Класа изведена из класе Тхреад треба[2] да надјача методу рун.
  4. Јава виртуелна машина имплицитно зове методу рун.
  5. Нит нормално завршава извршење по повратку из њеног метода рун.

9. задатак

Означити тачна тврђења на програмском језику Јава:

  1. Позив интеррупт над блокираном нити методом јоин() изазива изузетак ИнтерруптедЕxцептион.
  2. Позив интеррупт над блокираном нити методом јоин() изазива изузетак ТхреадДеатх.
  3. Позив интеррупт над блокираном методом јоин() нит се деблокира.
  4. Позив интеррупт над блокираном нити методом јоин() не поставља интерруптед статус.

Објашњење: Тврдња под д је на колоквијуму била означена као тачна, али заправо није, и студентима су накнадно били признавани бодови. У верзији презентације из нити из 2021 је овај део на слајду 11 исправљен.

10. задатак

Шта је тачно за следећи код на програмском језику Јава?

public class Test {
    public static void main(String[] arguments) {
        Thread t1 = new Thread(() -> { while (true); });
        t1.setDaemon(false);
        t1.start();
    }
}
  1. Референца т1 показује на демонску нит.
  2. Јава виртуелна машина (ЈВМ) завршава свој рад након завршетка главне функције.
  3. Линија са сетДаемон у коду не мења демонски статус нити на коју показује т1.
  4. Након извршења главне функције се не излази из програма јер има још корисничких нити за извршавање.
  5. Линија са сетДаемон у коду не мења ништа, односно нема ефекта.

Г2

1. задатак

Означити тачна тврђења на програмском језику Јава:

  1. Експлицитни или имплицитни позив конструктора надкласе се може избећи ако се у конструктору изведене класе позове неки други конструктор те исте класе.
  2. Ако се користи, позив другог конструктора исте класе мора бити прва наредба у конструктору.
  3. Конструкција објекта се може делегирати позивом једног конструктора из другог конструктора.
  4. Рекурзију у делегирању конструктора детектује преводилац.
  5. Дозвољено је у конструктору прво позвати конструктор надкласе а затим делегирати конструкцију неком другом конструктору.

2. задатак

Означити тачна тврђења на програмском језику Јава:

  1. Референца на неки интерфејс може показивати на литерал нулл.
  2. Сви интерфејси су изведени из класе Интерфаце у пакету јава.ланг.
  3. Референци на неки интерфејс може се доделити објекат било које класе која проширује[1] тај интерфејс.
  4. Референци на интерфејс се може доделити објекат који се добије када се са друге стране алокатора new нађе назив тог интерфејса.
  5. Референца на неки интерфејс се може доделити референци типа Објецт.

3. задатак

Шта исписује следећи код на програмском језику Јава? Уколико се програм не компајлира, уписати 0.

interface A { default void m() { System.out.println("A.m()"); } }
class C { public void m() { System.out.println("C.m()"); } }
public class Test extends C implements A {
    public static void main(String[] arguments) {
        Test t = new Test();
        t.m();
    }
}

Одговор: C.м

4. задатак

Анонимна класа на програмском језику Јава може садржати:

  1. конструктор
  2. нестатичке методе
  3. статичке методе
  4. нестатичка поља
  5. статичка поља

5. задатак

Шта се може написати уместо ### како би се следећи код на програмском језику Јава преводио исправно?

interface Calc {
    int m(int a, int b);
}
public class Test {
    public static void main(String[] arguments) {
        ###
    }
}
  1. Цалц ц = (инт а, инт б) -> а + б;
  2. Цалц ц = (инт а, инт б) -> { а + б };
  3. Цалц ц = (инт а, инт б) -> { инт р = а + б; ретурн р; };
  4. Цалц ц = (инт а, инт б) -> ретурн а + б;
  5. Цалц ц = (инт а, инт б) -> { ретурн а + б; };

6. задатак

Шта се може написати уместо $$$ како би се следећи код на програмском језику Јава исправно извршавао и исписивао 2?

class Spoljna {
    int x = 1;
    class Unutrasnja {
        int x = 2;
        public void m(int x) {
            System.out.println($$$);
        }
    }
}

public class Main {
    public static void main(String[] arguments) {
        new Spoljna().new Unutrasnja().m(3);
    }
}
  1. x
  2. тхис.x
  3. супер.x
  4. Спољна.тхис.x
  5. Спољна.x

7. задатак

Означити тачна тврђења на програмском језику Јава:

  1. финаллy блок може да постоји без цатцх блока.
  2. финаллy блок се извршава само уколико се у цатцх блоку баци изузетак.
  3. финаллy блок се извршава само уколико се у цатцх блоку не баци изузетак.
  4. финаллy блок се извршава без обзира на то да ли је у цатцх блоку бачен изузетак.
  5. финаллy блок се извршава иако не дође до грешке.

8. задатак

Означити тачна тврђења на програмском језику Јава:

  1. Метода старт поново покреће нит уколико је завршена.
  2. Поновни позив старт након завршетка нити је грешка.
  3. Позив методе старт ставља нит над којом је позвана у ред спремних нити.
  4. Нит која позива старт се блокира.
  5. Нит која позива старт се не блокира.

9. задатак

Означити тачна тврђења на програмском језику Јава:

  1. Позив интеррупт над блокираном нити изазива изузетак ИнтерруптедЕxцептион.
  2. Позив интеррупт над блокираном нити изазива изузетак ТхреадДеатх.
  3. Позив интеррупт над блокираном нити је деблокира.
  4. Позив интеррупт над блокираном нити не мења њено стање.
  5. Позивом метода интеррупт за неку нит која је суспендована позивом метода слееп не врши се постављање статуса прекида те нити.

Објашњење: Тврдња под е је на колоквијуму била означена као тачна, али заправо није, и студентима су накнадно били признавани бодови. У верзији презентације из нити из 2021 је овај део на слајду 11 исправљен.

10. задатак

Шта је тачно за следећи код на програмском језику Јава?

public class Test {
    public static void main(String[] arguments) {
        Thread t1 = new Thread(() -> { while (true); });
        t1.setDaemon(true);
        t1.start();
    }
}
  1. Референца т1 показује на демонску нит.
  2. Јава виртуелна машина (ЈВМ) завршава свој рад након завршетка главне функције.
  3. Линија са сетДаемон у коду не мења демонски статус нити на коју показује т1.
  4. Након извршења главне функције се не излази из програма јер има још корисничких нити за извршавање.
  5. Референца т1 не показује на демонску нит.

Г3

1. задатак

Шта ће следећи програм исписати? Написати 0 уколико се програм не преводи.

interface A { default void m() { System.out.print("A.m()"); } }
interface B { default void m() { System.out.print("B.m()"); } }
public class X implements A, B {
    public void f() { System.out.print("X.f()"); A.super.m(); B.super.m(); }
    public static void main (String[] args) {
        X x = new X();
        x.f();
    }
}

Одговор: 0

Објашњење: Класа X имплементира интерфејсе који имају подразумевану методу истог назива, а притом је не редефинише као свој метод, што је у Јави грешка и такав програм се неће преводити.

2. задатак

Који су искази тачни за метод wait:

  1. Уколико се позове интеррупт за нит за коју је претходно позвано wаит, таква нит ће се деблокирати.
  2. Уколико се позове интеррупт за нит за коју је претходно позвано wаит, бациће се изузетак ИнтерруптедЕxцептион.
  3. Уколико се позове интеррупт за нит за коју је претходно позвано wаит, бациће се изузетак ТхреадДеатх.
  4. Уколико се позове интеррупт за нит за коју је претходно позвано wаит, неће се променити статус прекида.

Објашњење: Тврдња под д је на колоквијуму била означена као тачна, али заправо није, и студентима су накнадно били признавани бодови. У верзији презентације из нити из 2021 је овај део на слајду 11 исправљен.

3. задатак

Који су искази тачни за метод join:

  1. Позивом метода јоин без аргумената за неку нит, нит која позива метод чека да нит за коју је метод позван заврши извршавање.
  2. Метод јоин се може позвати без аргумената.
  3. Позивом метода јоин за неку нит са задатим временом у милисекундама чекаће се бар толико времена, без обзира на то да ли је нит завршила извршавање пре истека времена.
  4. Метод јоин не може да се надјача у изведеним класама.
  5. Позивом метода јоин подразумевано се завршава нит за коју је позван метод.

4. задатак

Шта важи за анонимне класе:

  1. Анонимне класе могу приступати нестатичким пољима окружујуће класе.
  2. Анонимне класе могу приступати статичким пољима окружујуће класе.
  3. Анонимне класе могу приступати непроменљивим параметрима метода који их окружује.
  4. Анонимне класе могу приступати локалним променљивама окружујућег метода којима се не мења вредност.
  5. Анонимне класе могу приступати свим локалним променљивама окружујућег метода, као и његовим параметрима, без обзира на то да ли им се мења вредност.

5. задатак

Шта важи за интерфејсе:

  1. Подразумевано су поља интерфејса јавна, статичка и коначна.
  2. Подразумевано су методи интерфејса апстрактни и јавни.
  3. Интерфејси могу дефинисати подразумеване методе.
  4. Интерфејси могу дефинисати статичке методе.
  5. Интерфејси могу имати модификатор финал.

6. задатак

Навести шта је тачно за демонске нити:

  1. Демонство се наслеђује од нити из које је креирана дата нит.
  2. Демонство може да се мења након покретања нити.
  3. Покушај промене демонства након покретања бациће ИллегалСтатеЕxцептион.
  4. Демонске нити ће наставити извршавање након завршетка свих осталих нити.
  5. Демонство се може мењати само пре покретања нити.

7. задатак

interface Calc {
    int f(int x);
}

public class Test {
    public static void main(String[] args) {
        Test test = new Test();
        ###
    }
}

Шта треба да стоји уместо ### да би програм коректно завршио?

  1. Цалц ц = (а) -> а * а;
  2. Цалц ц = а -> а * а;
  3. Цалц ц = а -> { а*а; }
  4. Цалц ц = б -> б * б;
  5. Цалц ц = (инт а) -> а * а;

8. задатак

Које су тврдње тачне за подразумевани уграђени конструктор:

  1. Уколико није дефинисан ниједан други конструктор, преводилац га аутоматски обезбеђује.
  2. Подразумевано ће само позвати подразумевани конструктор наткласе.
  3. Неће позвати подразумевани конструктор наткласе само у случају да је класа директно изведена из класе Објецт.
  4. Уколико је класа јавна, и он је подразумевано јаван.
  5. ??? свакако нешто нетачно

9. задатак

public class Spoljna {
    int x = 1;
    class Unutrasnja {
        int x = 2;
        void m(int x) {
            System.out.print(###);
        }
    }
    public static void main(String[] args) {
        new Spoljna().new Unutrasnja().m(3);
    }
}

Шта може све стајати уместо ### да би програм коректно завршио и исписао 1?

  1. тхис.x
  2. x
  3. Спољна.тхис.x
  4. Оутер.x
  5. супер.x

10. задатак

Навести тачне тврдње за изузетке:

  1. Сви изузеци у Јави морају бити изведени из класе Еxцептион.
  2. Сви изузеци који се бацају у методу морају се навести у његовој тхроwс клаузули.
  3. Преводилац може да провери типове изузетака наведених у тхроwс клаузули.
  4. Метод може бацити изузетак искључиво експлицитним навођењем уз тхроw.

Напомене

  1. 1,0 1,1 1,2 1,3 1,4 Ово није била навлакуша, већ је требало да пише "имплементира". Неким студентима који су овакву грешку сматрали намерном су бодови које су изгубили незаокруживањем тачних тврдњи због ове грешке били признати накнадно.
  2. Ово није навлакуша већ се мисли при конкретном коришћењу, тако да треба, али не мора - само неће радити ништа.