Питання та відповіді на співбесідах: Спрощені визначення
1. Що таке об'єктно-орієнтоване програмування (OOP)?
Парадигма програмування, що базується на об'єктах, які поєднують дані та поведінку.
Приклад з реального світу:
У додатку автосалону є об'єкти Car
(Автомобіль). Кожен Car
має властивості як колір, модель та ціна, а також методи як start()
(запустити) та drive()
(їхати).
2. Які основні принципи OOP?
Інкапсуляція (Encapsulation), Наслідування (Inheritance), Поліморфізм (Polymorphism) та Абстракція (Abstraction).
Приклад з реального світу:
- Інкапсуляція (Encapsulation): Банківський рахунок приховує деталі обчислення балансу, але надає функції для зняття грошей та внесення депозитів.
- Наслідування (Inheritance):
SavingsAccount
(Рахунок заощаджень) наслідує відBankAccount
(Банківський рахунок), повторно використовуючи спільні функціональності, такі якdeposit()
(депозит), але додаючи специфічні функції, якcalculateInterest()
(обчислення відсотків). - Поліморфізм (Polymorphism): Платіжна система може обробляти платежі через
CreditCard
(Кредитну картку),DebitCard
(Дебетову картку) абоPayPal
(ПейПал) за допомогою єдиного інтерфейсуprocessPayment()
(обробити платіж). - Абстракція (Abstraction): Пульт дистанційного керування пропонує кнопки для операцій, таких як збільшення/зменшення гучності, без показу внутрішніх деталей схеми.
3. Що таке клас і об'єкт?
- Клас (Class): Шаблон для створення об'єктів.
- Об'єкт (Object): Екземпляр класу.
Приклад з реального світу:
- Клас (Class): Шаблон, як архітектурний план будинку.
- Об'єкт (Object): Реальний будинок, побудований за цим планом.
4. Що таке інкапсуляція?
Практика об'єднання даних і методів та обмеження прямого доступу до деяких компонентів об'єкта.
Приклад з реального світу:
Смартфон інкапсулює складну електроніку, але надає простий інтерфейс для користувачів для дзвінків або відправки текстових повідомлень.
5. Що таке наслідування?
Механізм створення нового класу на основі існуючого класу шляхом успадкування його властивостей і методів.
Приклад з реального світу:
Клас Dog
(Собака) наслідує риси від класу Animal
(Тварина), такі як їсти і спати, але може додати свою специфічну поведінку, наприклад, гавкати.
6. Що таке поліморфізм?
Здатність одного інтерфейсу представляти різні типи даних або методи.
Приклад з реального світу:
У системі друку принтер може друкувати документи, зображення або PDF за допомогою одного і того ж інтерфейсу print()
(друк).
7. Що таке абстракція?
Процес приховування складних деталей і показ лише суттєвих функцій.
Приклад з реального світу:
Кавоварка абстрагує процес заварювання кави і надає кнопки, як brew coffee
(заварити каву) або add milk
(додати молоко).
8. Що таке конструктори?
Спеціальні методи, що використовуються для ініціалізації об'єктів.
Приклад з реального світу:
Коли ви відкриваєте банківський рахунок, ініціалізуються деталі, як ім'я, тип рахунку та депозит, подібно до ініціалізації об'єкта за допомогою конструктора.
9. Що таке перевантаження методів?
Визначення кількох методів в одному класі з однаковим ім'ям, але з різними параметрами.
Приклад з реального світу:
Система бронювання квитків на поїзд дозволяє бронювати, надаючи або ім'я пасажира і тип місця, або ID пасажира.
10. Що таке перевизначення методів?
Перевизначення методу в похідному класі, який існує в базовому класі.
Приклад з реального світу:
У додатку електронної комерції клас StandardDelivery
(Стандартна доставка) може перевизначити метод класу Delivery
(Доставка), щоб розрахувати час доставки за стандартними параметрами.
11. У чому різниця між абстрактним класом і інтерфейсом?
Абстрактний клас може містити як абстрактні, так і конкретні методи, тоді як інтерфейс містить лише абстрактні методи.
Приклад з реального світу:
- Абстрактний клас (Abstract Class): Клас
Vehicle
(Транспортний засіб) надає стандартні методи для загальних функцій, але вимагає специфічної реалізації для таких методів, якdrive()
(їхати). - Інтерфейс (Interface): Інтерфейс
Flyable
(Летючий) для літаків і птахів вимагає реалізації методуfly()
(летіти) без надання стандартної поведінки.
12.
12. Що таке модифікатори доступу?
Ключові слова, які визначають видимість класів, методів та змінних (наприклад, public, private).
Приклад з реального світу:
- Public (Публічний): Торговий автомат має публічну кнопку для вибору товарів.
- Private (Приватний): Внутрішній механізм обробки грошей є приватним, щоб запобігти зловживанням.
13. Що таке агрегація?
Відносини типу "має" (has-a), де один об'єкт містить інший, і обидва можуть існувати незалежно.
Приклад з реального світу:
Бібліотека має колекцію об'єктів Book
(Книга), але книги можуть існувати незалежно від бібліотеки.
14. Що таке композиція?
Відносини типу "має" (has-a), де один об'єкт містить інший, і вміщений об'єкт залежить від контейнера для свого існування.
Приклад з реального світу:
Автомобіль складається з частин, таких як двигун і колеса, які не можуть функціонувати без автомобіля.
15. У чому різниця між відносинами "is-a" та "has-a"?
- Is-a (Є): Означає наслідування.
- Has-a (Має): Означає володіння або композицію.
Приклад з реального світу:
- Is-a (Є):
Dog
(Собака) єAnimal
(Тварина). - Has-a (Має):
Car
(Автомобіль) маєEngine
(Двигун).
16. Що таке клас-синглтон?
Клас, який дозволяє існувати лише одному екземпляру протягом роботи програми.
Приклад з реального світу:
Черга принтерів в офісі забезпечує, щоб тільки один екземпляр обробляв завдання на друк одночасно.
17. У чому різниця між агрегацією та композицією?
Агрегація дозволяє незалежне існування вміщених об'єктів, в той час як композиція — ні.
Приклад з реального світу:
- Агрегація (Aggregation): Університет має кілька
Departments
(Відділів), але відділи можуть існувати незалежно від університету. - Композиція (Composition): Будинок складається з кімнат, і видалення кімнати знищує частину будинку.
18. Що таке інтерфейс?
Контракт, що визначає методи, але не надає їх реалізацію.
Приклад з реального світу:
USB-інтерфейс дозволяє підключати різні пристрої, такі як клавіатури, миші та принтери, до комп'ютера.
19. Що таке динамічний виклик (Dynamic Dispatch)?
Процес, коли виклик перевизначеного методу вирішується під час виконання програми.
Приклад з реального світу:
У системі управління зоопарком виклик методу makeSound()
(зробити звук) для об'єкта Animal
(Тварина) динамічно вирішує, чи викликати метод bark()
(гавкати) для собаки або roar()
(ревіти) для лева.
20. Що таке впорскування залежностей (Dependency Injection)?
Шаблон проектування, коли об'єкт отримує свої залежності з зовнішнього джерела, а не створює їх самостійно.
Приклад з реального світу:
Ресторан використовує конкретну службу доставки, таку як Uber Eats, але операції ресторану не залежать від внутрішніх процесів Uber Eats.
Цей короткий список надає чіткі визначення для швидкого розуміння концепцій OOP.
Дякую.
Перекладено з: Top 20 OOP Interview Questions with Real World Examples