top 30 oops interview questions
Цей підручник містить повний набір запитань та відповідей на інтерв’ю щодо об’єктно-орієнтованого програмування (ООП):
Розробка програмного забезпечення налічує близько 70 і більше років історії, коли були винайдені різні мови, такі як FORTRAN, Pascal, C, C ++. Існувала серія тверджень, які виконують функції команд, що передаються апаратному забезпеченню для виконання деяких основних математичних обчислень, створюючи процедурні мови для проектування різних програмних додатків.
З винаходом Інтернету для розробки складних програм були потрібні захищені, стабільні та незалежні від платформи та надійні мови.
Об'єктно-орієнтоване програмування є незалежним від платформи, портативним, захищеним та оснащеним різними концепціями, такими як інкапсуляція, абстракція, успадкування та поліморфізм.
Перевагами OOPS є багаторазове використання, розширюваність та модульність, які покращують продуктивність, їх легше підтримувати завдяки модульності, швидше та нижчі витрати на розробку завдяки повторному використанню коду, створюють захищені та високоякісні програми.
Що ви дізнаєтесь:
Основні об’єктно-орієнтовані концепції програмування
Об'єктно-орієнтоване програмування включає інтелектуальні об'єкти, дані та поведінку, пов'язані з цим, для вирішення бізнес-проблем. Мовою програмування Java розробники застосовують такі концепції, як абстракція, інкапсуляція, успадкування та поліморфізм.
Різні концепції, такі як Абстракція що ігнорує недоречні деталі, Капсуляція що зосереджується на тому, який мінімум необхідний, не розкриваючи ніяких складностей щодо внутрішніх функціональних можливостей, Спадщина успадковувати властивості батьківського класу або реалізовувати кілька спадкоємств за допомогою інтерфейсу, і Поліморфізм що розширює властивості перевантаження методу (статичний поліморфізм) та перевизначення методу (динамічний поліморфізм).
Найчастіші запитання щодо інтерв’ю OOPS
Q # 1) Коротко поясніть, що ви маєте на увазі під об’єктно-орієнтованим програмуванням на Java?
Відповідь: ООП має справу з об'єктами, такими як реальні особи, такі як ручка, мобільний телефон, банківський рахунок, який має стан (дані) та поведінку (методи).
За допомогою доступу забезпечується доступ специфікаторів до цих даних та методів. Концепції інкапсуляції та абстракції пропонують приховування даних та доступ до найнеобхіднішого, успадкування та поліморфізм допомагають коду повторно використовувати та перевантажувати / перевизначати методи та конструктори, роблячи додатки незалежними від платформи, захищеними та надійними з використанням таких мов, як Java.
Запитання №2) Поясніть, чи є Java чисто об’єктно-орієнтованою мовою?
Відповідь: Java - не зовсім чиста об'єктно-орієнтована мова програмування. Нижче наведені причини:
- Java підтримує та використовує примітивні типи даних, такі як int, float, double, char тощо.
- Примітивні типи даних зберігаються у вигляді змінних або у стеку замість купи.
- У Java статичні методи можуть отримувати доступ до статичних змінних без використання об'єкта, на відміну від об'єктно-орієнтованих концепцій.
Q # 3) Опишіть клас та об'єкт у Java?
Відповідь: Клас і об'єкт відіграють важливу роль в об'єктно-орієнтованих мовах програмування, таких як Java.
- Клас - це прототип або шаблон, який має стан і поведінку, що підтримуються об'єктом і використовуються при створенні об'єктів.
- Об'єкт є екземпляром класу, наприклад, Людина - це клас із станом, який має хребцеву систему, мозок, колір і зріст і має поведінку, таку як canThink (), ableToSpeak () тощо.
Q # 4) Які відмінності між класом та об’єктами в Java?
Відповідь: Нижче наведено кілька основних відмінностей між класом та об’єктами в Java:
Клас | Об'єкт |
---|---|
Приклади реального життя класу можуть бути a • Рецепт приготування їжі. • Сині відбитки на автомобільному двигуні. | Приклади об’єкта в реальному житті можуть бути • Їжа, приготована за рецептом. • Двигун побудований за блакитними відбитками. |
Клас - це логічна сутність | Об'єкт - це фізична сутність |
Клас - це шаблон, з якого можна створити об’єкт | Об'єкт є екземпляром класу |
Клас - це прототип, який має стан і поведінку подібних об’єктів | Об'єкти - це сутності, які існують у реальному житті, такі як мобільний телефон, миша чи інтелектуальні об'єкти, такі як банківський рахунок |
Клас оголошується ключовим словом класу, як клас Classname {} | Об'єкт створюється за допомогою нового ключового слова як Employee emp = new Employee (); |
Під час створення класу не виділяється пам'ять | Під час створення об'єкта пам'ять виділяється об'єкту |
Існує лише односторонній клас, який визначається за допомогою ключового слова class | Створення об'єкта може бути здійснено різними способами, наприклад, використанням нового ключового слова, методу newInstance (), клонування () та фабричного методу. |
Q # 5) Чому потрібна об'єктно-орієнтована програмування?
Відповідь: OOP надає специфікатори доступу та можливості приховування даних для більшої безпеки та контролю доступу до даних, перевантаження може бути досягнуто за допомогою перевантаження функцій та операторів. Повторне використання коду можливо, оскільки вже створені об'єкти в одній програмі можуть бути використані в інших програмах.
Надлишковість даних, підтримка коду, безпека даних та перевага таких концепцій, як інкапсуляція, абстракція, поліморфізм та успадкування в об’єктно-орієнтованому програмуванні, надають перевагу перед раніше використовуваними процедурними мовами програмування.
Q # 6) Поясніть абстракцію на прикладі в реальному часі.
Відповідь: Абстракція в об'єктно-орієнтованому програмуванні означає приховування складних внутрішніх елементів, але виявлення лише суттєвих характеристик та поведінки щодо контексту. У реальному житті прикладом абстракції є інтернет-кошик для покупок, скажімо на будь-якому веб-сайті електронної комерції. Вибравши товар і замовивши книгу, ви просто зацікавлені вчасно отримати товар.
Те, як відбуваються речі, - це не те, що вас цікавить, оскільки воно складне і приховане. Це відоме як абстракція. Подібним чином, візьмемо приклад з банкомату, оскільки складність внутрішніх методів дебетування коштів з вашого рахунку зберігається прихованою, і ви отримуєте готівку через мережу. Так само для автомобілів, як бензин змушує двигун працювати автомобіль надзвичайно складний.
Q # 7) Наведіть кілька прикладів у реальному часі та поясніть спадщину.
Відповідь: Спадщина означає один клас (підклас), що набуває властивості іншого класу (супер клас) шляхом успадкування. У реальному житті візьміть приклад успадкування звичайного велосипеда, де це батьківський клас, а спортивний велосипед може бути дитячим класом, де спортивний велосипед успадкував властивості та поведінку обертових коліс з педалями через шестерні, як звичайний велосипед.
Q # 8) Як поліморфізм працює на Java, поясніть на реальних прикладах?
Відповідь: Поліморфізм - це здатність мати різні форми або здатність методу робити різні речі. У реальному житті одна і та ж людина, яка виконує різні обов'язки, поводиться по-різному. В офісі він є службовцем, вдома він є батьком, під час або після уроків він є студентом, на вихідних грає в крикет і грає на дитячому майданчику.
як знайти маску підмережі за замовчуванням -
У Java існує два типи поліморфізму
- Час компіляції поліморфізм: Це досягається методом перевантаження або перевантаженням оператора.
- Поліморфізм виконання: Це досягається заміною методу.
Q # 9) Скільки типів спадщини присутній?
Відповідь: Нижче перелічені різні типи успадкування:
- Одиночне успадкування: Одинокий дочірній клас успадковує характеристики неповного класу.
- Множинне успадкування: Один клас успадковує функції більш ніж одного базового класу і не підтримується в Java, але клас може реалізувати більше одного інтерфейсу.
- Багаторівневе успадкування: Клас може успадкувати від похідного класу, що робить його базовим класом для нового класу, наприклад, Дитина успадковує поведінку від батька, а батько успадкував характеристики від батька.
- Ієрархічне успадкування: Один клас успадковується кількома підкласами.
- Гібридне успадкування: Це поєднання одиничного та множинного успадкування.
Q # 10) Що таке інтерфейс?
Відповідь: Інтерфейс схожий на клас, де він може мати методи та змінні, але його методи не мають тіла, лише підпис, відомий як абстрактний метод. Змінні, оголошені в інтерфейсі, можуть мати загальнодоступні, статичні та кінцеві за замовчуванням. Інтерфейс використовується в Java для абстракції та множинних успадкувань, де клас може реалізовувати кілька інтерфейсів.
Q # 11) Чи можете ви пояснити переваги абстракції та успадкування?
Відповідь: Абстракція відкриває користувачеві лише найважливіші деталі, а також ігнорує або приховує недоречні або складні деталі. Іншими словами, абстракція даних відкриває інтерфейс і приховує деталі реалізації. Java виконує абстракцію за допомогою інтерфейсів та абстрактних класів. Перевага абстракції полягає в тому, що вона спрощує перегляд речей, зменшуючи або приховуючи складність реалізації.
Дублювання коду уникається, і це збільшує можливість повторного використання коду. Користувачеві відкриваються лише найважливіші деталі та покращує безпеку програми.
Спадщина - це те, де дочірній клас успадковує функціональність (поведінку) батьківського класу. Нам не потрібно писати код, коли він був написаний у батьківському класі, щоб знову функціонувати в дочірньому класі, що полегшує повторне використання коду. Код стає також читабельним. Спадщина використовується там, де існує 'відношення'. Приклад: Hyundai є автомобіль АБО MS Word є програмне забезпечення.
Q # 12) Яка різниця між розширювачами та інструментами?
Відповідь: Ключове слово extends і implements використовуються для успадкування, але різними способами.
Різниця між ключовими словами Extends та Implements у Java пояснюється нижче:
Подовжує | Інвентар |
---|---|
Клас може розширити інший клас (дочірній батьківський батько, успадковуючи його характеристики). Інтерфейс також успадковує (використовуючи ключове слово розширює) інший інтерфейс. | Клас може реалізувати інтерфейс |
Підклас, що поширюється на суперклас, може не замінювати всі методи суперкласу | Інтерфейс реалізації класу повинен реалізовувати всі методи інтерфейсу. |
Клас може поширювати лише один супер клас. | Клас може реалізувати будь-яку кількість інтерфейсів. |
Інтерфейс може розширювати більше ніж один інтерфейс. | Інтерфейс не може реалізувати будь-який інший інтерфейс. |
Синтаксис: клас Child розширює клас Parent | Синтаксис: клас Гібридні знаряддя Роуз |
Q # 13) Які різні модифікатори доступу в Java?
Відповідь: Модифікатори доступу в Java контролюють область доступу класу, конструктора, змінної, методу або члена даних. Різні типи модифікаторів доступу такі:
- Модифікатор доступу за замовчуванням є без будь-яких членів даних, класу та методів специфікатора доступу, і доступні в одному пакеті.
- Модифікатори приватного доступу позначені ключовим словом private і доступні лише в межах класу і навіть недоступні класу з того самого пакету.
- Модифікатори захищеного доступу можуть бути доступні в межах одного пакета або підкласів з різних пакетів.
- Модифікатори загального доступу доступні звідусіль.
Q # 14) Поясніть різницю між абстрактним класом та методом?
Відповідь: Нижче наведено деякі відмінності між абстрактним класом та абстрактним методом у Java:
Анотація класу | Абстрактний метод |
---|---|
Об'єкт не можна створити з абстрактного класу. | Абстрактний метод має підпис, але не має основного тексту. |
Підклас створений або успадковує абстрактний клас для доступу до членів абстрактного класу. | Обов’язково замінити абстрактні методи суперкласу в їх підкласі. |
Абстрактний клас може містити абстрактні методи або не абстрактні методи. | Клас, що містить абстрактний метод, слід зробити абстрактним класом. |
Q # 15) Які відмінності між методом і конструктором?
Відповідь: Нижче наводяться відмінності між конструкторами та методами в Java:
Конструктори | Методи |
---|---|
Ім'я конструкторів має збігатися з ім'ям класу. | Методи не повинні мати таку ж назву, як назва класу. |
Вони використовуються для створення, ініціалізації та виділення пам’яті об’єкту. | Методи використовуються для виконання певних тверджень, записаних всередині них. |
Конструктори системою неявно викликаються щоразу, коли створюються об’єкти. | Методи викликаються, коли він викликається. |
Вони викликаються за допомогою нового ключового слова під час створення екземпляра класу (об’єкта). | Методи викликаються під час виконання програми. |
Конструктор не має типу повернення. | Метод має тип повернення. |
Конструктор не може бути успадкований підкласом. | Методи можуть успадковуватися підкласом. |
Q # 16) Що таке конструктор у Java?
Відповідь: Конструктор - це метод без типу повернення, і його назва така ж, як і назва класу. Коли ми створюємо об'єкт, конструктор за замовчуванням виділяє пам'ять для об'єкта під час компіляції коду Java. Конструктори використовуються для ініціалізації об'єктів та встановлення початкових значень для атрибутів об'єкта.
Q # 17) Скільки типів конструкторів можна використовувати в Java? Будь ласка, поясніть.
Відповідь: В основному в Java існує три типи конструкторів.
Це:
- Конструктор за замовчуванням: Цей конструктор не має жодного параметра і викликається кожного разу, коли ви створюєте екземпляр класу (об'єкта). Якщо клас є Employee, то синтаксисом конструктора за замовчуванням буде Employee ().
- Конструктор без аргументів: Як випливає з назви, конструктор без будь-якого аргументу називається конструктором no-arg.
- Параметризований конструктор: Конструктор з низкою параметрів називається параметризованим конструктором. Ви повинні надати аргументи, тобто початкові значення щодо типу даних параметрів у цьому конструкторі.
Q # 18) Чому в Java використовується ключове слово?
Відповідь: Коли ми створюємо екземпляр класу, тобто об'єкти, ми використовуємо ключове слово Java новий . Він виділяє пам'ять в області купи, де JVM резервує простір для об'єкта. Внутрішньо він також викликає конструктор за замовчуванням.
Синтаксис:
Class_name obj = new Class_name();
Q # 19) Коли ви використовуєте супер ключове слово?
Відповідь: Супер - це ключове слово Java, яке використовується для ідентифікації або посилання на батьківський (базовий) клас.
- Ми можемо використовувати супер для доступу до конструктора супер класу та методів виклику супер класу.
- Коли імена методів однакові в суперкласі та підкласах, для посилання на супер клас, супер використовується ключове слово.
- Щоб отримати доступ до даних з однаковими іменами батьківського класу, коли вони присутні в батьківському та дочірньому класі.
- Супер може використовуватися для явного виклику конструкторів no-arg та параметризованих батьківського класу.
- Доступ до методу батьківського класу можна зробити за допомогою супер , коли дочірній клас має перевизначений метод.
Питання # 20) Коли ви використовуєте це ключове слово?
Відповідь: це Ключове слово в Java посилається на поточний об'єкт у конструкторі або в методі.
- Коли атрибути класу та параметризовані конструктори мають однакове ім'я, це використовується ключове слово.
- Ключові слова це викликає конструктор поточного класу, метод поточного класу, повертає об'єкт поточного класу, передає аргумент у конструктор та виклик методу.
Q # 21) Яка різниця між поліморфізмом часу виконання та часу компіляції?
Відповідь: Поліморфізм як часу виконання, так і часу компіляції - це два різні типи поліморфізму. Їх відмінності пояснюються нижче:
Складіть поліморфізм часу | Поліморфізм часу виконання |
---|---|
Виклик вирішується компілятором у поліморфізмі часу компіляції. | Виклик не вирішується компілятором у поліморфізмі середовища виконання. |
Він також відомий як статичне зв'язування та перевантаження методів. | Він також відомий як динамічний, пізній та переважний метод. |
Методи одного імені з різними параметрами або методи з однаковим підписом та різними типами повернення є поліморфізмом часу компіляції. | Метод одного імені з однаковими параметрами або підписом, асоційований у різних класах, називається перевизначенням методу. |
Це досягається функцією та перевантаженням оператора. | Цього можна досягти за допомогою покажчиків та віртуальних функцій. |
Оскільки всі речі виконуються під час компіляції. Поліморфізм під час компіляції менш гнучкий. | Оскільки речі виконуються під час виконання, поліморфізм виконання є більш гнучким. |
Q # 22) Які об’єктно-орієнтовані функції використовуються в Java?
Відповідь: Концепція використання об'єкта в мові програмування Java виграє від використання об'єктно-орієнтованих концепцій, таких як інкапсуляція для зв'язування стану та поведінки об'єкта, забезпечує доступ до даних за допомогою специфікаторів доступу, такі функції, як абстракція при приховуванні інформації, спадкування для розширення стану , а також поведінка базових класів до дочірніх класів, поліморфізм часу компіляції та виконання під час перевантаження методу та перевизначення методу, відповідно.
Q # 23) Що таке перевантаження методів?
Відповідь: Коли два або більше методів з однаковим іменем мають або різну кількість параметрів, або різні типи параметрів, ці методи можуть мати або не мати різних типів повернення, тоді вони перевантажені, а особливістю є перевантаження методів. Перевантаження методу також називають поліморфізмом під час компіляції.
Q # 24) Що таке перевизначення методу?
Відповідь: Коли метод підкласу (похідний, дочірній клас) має те саме ім'я, параметри (підпис) і той самий тип повернення, що і метод у своєму суперкласі (базовий, батьківський клас), тоді метод у підкласі вважається заміненим метод у суперкласі. Ця особливість також відома як поліморфізм виконання.
Q # 25) Поясніть перевантаження конструктора.
Відповідь: Більш ніж один конструктор, що має різні параметри, щоб можна було виконувати різні завдання з кожним конструктором, називається перевантаженням конструктора. За допомогою перевантаження конструктора об’єкти можна створювати різними способами. Різні класи колекції в Java API є прикладами перевантаження конструктора.
Q # 26) Які типи аргументів можна використовувати в Java?
Відповідь: Для методів і функцій Java дані параметрів можуть надсилатися та отримуватися різними способами. Якщо методB () викликається з методуA (), методA () є функцією, що викликає, а методB () - функцією, аргументи, надіслані методомA (), є фактичними аргументами, а параметри методуB () - формальними аргументами.
- Дзвінок за значенням: Зміни, внесені до формального параметра (параметри методу B ()), не повертаються абоненту (methodA ()), цей метод називається виклик за значенням . Java підтримує виклик за значенням.
- Дзвінок за посиланням: Зміни, внесені до формального параметра (параметри методу B ()), надсилаються назад абоненту (параметри методу B ()).
- Будь-які зміни формальних параметрів (параметри методуB ()) відображаються у фактичних параметрах (аргументи, надіслані методомA ()). Це називається викликом за допомогою посилання.
Q # 27) Розрізнити статичне та динамічне прив'язку?
Відповідь: Різниця між статичним та динамічним прив'язуванням пояснюється в таблиці нижче.
Статична прив'язка | Динамічне прив'язка |
---|---|
Статичне прив'язування в Java використовує тип полів і клас як роздільну здатність. | Динамічне прив'язування в Java використовує об'єкт для розв'язання прив'язки. |
Перевантаження методу є прикладом статичного прив'язки. | Перевизначення методу є прикладом динамічного прив'язки. |
Статичне прив'язування вирішується під час компіляції. | Динамічне прив'язування вирішується під час виконання. |
Методи та змінні, що використовують статичне прив'язування, є приватним, кінцевим та статичним типами. | Віртуальні методи використовують динамічне прив'язку. |
Q # 28) Чи можете ви пояснити базовий клас, підклас та суперклас?
Відповідь: Базовий клас, підклас та супер клас на Java пояснюються наступним чином:
- Базовий або батьківський клас є суперкласом і є класом, з якого походить підклас або дочірній клас.
- Підклас - це клас, який успадковує атрибути (властивості) та методи (поведінку) від базового класу.
Q # 29) Чи підтримується в Java перевантаження оператора?
Відповідь: Перевантаження оператора не підтримується Java, оскільки,
- Це змушує інтерпретатор докладати більше зусиль, щоб зрозуміти фактичну функціональність оператора, що робить код складним і складним для компіляції.
- Перевантаження оператора робить програми більш схильними до помилок.
- Однак особливість перевантаження оператора може бути досягнута в методі перевантаження простим, зрозумілим і безпомилковим способом.
Q # 30) Коли використовується метод завершення?
Відповідь: доопрацювати метод викликається безпосередньо перед тим, як об’єкт збирається збирати сміття. Цей метод замінює, щоб мінімізувати витік пам'яті, провести очищення, видаливши системні ресурси.
Q # 31) Поясніть про жетони.
Відповідь: Токени в програмі Java - це найменші елементи, які розпізнає компілятор. Ідентифікатори, ключові слова, літерали, оператори та роздільники - це приклади лексем.
Висновок
Об'єктно-орієнтовані концепції програмування є невід'ємною частиною для розробників, автоматизації, а також ручних тестерів, які розробляють систему тестування автоматизації для тестування програми або розробки програм на мові програмування Java.
Поглиблене розуміння є обов’язковим для всіх об’єктно-орієнтованих функцій, таких як клас, об’єкт, абстракція, інкапсуляція, успадкування, поліморфізм та застосування цих концепцій у мові програмування, як Java, для досягнення вимог замовника.
програма для завантаження відео з будь-якого веб-сайту
Ми спробували висвітлити найважливіші об’єктно-орієнтовані питання співбесіди та дали відповідні відповіді на прикладах.
Ми бажаємо вам усього найкращого для вашого майбутнього співбесіди!
Рекомендована література
- ООП Java: Вступ до об’єктно-орієнтованого програмування на Java
- Топ 20 програм інтерв'ю Java для програмування та кодування інтерв'ю
- Кращі 50+ основних запитань та відповідей на інтерв’ю Java
- Інтерфейс Java та підручник з абстрактних класів із прикладами
- Інкапсуляція в Java: Повний посібник із прикладами
- Що таке абстракція в Java - дізнайтеся на прикладах
- Концепції OOPS у C #: Підручник з концепції об’єктно-орієнтованого програмування
- Концепції ООП Python (класи, об'єкти та спадкування Python)