diff --git a/README.md b/README.md index 8320639887..46c9562fc7 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,7 @@ Want to contribute? [Here](https://github.com/linkedin-faq) is the source code. | [node.js](node.js/node.js-quiz.md) | | | 90 | 90 | [@pbachman](https://github.com/pbachman) | | [NoSQL](nosql/nosql-quiz.md) | | | 51 | 51 | | | [objective-c](objective-c/objective-c-quiz.md) | | | 51 | 51 | | -| [OOP](object-oriented-programming/object-oriented-programming-quiz.md) | | | 122 | 122 | [@declarck](https://github.com/declarck), [@gaurovgiri](https://github.com/gaurovgiri) | +| [OOP](object-oriented-programming/object-oriented-programming-quiz.md) | |[](object-oriented-programming/object-oriented-programming-quiz-ua.md) | 122 | 122 | [@declarck](https://github.com/declarck), [@gaurovgiri](https://github.com/gaurovgiri) | | [PHP](php/php-quiz.md) | | | 105 | 105 | [@ruslanbes](https://github.com/ruslanbes), [@msteiner96](https://github.com/msteiner96) | | [Pro Tools](pro-tools/pro-tools-quiz.md) | | | 16 | 16 | | | [Python](python/python-quiz.md) | | [](python/python-quiz-es.md) | 184 | 184 | [@tik9](https://github.com/tik9), [@Amsal1](https://github.com/Amsal1), [@declarck](https://github.com/declarck), [@TSG405](https://github.com/tsg405) | diff --git a/object-oriented-programming/object-oriented-programming-quiz-ua.md b/object-oriented-programming/object-oriented-programming-quiz-ua.md new file mode 100644 index 0000000000..7cb14f375c --- /dev/null +++ b/object-oriented-programming/object-oriented-programming-quiz-ua.md @@ -0,0 +1,960 @@ +## Об'єктно-орієнтоване програмування (ООП) + +#### Q1. Що є прикладом динамічного зв’язування? + +- [ ] будь-який метод +- [ ] перевантаження методу +- [x] перевизначення методу +- [ ] компіляція + +#### Q2. Для якого випадку буде доцільним використання статичного атрибута? + +- [ ] кількість людей у ​​кожному будинку в невеликому мікрорайоні +- [ ] розмір ділянки для кожного будинку в невеликому районі +- [ ] колір кожного будинку в маленькому районі +- [x] погодні умови для кожного будинку в невеликому районі + +#### Q3. 1 Навіщо створювати абстрактний клас, якщо він не може мати жодних реальних екземплярів? + +- [x] щоб уникнути надлишкового кодування у дітей +- [ ] дослідити гіпотетичний клас +- [ ] щоб запобігти використанню небажаного методу +- [ ] щоб зарезервувати пам'ять для класу невизначеного типу + +#### Q4. 2 Навіщо створювати абстрактний клас, якщо він не може мати жодних реальних екземплярів? + +- [x] щоб отримати спільну поведінку в похідних класах +- [ ] для дослідження гіпотетичного класу +- [ ] для запобігання небажаній реалізації методу +- [ ] для резервування пам'яті для класу невизначеного типу + +#### Q5. Коли відбувається статичне зв’язування? + +- [ ] лише під час експорту +- [ ] як під час компіляції, так і під час виконання +- [x] під час компіляції +- [ ] під час виконання + +#### Q6. Що є найкращою причиною для використання шаблону проектування? + +- [x] Це призведе до коду, який буде більш розширюваним і придатним для обслуговування +- [ ] Це дозволить отримати більш компактний продукт. +- [ ] Це пришвидшить початкову розробку. +- [ ] Це дозволить додати до свого резюме шаблон проєктування. + +#### Q7. Що таке інкапсуляція? + +- [ ] визначення класів шляхом зосередження на тому, що важливо для мети +- [x] приховування даних і деталей реалізації в межах класу +- [ ] зробити всі методи приватними +- [ ] використання слів для визначення класів + +#### Q8. Що таке відносини IS-A? + +- [ ] Це передбачає інкапсуляцію. +- [ ] Об’єкт суперкласу має зв’язок IS-A зі своїм підкласом. +- [ ] Це передбачає віртуальний метод. +- [x] Об'єкт підкласу має зв'язок IS-A зі своїм суперкласом або інтерфейсом + +#### Q9. Вам потрібен метод з поведінкою, подібною до віртуального методу - очікується, що - він має бути перевизначений та не має тіла методу. Він просто має сигнатуру методу. Який метод слід використовувати? + +- [x] abstract метод +- [ ] внутрішній метод public +- [ ] внутрішній метод +- [ ] внутрішній метод protected + +#### Q10. Який код створює новий об'єкт з класу Employee? + +- [ ] Employee currentEmployee = Employee.Create(); +- [x] Employee currentEmployee = new Employee(); +- [ ] Employee currentEmployee; +- [ ] Employee currentEmployee = Employee.New(); + +#### Q11. Який тип конструктора не може мати return? + +- [ ] за замовчуванням +- [ ] копіювання +- [ ] з параметрами +- [x] Конструктори взагалі не мають return + +#### Q12. 1 Коли виконується конструктор? + +- [x] коли об’єкт створюється з класу з використанням ключового слова new +- [ ] коли клас визначено за допомогою ключового слова class +- [ ] кожного разу, коли є посилання на об’єкт +- [ ] коли об’єкт створюється з класу за допомогою ключового слова create + +#### Q13. 2 Коли виконується конструктор? + +- [x] коли об'єкт створюється з класу +- [ ] коли клас визначено за допомогою ключового слова class +- [ ] кожного разу, коли є посилання на об’єкт +- [ ] коли об’єкт створюється з класу за допомогою ключового слова create + +#### Q14. Якщо локальний клас визначено у функції, що вірно для об’єкта цього класу? + +- [x] Об’єкт може бути доступний, оголошений і використаний локально в цій функції. +- [ ] Об’єкт має бути оголошено всередині будь-якої іншої функції. +- [ ] Об’єкт тимчасово доступний поза функцією. +- [ ] Об’єкт може викликати всіх інших членів класу будь-де в програмі. + +#### Q15. Які два блоки використовуються для обробки та перевірки помилок? + +- [ ] do та check +- [ ] catching та trying +- [x] try та catch +- [ ] do та while + +#### Q16. Навіщо реалізовувати композицію, використовуючи ідентифікатор замість посилання? + +- [ ] Це полегшує збереження сутності. +- [x] усі ці відповіді +- [ ] Це може зробити пошук сутності більш ефективним +- [ ] Це мінімізує зчеплення. + +#### Q17. Який вислів найкраще описує метод наслідування в ООП? + +- [x] Наслідування описує можливість створювати нові класи на основі існуючого класу. +- [ ] Наслідування означає, що група пов’язаних властивостей, методів та інших членів розглядається як єдина одиниця або об’єкт. +- [ ] Наслідування змушує клас мати єдину відповідальність лише від одного батька. +- [ ] Наслідування означає, що у вас ніколи не буде кількох класів, які можна використовувати як взаємозамінні, навіть якщо кожен клас реалізує ті самі властивості чи методи різними способами. + +#### Q18. Який тип наслідування, якщо воно виконується безперервно, подібний до деревовидної структури? + +- [ ] багаторівневий +- [ ] ієрархічний і множинний +- [x] ієрархічний +- [ ] багаторазовий + +#### Q19. Яке твердження вірне? + +- [ ] Конструктор параметра за замовчуванням не еквівалентний конструктору за замовчуванням +- [ ] Конструктор за замовчуванням наслідується від батьківського класу +- [x] Конструктор за замовчуванням можна викликати явно +- [ ] Конструктор за замовчуванням не може бути визначений програмістом + +[довідка]() "Конструктори можуть бути викликані явно або неявно. Метод неявного виклику конструктора також називається скороченим методом." + +#### Q20. Що з наведеного НЕ є перевагою використання геттерів і сеттерів? + +- [x] Геттери та сетери можуть прискорити компіляцію. +- [ ] Геттери та сетери забезпечують інкапсуляцію поведінки. +- [ ] Геттери та сетери забезпечують точку налагодження, коли властивість змінюється під час виконання. +- [ ] Геттери та сетери дозволяють різні рівні доступу. + +### Q21. У контексті ООП, що таке асоціація? + +- [x] Асоціація — це зв’язок, де всі об’єкти мають свій власний життєвий цикл і не мають власника. +- [ ] Асоціація — це процес, при якому елементи моделі взаємодіють для забезпечення поведінки більш високого рівня. +- [ ] Асоціація — це відношення "ціле/частина", де один об'єкт складається з одного або кількох інших об'єктів, кожен з яких є частиною цілого. +- [ ] Асоціація — це зв’язок, де всі об’єкти мають свій власний життєвий цикл, але існує власність, і дочірні об'єкти не можуть належати іншому батьківському об'єкту. + +[Довідка](https://uk.wikipedia.org/wiki/Асоціація_(об'єктно-орієнтоване_програмування)) + +#### Q22. Чим User Stories відрізняються від Use Cases? + +- [x] User Stories коротші і менш детальні. +- [ ] User Stories точніші. +- [ ] User Stories більш детальні і структуровані. +- [ ] User Storise більш анекдотичні та особисті. + +#### Q23. Який тип наслідування слід використовувати, щоб результат був гібридним? + +- [x] Множинне +- [ ] Будь-який тип наслідування +- [ ] Многоступеневе +- [ ] Ієрархічне + +**Пояснення:** + +- **Одинарне наслідування** – це коли похідний клас успадковує властивості та поведінку від одного базового класу. Наприклад: Клас A → Клас B. +- **Ієрархічне наслідування** – це коли кілька похідних класів створюються з одного базового класу. Наприклад: Клас A → Клас B → Клас C. +- **Множинне наслідування** – це коли клас успадковується від кількох базових класів. Об'єкти, створені програмістами, матимуть об'єднані аспекти характеристик і функцій з кількох батьківських класів. Ці об'єкти дотримуються ієрархій своїх базових класів. +- **Многоступеневе наслідування** – це коли похідний клас успадковується від іншого похідного класу. Ця особливість об'єднує аспекти кількох класів і дотримується їх ієрархій. +- **Гібридне наслідування** – це неоднорідна функція використання множинного наслідування. Тут похідний клас створюється з комбінацій одиночного, ієрархічного та многоступеневого наслідувань. Це наслідування використовується для змішування різних типів наслідування, наприклад, коли одиночне наслідування змішується з множинним наслідуванням або ситуація, коли множинне наслідування змішується в межах однієї програми. + +[Довідка](https://foxminded.ua/principi-oop-spadkuvannja/) + +#### Q24. Мова, яка не підтримує поліморфізм, але підтримує класи, вважається якою? + +- [x] об'єктно-орієнтованою мовою +- [ ] мовою, основаною на класах +- [ ] мовою, орієнтованою на процедури +- [ ] якщо класи підтримуються, поліморфізм також буде підтримуватися + +[Довідка](https://uk.wikipedia.org/wiki/Об'єктно-орієнтоване_програмування) + +#### Q25. Два класи поєднують private атрибути і надають public методи для доступу та маніпулювання цими даними. Де використовується абстракція? + +- [ ] Абстракція використовує private специфікатор доступу для атрибутів. +- [x] Абстракція використовує public методи для доступу та маніпулювання атрибутами. +- [ ] Абстракція використовує концепцію класу з обома, і атрибутами, і методами. +- [ ] Недостатньо інформації для визначення, де використовується абстракція. + +**Пояснення:** + +Абстракція в об'єктно-орієнтованому програмуванні означає приховування внутрішніх деталей реалізації і надання тільки необхідного інтерфейсу для взаємодії з об'єктом. В цьому випадку, публічні методи, які забезпечують доступ до приватних атрибутів, є прикладом абстракції, оскільки користувачі класу взаємодіють з даними через ці функції, не маючи доступу до деталей реалізації даних. + +#### Q26. Які п'ять патернів створення з книги "Банда чотирьох(Gang of Four)"? + +- [ ] Observer, State, Strategy, Template Method і Visitor. +- [ ] Composite, Visitor, State, Prototype і Singleton. +- [ ] Composite, Builder, Factory Method, Prototype і Singleton. +- [x] Abstract Factory, Builder, Factory Method, Prototype і Singleton. + +#### Q27. У багаторівневому наслідуванні один клас наслідує скільки класів? + +- [x] лише один клас +- [ ] два класи +- [ ] стільки класів, скільки потрібно +- [ ] принаймні два класи + +#### Q28. Якщо об'єкт передається за посиланням, зміни, зроблені у функції, розповсюджуються \_ + +- [x] на основний об'єкт викликаючої функції +- [ ] на об'єкт викликаючої функції та на об'єкт викликаної функції +- [ ] на копії об'єкта, яка створюється під час передачі +- [ ] лише в локальному контексті викликаної функції + +#### Q29. Що таке метод? + +- [ ] набір інструкцій, призначений для виконання операції що часто використовується в програмі і не повертає значень +- [ ] те саме, що функція та підпрограма +- [ ] набір змінних, які можуть змінюватися з часом +- [x] функції, прив'язані до конкретних класів (або екземплярів) у об'єктно-орієнтованому програмуванні + +#### Q30. Мобільний телефон складається з компонентів, таких як материнська плата, камера і датчики. Материнська плата представляє всі функції телефону, дисплей показує лише зображення, а телефон представлений як єдине ціле. Який з наведених компонентів має найвищий рівень абстракції? + +- [ ] камера +- [ ] дисплей +- [ ] материнська плата +- [x] мобільний телефон + +#### Q31. Який клас має найвищий рівень абстракції у відносинах багаторівневого наслідування з п'ятьма рівнями? + +- [ ] клас на третьому рівні +- [x] клас на першому рівні +- [ ] Всі мають однаковий рівень абстракції. +- [ ] клас на другому рівні + +#### Q32. Який з наступних варіантів НЕ є базовим типом наслідування? + +- [ ] багаторівневе наслідування +- [x] подвійне наслідування +- [ ] одиночне наслідування +- [ ] ієрархічне наслідування + +#### Q33. Чому дублювання коду є таким підступним? + +- [ ] Дублювання використовує зайвий простір. +- [x] Потрібно підтримувати всі дублікати. +- [ ] Дублювання може викликати занепокоєння щодо інтелектуальної власності. +- [ ] Дублювання легко приховати. + +#### Q34. Коли і як часто викликається статичний конструктор? + +- [ ] Він викликається спочатку, коли створюється об'єкт, і викликається з кожним новим екземпляром об'єкта. +- [ ] Він викликається, коли об'єкт знищується, і тільки один раз. +- [x] Він викликається спочатку, коли створюється об'єкт, і тільки один раз. +- [ ] Він створюється в момент, коли об'єкт відкидається. + +#### Q35. Що демонструє наведених нижче код і чому? + +```cpp + static void Multiply(int num1, int num2) {}; + static void Multiply(double num1, double num2, double num3) {}; + static void Multiply(float num1, float num2) {}; +``` + +- [ ] поліморфізм, тому що кожен метод може виконувати різне завдання +- [ ] перевизначення методу, тому що відображає однакову назву методу, різні або однакові параметри і той же тип поверненняtype +- [x] перевантаження методу, тому що дозволяє створювати кілька методів з однією назвою, які відрізняються типом параметрів +- [ ] перевизначення методу, тому що відображає однакову назву методу, різні параметри і той же тип повернення + +#### Q36. Яка мета використання статичного конструктора? + +- [ ] для ініціалізації всіх членів зі статичним значенням +- [ ] для видалення статичних членів, коли вони не потрібні +- [x] для ініціалізації статичних членів класу +- [ ] для очищення всіх ініціалізованих значень статичних членів + +#### Q37. Що таке картки CRC? + +- [ ] Code Responsibility Collection картки - це інструмент для мозкового штурму, що використовується в проектуванні процедурного програмного забезпечення. +- [x] Class Responsibility collaboration картки — це інструмент для мозкового штурму, що використовується в проектуванні об'єктно-орієнтованого програмного забезпечення. +- [ ] Code Responsibility Correction картки — це інструменти для відлагодження. +- [ ] Code Responsibility Correction картки — це інструменти для моделювання. + +[Довідка](https://uk.wikipedia.org/wiki/CRC_картка) + +#### Q38. Чим вміст композиції відрізняється від вмісту агрегації? + +- [ ] Якщо один елемент агрегації звільняється, всі його елементи стають придатними для збору сміття. +- [x] Якщо композиція знищується, вміст також знищується. +- [ ] Вміст композиції - це всі брати та сестри. +- [ ] Агрегація містить лише абстрактні класи. + +#### Q39. Яке з наступних тверджень про композиції та агрегації є правильним? + +- [ ] Якщо один елемент агрегації звільняється, всі його елементи стають придатними для збору сміття. +- [x] Якщо композиція знищується, вміст також знищується. +- [ ] Вміст композиції є всіма братами і сестрами. +- [ ] Агрегація містить лише абстрактні класи. + +#### Q40. Який результат використання більшого рівня абстракції? + +- [ ] Може підвищити вразливість коду. +- [ ] Може зробити код небезпечнішим. +- [x] Може знизити читаність коду. +- [ ] Може бути безпечнішим для кодування. + +#### Q41. Що є неправильним щодо член-функцій класу? + +- [ ] Член-функції можуть бути визначені тільки всередині або поза тілом класу. +- [ ] Член-функції можуть бути оголошені друзями іншого класу. +- [x] Член-функції не потрібно оголошувати всередині визначення класу. +- [ ] Усі член-функції повинні бути визначені. + +#### Q42. Чому при створенні нового класу використовується наслідування? + +- [ ] щоб захистити атрибути від небажаних змін +- [ ] щоб ефективніше делегувати відповідальність +- [ ] щоб заощаджувати пам'ять +- [x] щоб розділити поведінку класу від загальнішого до більш специфічного + +#### Q43. Окрім атрибутів і поведінки, яку якість повинен мати клас? + +- [x] назву +- [ ] стан +- [ ] колір +- [ ] об'єкт + +#### Q44. Який тип функції серед наведених демонструє поліморфізм? + +- [ ] вбудована функція +- [ ] невизначена функція +- [x] віртуальна функція +- [ ] функція-член класу + +#### Q45. Які слова з наведеного списку є кандидатами на об'єкти: trumpet, clean, enrage, leaf, tree, collapse, active, і lively? + +- [ ] leaf і tree +- [ ] clean, enrage і collapse +- [ ] clean, active і lively +- [x] leaf, tree і trumpet + +#### Q46. Що найкраще описує те, що робить об'єктно-орієнтоване програмування? + +- [x] Воно фокусується на об'єктах, які взаємодіють один з одним. +- [ ] Воно потрібне виключно для інтерфейсів. +- [ ] Воно потрібне виключно для класів. +- [ ] Воно створює один клас для всієї бізнес-логіки. + +#### Q47. Чи можуть абстрактні класи використовуватися в багаторівневому наслідуванні? + +- [ ] Ні, абстрактні класи можуть використовуватися тільки в одно-рівневому наслідуванні, оскільки їх потрібно реалізувати негайно. +- [x] Так, завжди +- [ ] Так, але тільки з одним абстрактним класом +- [ ] Ні, абстрактні класи не мають конструкторів. + +#### Q48. Який тип наслідування може призвести до проблеми діаманта? + +- [ ] одно-рівневе +- [ ] багаторівневе +- [ ] ієрархічне +- [x] множинне + +#### Q49. Який взаємозв'язок між абстракцією та інкапсуляцією? + +- [x] Абстракція полягає у приховуванні непотрібних деталей і показі тільки суттєвої інформації, тоді як інкапсуляція дозволяє програмісту реалізувати бажаний рівень абстракції. +- [ ] Абстракція та інкапсуляція по суті одне і те саме. +- [ ] Абстракція та інкапсуляція не пов'язані. +- [ ] Інкапсуляція полягає у виведенні наявної інформації, тоді як абстракція дозволяє програмісту реалізувати бажаний рівень інкапсуляції. + +#### Q50. Які з цих ключових слів є специфікаторами доступу? + +- [ ] abstract та public +- [x] public та private +- [ ] this та final +- [ ] final та abstract + +#### Q51. Що таке посилання на об'єкт? + +- [ ] Це адреса лише змінної — не методу об'єкта. +- [ ] Це поверхневий покажчик, що містить адресу об'єкта. +- [ ] Це фізична адреса об'єкта. +- [x] Це адреса, де зберігаються змінні та методи об'єкта. + +#### Q52. Чому модульне тестування є складнішим в ООП порівняно з функціональним програмуванням? + +- [x] Об'єкти можуть підтримувати внутрішній стан, який не є легко доступним для тестів. +- [ ] Якість фреймворків для модульного тестування функціональних мов є кращою. +- [ ] ООП сприяє повторному використанню коду, що означає, що ваші тести повинні враховувати більше випадків використання. +- [ ] Об'єктно-орієнтовані мови часто залежать від фреймворків, таких як Spring або Hibernate, що ускладнює їх тестування. + +#### Q53. Яка функція діаграми випадків використання? + +- [x] Вона з'єднує учасників з випадками використання. +- [ ] Вона пов'язує учасників з ролями, які вони виконують у всіх випадках використання. +- [ ] Вона перераховує всіх учасників для кожного випадку використання. +- [ ] Вона зменшує кількість учасників, які необхідні. + +#### Q54. Чим відрізняються поведінка об'єкта та атрибути? + +- [ ] Поведінка описує динамічні властивості; атрибути є статичними. +- [x] Атрибути описують стан; поведінка описує зміну. +- [ ] Атрибути застосовуються тільки до конкретного об'єкта; поведінка застосовується до інших зв'язаних об'єктів. +- [ ] Поведінка є векторними величинами; атрибути є скалярними величинами. + +#### Q55. Принцип відкритості/закритості стверджує, що класи повинні бути відкритими для \_ але закритими для \_ + +- [ ] модифікації; дублювання +- [ ] рефакторингу; дублювання +- [x] розширення; модифікації +- [ ] повторного використання; інкапсуляції + +#### Q56. Чому можливо перевизначити метод базового класу? + +- [ ] щоб визначити метод, який має бути реалізований у похідному класі +- [x] щоб визначити власну реалізацію успадкованого члена +- [ ] щоб визначити метод, який має бути реалізований тільки в суперкласі +- [ ] щоб визначити клас, який може бути успадкований + +#### Q57. Що таке конструктор копіювання? + +- [x] Це унікальний конструктор для створення нового об'єкта як копії вже існуючого. Можливий лише один конструктор копіювання, який може бути визначений користувачем або системою. +- [ ] Це конструктор, який дублює себе на вимогу. +- [ ] Це загальний конструктор для запобігання створенню нового об'єкта як копії вже існуючого. Можливі кілька стандартних конструкторів, які можуть бути визначені користувачем або системою. +- [ ] Це конструктор, який дублює себе самостійно, базуючись на доступній пам'яті. + +#### Q58. Який вираз найбільш точно описує блок `catch`? + +- [x] Блок `catch`, який буде виконано, це той, що найкраще відповідає типу винятку, що виник. +- [ ] Кілька блоків `catch` ніколи не можуть бути асоційовані з одним блоком `try`. +- [ ] Кілька блоків `catch` є обов'язковими для кожного блоку `try`. +- [ ] У випадку винятку всі блоки `catch` будуть виконані. + +#### Q59. Є п'ять класів. Клас E успадковується від класу D, D від C, C від B, і B від A. Які конструктори класів будуть викликані першими, якщо створюється об'єкт класу E або D? + +- [x] A +- [ ] B +- [ ] C +- [ ] C і B + +#### Q60. У вас є модулі, що залежать один від одного. Якщо ви змінюєте один модуль, потрібно внести зміни у залежні. Який термін використовується для опису цієї проблеми, і яке можливе рішення? + +- [ ] Зв'язність. Рішенням є показати, що кожен модуль має певні обов'язки, і використовувати антизалежний шаблон проектування. +- [ ] Інкапсуляція. Рішенням є впровадження одного з принципів SOLID для забезпечення того, щоб модулі не інкапсулювали один в одного. +- [x] Залежність. Рішенням є рефакторинг коду для досягнення слабкої зв'язності за допомогою інверсії контролю та впровадження залежностей. +- [ ] Залежність. Рішенням є впровадження поліморфізму та абстракції для зміни та вилучення залежних елементів модуля так, щоб він функціонував самостійно. + +#### Q61. **\_** описує агрегацію + +- [ ] Клас ресурсів +- [ ] Група методів +- [x] Колекція об'єктів +- [ ] Список дітей + +#### Q62. Який тип функції можна використовувати для поліморфізму? + +- [x] virtual function +- [ ] inline function +- [ ] undefined function +- [ ] private function + +#### Q63. Яка перевага використання впровадження залежностей? + +- [x] слабка зв'язність +- [ ] повторне використання коду +- [ ] ліниве ініціалізування +- [ ] абстракція даних + +#### Q64. Чи потрібно повертати об'єкт, якщо він був переданий за посиланням у функцію, і чому або чому ні? + +- [ ] Так, викликаюча функція повинна відобразити зміни. +- [ ] Ні, натомість потрібно використовувати глобальну змінну. +- [x] Ні, зміни будуть автоматично відображені у викликаючій функції. +- [ ] Так, об'єкт повинен бути таким же у викликаючій функції. + +#### Q65. Чому потрібне наслідування? + +- [x] ... + +#### Q66. Який найкращий приклад відношення суперкласу і підкласу? + +- [x] автомобіль:тойота +- [ ] качки:ставок +- [ ] пальці:ноги +- [ ] скала:камінь + +#### Q67. Які твердження найкраще описують шаблони проектування Gang of Four(Банди чотирьох) під назвою Memento та Observer? + +- [ ] Memento повідомляє кілька класів про зміни. Observer захоплює та відновлює внутрішній стан об'єкта. +- [ ] Memento відтерміновує точні кроки алгоритму для підкласу. Observer визначає нову операцію для класу без змін. +- [ ] Memento змінює поведінку об'єкта, коли його стан змінюється. Observer інкапсулює алгоритм всередині класу. +- [x] Memento захоплює та відновлює внутрішній стан об'єкта. Observer повідомляє кілька класів про зміни. + +#### Q68. Що вказує значення (0.5,0.5,0.5) у специфікації класової діаграми position: Coordinate = (0.5,0.5,0.5)? + +- [ ] типове значення атрибута Coordinate +- [ ] розмір масиву position +- [ ] збільшення значення атрибута position +- [x] типове значення атрибута position + +##### Q69. Який найбільш точний приклад принципу заміщення Ліскова? + +- [ ] A + +```java +public class Car{ +} +public class FlyingCars extends Car{ + public void fly(){} +} +public class Tesla FlyingCar{} +public class Honda Car{} +``` + +- [ ] B + +```java +public class Car{ + public void fly(){} +} +public class Tesla extends Car{} +public class Honda extends Car{} +``` + +- [ ] C + +```java +public class Car{ +public void fly(){} +} +public class Tesla Car{} +public class Honda Car{} +``` + +- [x] D + +```java +public class Car{ +} +public class FlyingCars extends Car{ + public void fly(){} +} +public class Tesla extends FlyingCar{} +public class Honda extends Car{} +``` + +[Довідка](https://stackoverflow.com/a/44913313/1573267) + +#### Q70. Яка різниця між параметром і аргументом? + +- [ ] Аргумент може мати багато значень, тоді як параметр може мати лише одне значення. +- [ ] Аргумент — це змінна, яка використовується для значень введення в методі. Параметр — це конкретне значення, яке передається в метод. +- [x] Параметр — це змінна у декларації функції. Аргумент — це значення цієї змінної, яке передається функції. +- [ ] Параметри та аргументи — це одне і те саме. + +#### Q71. Який обсяг видимості має клас, вкладений всередину іншого класу? + +- [ ] Захищений (Protected) +- [ ] Приватний (Private) +- [ ] Глобальний (Global) +- [x] Залежить від специфікатора доступу та використаного наслідування + +> Пояснення: Це залежить від специфікатора доступу та типу наслідування, яке використовується з класом, оскільки якщо клас наслідується, то вкладений клас може бути використаний і підкласом, якщо він не є приватним. + +#### Q72. Методи та атрибути, які визначають об'єкт, є своєрідним шаблоном, як його назва? + +- [ ] Колекція (Collection) +- [ ] Змінна (Variable) +- [x] Клас (Class) +- [ ] Процедура (Procedure) + +#### Q73. Припустимо, що використовується одиночне наслідування з класами A та B, де A є базовим класом. Потім припустимо, що є класи C, D та E, де C є базовим класом, а D наслідується від C, а E наслідується від D. Клас C робиться успадкованим від класу B. Який тип наслідування відображено? + +- [x] Многоступеневе (Multilevel) +- [ ] Гібридне (Hybrid) +- [ ] Одиночне (Single level) +- [ ] Множинне (Multiple) + +#### Q74. Яка основна ідея розділення проблем? + +- [x] Усі ці відповіді +- [ ] Додатки розбиваються на частини +- [ ] Частини визначені з мінімальним перетином +- [ ] Кожна частина відповідає за окрему проблему + +#### Q75. Яка мета блоку `finally`? + +- [x] Завжди виконувати блок коду `finally`, коли блок `try` виключено +- [ ] Виконувати код, коли виключення не сталося +- [ ] Виконувати блок, якщо сталося виключення +- [ ] Виконувати код, коли цього потребує збірка сміття + +#### Q76. Який з варіантів не є мовою ООП? + +- [ ] C# +- [ ] Java +- [x] C +- [ ] Python + +#### Q77. Яка функція фіналізатора або деструктора? + +- [x] Звільняти ресурси, які більше не потрібні +- [ ] Видаляти ім'я змінної +- [ ] Скидувати значення атрибута +- [ ] Зберігати місце, навіть після того, як об'єкт більше не використовується + +#### Q78. Який тип класу не можна створити? + +- [ ] Захищений клас (Protected class) +- [ ] Базовий клас (Base class) +- [ ] Анонімний клас (Anonymous class) +- [x] Абстрактний клас (Abstract class) + +#### Q79. У контексті ООП, що таке композиція? + +- [ ] Композиція — це акт одного об'єкта, який передає іншому об'єкту операцію, що виконується від імені початкового об'єкта. +- [x] Композиція — це відношення частина/ціле, де об'єкт складається з одного або кількох інших об'єктів, кожен з яких є частиною цілого. +- [ ] Композиція — це зв'язок, при якому асоціація класу/імені не здійснюється до того, як об'єкт, призначений ім'ям, створюється під час виконання. +- [ ] Композиція — це процес збору класів, які надають набір послуг для певної області. + +#### Q80. Статичний поліморфізм використовує метод \_? + +- [x] Перевантаження (Overloading) +- [ ] Наслідування (Inheritance) +- [ ] Абстракцію (Abstraction) +- [ ] Перекриття (Overriding) + +#### Q81. Чого не має конкретний клас? + +- [ ] Батьків +- [x] Чистих віртуальних функцій +- [ ] Атрибутів +- [ ] Мети + +#### Q82. Як динамічне типізування ускладнює усунення несправностей? + +- [x] Може бути складно визначити змінні, які мають неправильний тип +- [ ] Динамічні змінні можуть приймати лише обмежені значення +- [ ] Для динамічних змінних фіксоване зберігання +- [ ] Статичні змінні більш гнучкі, ніж динамічні + +#### Q83. У чому різниця між раннім і пізнім зв'язуванням? + +- [ ] Раннє зв'язування — це коли змінна отримує значення при створенні області видимості. Пізнє зв'язування — це коли змінна отримує значення після виходу з області видимості +- [ ] Раннє зв'язування — це коли змінна отримує значення при запуску програми. Пізнє зв'язування — це коли змінна отримує значення після того, як програма запущена +- [ ] Немає різниці. У обох випадках змінні отримують значення, коли програма завершила запуск і працює +- [x] Раннє зв'язування — це коли змінна отримує своє значення на етапі компіляції. Пізнє зв'язування — це коли змінна отримує значення під час виконання + +#### Q84. У чому різниця між інтерфейсом і абстрактним класом? + +- [ ] Інтерфейси можуть містити код або дані. Абстрактні класи не містять код або дані. Клас може успадковуватися від декількох абстрактних класів, але може реалізувати лише один інтерфейс. +- [ ] Інтерфейси можуть містити код або дані. Абстрактні класи не містять код або дані. Клас може успадковуватися тільки від одного абстрактного класу, але може реалізувати необмежену кількість інтерфейсів. +- [x] Абстрактні класи можуть містити код або дані. Інтерфейси не містять код або дані. Клас може успадковуватися тільки від одного абстрактного класу, але може реалізувати необмежену кількість інтерфейсів. +- [ ] Абстрактні класи можуть містити код або дані. Інтерфейси не містять код або дані. Клас може успадковуватися від декількох абстрактних класів, але може реалізувати тільки один інтерфейс. + +#### Q85. Які параметри потрібно передати конструктору класу? + +`Оскільки тут не вказана конкретна мова програмування, розглянемо всі мови.` + +- [ ] Посилання на підклас (reference to subclass) // Посилання на підклас ніколи не є необхідними, оскільки ви можете просто ініціалізувати підклас і використовувати його об'єкт. +- [ ] Посилання на базовий клас (reference to base class) // Посилання на базовий клас не потрібні в Java, JavaScript і Python +- [ ] Посилання на this (reference to this pointer) // Хоча Python і JavaScript можуть вимагати передачі this або self у конструкторі, це не передається у конструктор Java. +- [x] Нічого (none) // Вище зазначені варіанти неправильні, тому "нічого" є правильним. + +#### Q86. Які чотири принципи об'єктно-орієнтованого програмування? + +- [ ] маніпуляція, інкапсуляція, успадкування і інверсія залежностей +- [ ] інверсія залежностей, принцип відкритості/закритості, інкапсуляція і успадкування +- [ ] розділення інтерфейсів, абстракція, інверсія залежностей і успадкування +- [x] абстракція, інкапсуляція, наслідування і поліморфізм + +#### Q87. З принципів SOLID об'єктно-орієнтованого програмування, яке твердження найкраще описує принцип заміщення Ліскова? + +- [ ] Клас повинен мати тільки одну відповідальність — тобто тільки зміни в одній частині специфікації програмного забезпечення повинні впливати на специфікацію класу. +- [ ] Програмні сутності повинні бути відкриті для розширення, але закриті для модифікації. +- [ ] Багато специфічних для клієнта інтерфейсів краще, ніж один універсальний інтерфейс. +- [x] Об'єкти в програмі повинні бути замінювані екземплярами своїх підтипів без зміни правильності програми. + +#### Q88. Окрім відповідальностей, що ще повинно бути вказано на картках класів-відповідальностей-співпраці (CRC)? + +- [ ] Яка мова програмування буде використана. +- [ ] Програміст, відповідальний за реалізацію. +- [x] Взаємодіючі класи. +- [ ] Атрибути. + +#### Q89. Яка найкраща назва функції, що виправляє це оцінювання? + +- [ ] makeResult() +- [ ] questionScore() +- [x] calculateScore() +- [ ] getAnswers() + +#### Q90. Яке відношення найкраще ілюструє відношення абстрактний-конкретний клас? + +- [ ] кіт : кошеня +- [ ] колір : червоний +- [x] планета : місяць +- [ ] вантажівка : вікно + +#### Q91. Що не може бути використано для поліморфізму? + +- [ ] Перевантаження конструкторів (overloading constructors) +- [ ] Перевантаження членів функцій (overloading member functions) +- [x] Статичні члени функцій (static member functions) +- [ ] Перевантаження попередньо визначених операторів (overloading predefined operator) + +#### Q92. Скільки рівнів дозволяє багаторівневе наслідування в програмі? + +- [ ] тільки 10 рівнів наслідування +- [ ] стільки рівнів наслідування, скільки потрібно протягом 10 хвилин +- [x] стільки рівнів наслідування, скільки потрібно +- [ ] лише стільки рівнів, скільки дозволяє пам'ять, розділена на швидкість процесора + +#### Q93. Що таке віртуальний метод? + +- [x] метод, який, як ви очікуєте, може бути переписаний у похідних класах +- [ ] метод, від якого не очікується, що він буде переписаний у похідних класах +- [ ] приватний метод, від якого не очікується, що він буде переписаний у публічних похідних класах +- [ ] метод, який існує тимчасово — після використання він перестає використовуватися будь-яким викликом + +#### Q94. Що з наведеного не є базовим принципом об'єктно-орієнтованого програмування? + +- [ ] Інкапсуляція (Encapsulation) +- [x] Компіляція (Compilation) +- [ ] Успадкування (Inheritance) +- [ ] Поліморфізм (Polymorphism) + +[Довідка](https://www.interviewbit.com/blog/principles-of-oops/) + +#### Q95. Як відрізняються поведінки і атрибути об'єкта? + +- [ ] Поведінка описує динамічні властивості; атрибути є статичними. +- [x] Атрибути описують стан; поведінки описують зміну. +- [ ] Атрибути застосовуються тільки до конкретного об'єкта; поведінка застосовується до інших пов'язаних об'єктів. +- [ ] Поведінки є векторними величинами; атрибути є скалярними. + +#### Q96. Наскільки тісно повинні бути зв'язані ваші класи і чому? + +- [ ] Слід збільшити зв'язок, щоб покращити залежності між класами. +- [x] Слід обмежити зв'язок, щоб зменшити залежності між класами. +- [ ] Слід збільшити зв'язок, щоб члени класу відповідали меті класу. +- [ ] Слід обмежити зв'язок, щоб члени класу відповідали меті. + +#### Q97. Яке твердження найкраще описує клас-друг? + +- [ ] Класи-друзі підтримують базовий клас за потреби. +- [x] Клас-друг може отримувати доступ до приватних і захищених членів класу, в якому він оголошений як друг. +- [ ] Класи-друзі не мають реалізації. +- [ ] Клас-друг може отримувати доступ лише до захищених членів класу, до якого він є другом. + +[Довідка](https://www.simplilearn.com/tutorials/cpp-tutorial/friend-class-in-cpp/) + +#### Q98. Який з наведених прикладів коду демонструє множинне наслідування? + +- [ ] `class employee{ }; class stream{ }; class topper{ };` +- [ ] `class employee{int rating;}; class stream:public employee{ };` +- [x] `class employee{int rating;}; class stream{int total;}; class topper: employee, stream{ };` +- [ ] `class employeef{int rating};}: class stream{ }: class topper: public employee{ }:` + +#### Q99. Що таке багаторівневе наслідування? + +- [ ] клас, який не має більше одного батька. +- [ ] клас, який не є похідним від іншого похідного об'єкта. +- [ ] не подвоєння однорівневого наслідування. +- [x] класи, похідні від інших похідних класів. + +[Довідка](https://www.w3schools.com/cpp/cpp_inheritance_multilevel.asp) + +#### Q100. Чи можна мати два класи з однаковим ім'ям в одному проекті? + +- [ ] Ні, не можна. +- [ ] Так, якщо їх конструктори різні. +- [ ] Так, якщо їх методи різні. +- [x] Так, якщо вони знаходяться в різних просторах імен (namespaces). + +#### Q101. Об'єкти передаються за **\_** + +- [ ] значенням або посиланням, в залежності від мови програмування +- [ ] значенням +- [ ] значенням або посиланням, в залежності від програми +- [x] посиланням + +#### Q102. Якщо мова реалізує лише передачу параметрів за значенням у функції, чи можуть об'єкти, передані як параметри, бути встановлені на нові екземпляри всередині функції і їх нове значення повернутися до виклику? + +- [ ] Так, але тільки якщо це посилання, а не примітивний клас. +- [ ] Так, оскільки значення є посиланням, навіть якщо воно передається за значенням, це можливо. +- [ ] Ні, ви отримаєте помилку компіляції. +- [x] Ні, буде ініціалізовано локальну копію, яка буде втрачена, як тільки вона вийде з області видимості. + +#### Q103. Що таке інкапсуляція? + +- [ ] визначення класів, зосереджуючись на тому, що важливо для мети +- [x] визначення даних і відповідних методів разом в одному класі +- [ ] зробити всі методи приватними +- [ ] використання слів для визначення класів + +#### Q104. Що таке метод? + +- [x] функція, що асоціюється з даними та поведінкою +- [ ] те саме, що і функція та підпрограма +- [ ] набір змінних, що можуть змінюватися з часом +- [ ] набір інструкцій, розроблений для виконання часто використовуваної операції в програмі який не повертає значень + +#### Q105. Який найточніший приклад принципу заміщення Ліскова? + +- [ ] A + public class Car{ + } + public class FlyingCars extends Car{ + public void fly(){} + } + public class Tesla FlyingCar{} + public class Honda Car{} + +- [ ] B + public class Car{ + public void fly(){} + } + public class Tesla extends Car{} + public class Honda extends Car{} + +- [ ] C + public class Car{ + public void fly(){} + } + public class Tesla Car{} + public class Honda Car{} + +- [x] D + public class Car{ + } + public class FlyingCars extends Car{ + public void fly(){} + } + public class Tesla extends FlyingCar{} + public class Honda extends Car{} + +[Довідка](https://stackoverflow.com/a/44913313/1573267) + +#### Q106. Що описує агрегацію? + +- [ ] Клас ресурсів +- [ ] Група методів +- [x] Колекція об'єктів +- [ ] Список дітей + +#### Q107. Яка вигода від використання ін'єкції залежностей? + +- [x] слабке зв'язування (loose coupling) +- [ ] повторне використання коду +- [ ] лінива ініціалізація +- [ ] абстракція даних + +#### Q108. Що не може бути використано для поліморфізму? + +- [ ] Перевантаження конструкторів (overloading constructors) +- [ ] Перевантаження членів функцій (overloading member functions) +- [x] Статичні члени функцій (static member functions) +- [ ] Перевантаження попередньо визначених операторів (overloading predefined operator) + +#### Q109. Екземпляр якого типу класу не може бути створений? + +- [ ] Захищений клас (Protected class) +- [ ] Базовий клас (Base class) +- [ ] Анонімний клас (Anonymous class) +- [x] Абстрактний клас (Abstract class) + +#### Q110. З принципів SOLID об'єктно-орієнтованого програмування, яке твердження найкраще описує принцип заміщення Ліскова? + +- [ ] Клас повинен мати тільки одну відповідальність — тобто тільки зміни в одній частині специфікації програмного забезпечення повинні впливати на специфікацію класу. +- [ ] Програмні сутності повинні бути відкриті для розширення, але закриті для модифікації. +- [ ] Багато специфічних для клієнта інтерфейсів краще, ніж один універсальний інтерфейс. +- [x] Об'єкти в програмі повинні бути замінювані екземплярами своїх підтипів без зміни правильності програми. + +#### Q111. Які п'ять шаблонів створення з шаблону "Банди чотирьох (Gang of Four)" ? + +- [ ] Observer, State, Strategy, Template Method, і Visitor. +- [ ] Composite, Visitor, State, Prototype, і Singleton. +- [ ] Composite, Builder, Factory Method, Prototype, і Singleton. +- [x] Abstract Factory, Builder, Factory Method, Prototype, і Singleton. + +#### Q112. Яка різниця між інтерфейсом і абстрактним класом? + +- [ ] Інтерфейси можуть містити код або дані. Абстрактні класи не містять коду або даних. Клас може успадковувати більше одного абстрактного класу, але може реалізувати лише один інтерфейс. +- [ ] Інтерфейси можуть містити код або дані. Абстрактні класи не містять коду або даних. Клас може успадковувати лише один абстрактний клас, але може реалізувати необмежену кількість інтерфейсів. +- [x] Абстрактні класи можуть містити код або дані. Інтерфейси не містять коду або даних. Клас може успадковувати лише один абстрактний клас, але може реалізувати необмежену кількість інтерфейсів. +- [ ] Абстрактні класи можуть містити код або дані. Інтерфейси не містять коду або даних. Клас може успадковувати більше одного абстрактного класу, але може реалізувати лише один інтерфейс. + +#### Q113. Який зв'язок найкраще ілюструє відносини абстрактного і конкретного класу? + +- [ ] кіт : кошеня +- [ ] колір : червоний +- [x] планета : місяць +- [ ] вантажівка : вікно + +#### Q114. Яка перевага використання ін'єкції залежностей? + +- [x] слабка зв'язаність +- [ ] повторне використання коду +- [ ] лінива ініціалізація +- [ ] абстракція даних + +#### Q115. **\_** описує агрегацію + +- [ ] Клас ресурсів +- [ ] Група методів +- [x] Колекція об'єктів +- [ ] Список дітей + +#### Q116. Який тип функцій можна використовувати для поліморфізму? + +- [x] віртуальна функція +- [ ] вбудована функція +- [ ] не визначена функція +- [ ] приватна функція + +#### Q117. Яка перевага використання ін'єкції залежностей? + +- [x] слабка зв'язаність +- [ ] повторне використання коду +- [ ] лінива ініціалізація +- [ ] абстракція даних + +#### Q118. Чи потрібно повернути об'єкт, якщо він був переданий за посиланням у функцію, і чому або чому ні? + +- [ ] Так, функція виклику повинна відобразити зміни. +- [ ] Ні, слід використовувати глобальну змінну. +- [x] Ні, зміни автоматично відобразяться у функції виклику. +- [ ] Так, об'єкт повинен бути таким же у функції виклику. + +#### Q119. З принципів SOLID об'єктно-орієнтованого програмування, яке твердження найкраще описує принцип заміщення Ліскова? + +- [ ] Клас повинен мати лише одну відповідальність — тобто тільки зміни в одній частині специфікації програмного забезпечення повинні впливати на специфікацію класу. +- [ ] Програмні сутності повинні бути відкриті для розширення, але закриті для модифікації. +- [ ] Багато специфічних для клієнтів інтерфейсів краще ніж один універсальний інтерфейс. +- [x] об'єкти в програмі повинні бути замінювані екземплярами їх підтипів без порушення коректності програми. + +#### Q120. Окрім відповідальностей, що ще повинно бути вказано на картках Class-responsability-collaboration (CRC)? + +- [ ] Яка мова програмування буде використана. +- [ ] Програміст, відповідальний за реалізацію. +- [x] Взаємодіючі класи. +- [ ] Атрибути. + +#### Q121. Яка найкраща назва для функції, що виправляє цю оцінку? + +- [ ] makeResult() +- [ ] questionScore() +- [x] calculateScore() +- [ ] getAnswers() + +#### Q122. Хто винайшов ООП? + +- [ ] Андреа Ферро +- [ ] Адель Голдберг +- [x] Алан Кей +- [ ] Денис Річі