ОО2/К1 2022

Извор: SI Wiki
< ОО2
Датум измене: 30. март 2023. у 14:05; аутор: KockaAdmiralac (разговор | доприноси) (Preciznija formulacija pitanja nakon žalbi)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Први колоквијум 2022. године на СИ одсеку се одржао 30. марта. Од области дошле су објекти и класе, извођење, пакети, као и преглед језика Јава.

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

1. задатак

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

  1. Имплементација Јава виртуелне машине зависи од конкретне платформе (архитектуре рачунара, оперативног система) за коју је намењена, али под претпоставком да поштује спецификацију, пружа јединствен "интерфејс" за бајткод.
  2. Интерпретирање бајткода је ефикасно, али у општем случају слабијих перформанси од извршавања програма на машинском језику.
  3. Имплементација Јава виртуелне машине је софтвер.
  4. Превођењем изворног Јава програма добија се бајткод.
  5. Само програми писани на програмском језику Јава могу да се преведу у бајткод.[1]

2. задатак

За сваки од следећих сегмената кода на језику Јава навести да ли је вредност променљиве резултат једнака вредности труе или фалсе.

  1. String s1 = "Zdravo";
    String s2 = "zDrAvO";
    boolean rezultat = s1 == s2;
    
    фалсе
  2. String s1 = new String("Zdravo");
    String s2 = "Zdravo";
    boolean rezultat = s1 == s2;
    
    фалсе
  3. String s1 = new String("Zdravo");
    String s2 = new String("Zdravo");
    boolean rezultat = s1 == s2;
    
    фалсе
  4. String s1 = "Zdravo";
    String s2 = "Zdravo";
    boolean rezultat = s1 == s2;
    
    труе

3. задатак

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

  1. Низови су објекти, који представљају серију података неког типа.
  2. Након креирања низа објеката nizX класе X наредбом X[] низX = неw X[10]; сви елементи низа који представљају референце иницијализовани су на null.[2]
  3. Приступ елементу низа (индексирање) вредношћу индекса ван дозвољеног опсега производи изузетак IndexOutOfBoundException.
  4. ...

4. задатак

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

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

5. задатак

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

class B {
    B b1;
    static B b2;
    public static void s_f() {}
    public void f() {}
    public void test() {
        ####
    }
}
  1. с_ф();
  2. Објецт о = тхис.б1;
  3. Објецт о = б2;
  4. ...
  5. Б.с_ф();

6. задатак

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

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

7. задатак

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

  1. Класи која има пакетско право приступа могу да приступе све класе из тог пакета и све класе из потпакета тог пакета.
  2. Пакет A.X може да постоји и ако пакет A није дефинисан (у програму не постоји наредба package A;).
  3. Право приступа класи у пакету може бити јавно, пакетско и заштићено.
  4. Класе из пакета A.X имају право приступа свим јавним класама из пакета A.
  5. Подразумевано право приступа за чланове класе је приватно.

8. задатак

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

class B {
    public B() {}
    public B(int i) {}
}
class D extends B {
    public D() {}
    public D(int i) {
        ####
    }
}
  1. супер(и);
  2. тхис(и);
  3. тхис();
  4. //
  5. супер(и); тхис();

9. задатак

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

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

10. задатак

Означити тачну тврдњу која одговара следећем програмском сегменту.

class A implements Cloneable {}

public class Main {
    public static void main(String[] args) {
        try {
            A a = new A();
            a.clone();
            System.out.println("uspeh");
        } catch (CloneNotSupportedException e) {
            System.out.println("neuspeh");
        }
    }
}
  1. Програм исписује neuspeh.
  2. Програм се не преводи.
  3. Програм исписује uspeh.

Напомене

  1. Због тога што професор потенцијално није поменуо на предавању да се и други језици преводе у бајткод, овде је призната жалба студентима који су одговор означили као тачан.
  2. На колоквијуму је на овом месту грешком писало X[] низX = неw X(); што није валидна синтакса, па је та жалба касније усвојена.
  3. Формулација овог одговора на самом колоквијуму гласила је Може да постоји тачно један статички и тачно један нестатички иницијализациони блок. Касније су колегама које су одговор означиле као тачан признати бодови.