Sample Test

25 Apr 2017

Please, keep in mind that the content of the course is different, so some of the questions are not and will not be covered at all.

  1. При кое извикване на функция/метод ще се използва Argument Dependent Lookup?
    1. ::f(a);
    2. a.f(b);
    3. Lib::f(a);
    4. f(a)
  2. При дадените декларации:
    class Base { } ;
    class Der : public Base { } ;
    
    void f(const Base& o);
    template  f(const T& o);
    
    Der d;
    
    Обръщението f(d) e:
    1. Обръщение към void f(const Base& o)
    2. Обръщение към void f(const Derived& o)
    3. Компилационна грешка - неопределено
    4. Грешка по време на изпълниение
  3. На какво разчита RAII (Resource Acquisition Is Initialization) за да осигури придобиването и освобождаването на ресурса съответно?
    1. на явно извикване на методи
    2. на конструктора и деструктора
    3. на използването на умен указател
  4. Използването на shared_ptr има смисъл само при multithreaded приложения?
    1. вярно
    2. не вярно
  5. При използването на operator-> на умен указател, operator-> се прилага:
    1. един път
    2. докато се стигне до обикновен указател
  6. На какво разчита std::binary_search(begin, end) за да работи?
    1. [begin, end) да е сортирана редица и елементите и да имат operator==
    2. [begin, end) да е сортирана редица и елементите и да имат operator<
    3. [begin, end) да е произволна редица и елементите и да имат operator<
    4. [begin, end) да е произволна редица и елементите и да имат operator==
  7. Кой алгоритъм бихте използвали за извеждане на десетте най-добри резултата в намаляващ ред?
    1. std::sort
    2. std::nth_element
    3. std::partial_sort
    4. собствен алгоритъм
  8. При следните декларации:
    template  void f(const T& x);
    template  void f(const std::vector& x);
    void f(const std::vector& x);
    
    typedef std::vector VectorInt;
    VectorInt x;
    
  9. Обръщението f(x) ще извика:
    1. f(const T& x)
    2. f(const std::vector& x)
    3. f(const std::vector& x)
  10. Виртуалното наследяване е част от поддръжката на C++ за
    1. виртуални методи
    2. generic programming
    3. множествено наследяване
    4. обектно-ориентирано програмиране
  11. Точка на инстацииране наричаме:
    1. мястото на създаване на обект
    2. мястото на декларация на шаблон
    3. мястото на дефиниция на шаблон
    4. мястото на използване на шаблон
  12. Кои методи на шаблон се инстанциират при използването на lazy instantiation в рамките на един translation unit и видима дефиниция на шаблона?
    1. всички, които се използват
    2. всички
    3. никой - методите се генерират веднъж за цялото приложение
    4. само тези които явно укажем
  13. Кога се извършва name lookup за използваните функции независещи от шаблонен аргумент в даден шаблон?
    1. при декларацията на шаблона
    2. при дефиницията на шаблона
    3. при инстанциирането на шаблона
  14. weak_ptr
    1. нормален указател
    2. умен указател, правещ reference count и освобождаващ ресурса, когато не е нужен
    3. умен указател, сочещ към споделен ресурс, без да се брои като reference
  15. Ако има нещо нередно със следния код, как бихте го поправили?
    struct Base
    {
        void f(int);
    }
    struct Der : Base
    {
        void f(const vector&);
    }
    
    Der d;
    d.f(42);
    
  16. Къде може да ползвате „безопасно“ виртуални функции?
    1. само извън класа
    2. извън класа и в неговите методи
    3. навсякъде с изключение на инициализиащия списък на базовите класове
  17. Ако има нещо нередно със следния код, как бихте го поправили?
    bool print(int x) { cout << x; }
    vector v(10);
    // v = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    vector x;
    std::copy(v.begin(), v.end(), x.begin());
    std::for_each(x.begin(), x.end(), print);