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