top 30 oops interview questions
Tento kurz poskytuje úplnou sadu často kladených otázek a odpovědí na otázky týkající se objektově orientovaného programování (OOP):
Vývoj softwaru má více než 70 let historie, kde byly vynalezeny různé jazyky jako FORTRAN, Pascal, C, C ++. Existovala řada příkazů, které fungovaly jako příkazy dané hardwaru k provádění některých základních matematických výpočtů, takže procedurální jazyky pro návrh různých softwarových aplikací.
S vynálezem internetu byly při navrhování složitých aplikací potřebné zabezpečené, stabilní a robustní jazyky nezávislé na platformě.
Objektově orientované programování je nezávislé na platformě, přenosné, zabezpečené a vybavené různými koncepty, jako je zapouzdření, abstrakce, dědičnost a polymorfismus.
Mezi výhody OOPS patří opětovná použitelnost, rozšiřitelnost a modularita, která zvyšuje produktivitu, snáze se udržuje díky modularitě, rychlejší a nižší náklady na vývoj díky opětovnému použití kódu, produkuje zabezpečené a vysoce kvalitní aplikace.
Co se naučíte:
Základní objektově orientované programovací koncepty
Objektově orientované programování zahrnuje intelektuální objekty, data a chování s nimi spojené, aby přineslo řešení obchodních problémů. V programovacím jazyce Java používají vývojáři při navrhování řešení obchodních problémů koncepty jako abstrakce, zapouzdření, dědičnost a polymorfismus.
Různé pojmy jako např Abstrakce který ignoruje irelevantní detaily, Zapouzdření který se zaměřuje na to, co je požadováno minimum, aniž by odhalil jakékoli složitosti nad vnitřními funkcemi, Dědictví zdědit vlastnosti nadřazené třídy nebo implementovat více dědičností pomocí rozhraní a Polymorfismus který rozšiřuje vlastnosti přetížení metody (statický polymorfismus) a přepsání metody (dynamický polymorfismus).
Nejčastější dotazy týkající se rozhovorů s OOPS
Otázka č. 1) Stručně vysvětlete, co máte na mysli objektově orientovaným programováním v Javě?
Odpovědět: OOP se zabývá objekty, jako jsou reálné entity, jako je pero, mobil, bankovní účet, který má stav (data) a chování (metody).
S pomocí přístupu je zajištěn přístup specifikátorů k těmto datům a metodám. Koncepty zapouzdření a abstrakce nabízejí skrývání dat a přístup k základním informacím, dědičnosti a polymorfismu, což pomáhá opětovnému použití kódu a přetížení / přepsání metod a konstruktorů, díky čemuž jsou aplikace nezávislé na platformě, zabezpečené a robustní pomocí jazyků, jako je Java.
Otázka č. 2) Vysvětlete, že je Java čistý objektově orientovaný jazyk?
Odpovědět: Java není úplně čistý objektově orientovaný programovací jazyk. Důvody jsou následující:
- Java podporuje a používá primitivní datové typy jako int, float, double, char atd.
- Primitivní datové typy se ukládají jako proměnné nebo na hromádku místo haldy.
- V Javě mohou statické metody na rozdíl od objektově orientovaných konceptů přistupovat ke statickým proměnným bez použití objektu.
Otázka č. 3) Popsat třídu a objekt v Javě?
Odpovědět: Třída a objekt hrají nedílnou roli v objektově orientovaných programovacích jazycích, jako je Java.
- Třída je prototyp nebo šablona, která má stav a chování podporované objektem a používá se při vytváření objektů.
- Objekt je instancí třídy, například, Člověk je třída se stavem, že má páteřní systém, mozek, barvu a výšku a má chování jako canThink (), ableToSpeak () atd.
Otázka č. 4) Jaké jsou rozdíly mezi třídou a objekty v Javě?
Odpovědět: Následuje několik hlavních rozdílů mezi třídou a objekty v Javě:
Třída | Objekt |
---|---|
Reálnými příklady třídy mohou být a • Recept na přípravu jídla. • Modré otisky pro automobilový motor. | Příklady Object v reálném životě mohou být • Jídlo připravené podle receptu. • Motor konstruovaný podle modrotisku. |
Třída je logická entita | Objekt je fyzická entita |
Třída je šablona, ze které lze vytvořit objekt | Object je instancí třídy |
Třída je prototyp, který má stav a chování podobných objektů | Objekty jsou entity, které existují v reálném životě, jako jsou mobilní, myší nebo intelektuální objekty, jako je bankovní účet |
Třída je deklarována klíčovým slovem třídy, jako je třída Classname {} | Objekt je vytvořen pomocí nového klíčového slova jako Employee emp = new Employee (); |
Během vytváření třídy nedochází k žádnému přidělení paměti | Během vytváření objektu je objektu přidělena paměť |
Existuje pouze jednosměrná třída definovaná pomocí klíčového slova třídy | Vytváření objektů lze provádět mnoha způsoby, například pomocí nového klíčového slova, metody newInstance (), clone () a tovární metody. |
Otázka č. 5) Proč je potřeba objektově orientovaného programování?
Odpovědět: OOP poskytuje specifikátory přístupu a funkce skrytí dat pro větší zabezpečení a řízení přístupu k datům, přetížení lze dosáhnout přetížením funkcí a operátorů, opětovné použití kódu je možné, protože již vytvořené objekty v jednom programu lze použít v jiných programech.
Redundance dat, údržba kódu, zabezpečení dat a výhody konceptů, jako je zapouzdření, abstrakce, polymorfismus a dědičnost v objektově orientovaném programování, poskytují výhodu oproti dříve používaným procedurálním programovacím jazykům.
Otázka č. 6) Vysvětlete abstrakci pomocí příkladu v reálném čase.
Odpovědět: Abstrakce v objektově orientovaném programování znamená skrývání složitých vnitřních částí, ale odhalení pouze základních charakteristik a chování s ohledem na kontext. V reálném životě je příkladem abstrakce online nákupní košík, řekněme na jakémkoli webu elektronického obchodování. Jakmile vyberete produkt a objednáte si objednávku, máte zájem pouze o to, abyste produkt obdrželi včas.
To, co se děje, není to, co vás zajímá, protože je to složité a skryté. Toto se nazývá abstrakce. Podobně si vezměte příklad bankomatu, složitost interních způsobů odepisování peněz z vašeho účtu je skrytá a vy přijímáte hotovost prostřednictvím sítě. Podobně jako u automobilů je extrémně složité, jak benzín vede k chodu motoru.
Otázka č. 7) Uveďte několik příkladů v reálném čase a vysvětlete dědičnost.
Odpovědět: Dědičnost znamená, že jedna třída (podtřída) získává vlastnosti jiné třídy (nadtřídy) dědičností. V reálném životě si vezměte příklad dědičnosti normálního kola, kde se jedná o třídu rodičů a sportovní kolo může být třídou dítěte, kde sportovní kolo zdědilo vlastnosti a chování rotujících kol s pedály prostřednictvím převodů jako u normálního kola.
Otázka č. 8) Jak funguje polymorfismus v Javě, vysvětlete příklady z reálného života?
Odpovědět: Polymorfismus je schopnost mít více forem nebo schopnost metody dělat různé věci. V reálném životě se stejná osoba vykonávající různé povinnosti chová odlišně. V kanceláři je zaměstnancem, doma, je otcem, během školních nebo školních škol je studentem, o víkendech hraje kriket a hraje na hřišti.
software pro stahování videa z libovolného webu
V Javě existují dva typy polymorfismu
- Čas kompilace polymorfismus: Toho je dosaženo přetížením metody nebo přetížením operátora.
- Polymorfismus za běhu: Toho je dosaženo přepsáním metody.
Otázka č. 9) Kolik typů dědičnosti existuje?
Odpovědět: Níže jsou uvedeny různé typy dědictví:
- Single dědičnost: Třída jednoho dítěte dědí vlastnosti třídy s jedním rodičem.
- Vícenásobné dědictví: Jedna třída dědí funkce více než jedné základní třídy a není v Javě podporována, ale třída může implementovat více než jedno rozhraní.
- Víceúrovňová dědičnost: Třída může dědit z odvozené třídy, což z ní dělá základní třídu pro novou třídu, například, Dítě zdědí chování po svém otci a otec zdědil vlastnosti po svém otci.
- Hierarchická dědičnost: Jedna třída je zděděna více podtřídami.
- Hybridní dědičnost: Jedná se o kombinaci jednoduchého a vícenásobného dědictví.
Otázka č. 10) Co je to rozhraní?
Odpovědět: Rozhraní je podobné třídě, kde může mít metody a proměnné, ale její metody nemají tělo, pouze podpis známý jako abstraktní metoda. Proměnné deklarované v rozhraní mohou mít ve výchozím nastavení veřejné, statické a konečné. Rozhraní se v Javě používá pro abstrakci a více dědičností, kde může třída implementovat více rozhraní.
Otázka č. 11) Můžete vysvětlit výhody abstrakce a dědičnosti?
Odpovědět: Abstrakce odhalí uživateli pouze základní podrobnosti a ignoruje nebo skryje irelevantní nebo složité podrobnosti. Jinými slovy, abstrakce dat zpřístupňuje rozhraní a skrývá podrobnosti implementace. Java provádí abstrakci pomocí rozhraní a abstraktních tříd. Výhodou abstrakce je, že usnadňuje prohlížení věcí snížením nebo skrytím složitosti implementace.
Je zabráněno duplikaci kódu a zvyšuje se opakovaná použitelnost kódu. Uživateli jsou odhaleny pouze základní podrobnosti a zlepšuje zabezpečení aplikace.
Dědičnost je místo, kde podřízená třída dědí funkčnost (chování) nadřazené třídy. Nemusíme psát kód, jakmile je jednou napsán v nadřazené třídě, aby byla funkčnost opět v podřízené třídě, a usnadňuje tak opětovné použití kódu. Kód se také stane čitelným. Dědičnost se používá tam, kde existuje „vztah“. Příklad: Hyundai je auto NEBO MS Word je software.
Otázka č. 12) Jaký je rozdíl mezi nástavci a nářadím?
Odpovědět: Klíčové slovo extends i implements se používá pro dědičnost, ale různými způsoby.
Rozdíly mezi klíčovými slovy Extends a Implements v Javě jsou vysvětleny níže:
Rozšiřuje | Nářadí |
---|---|
Třída může rozšířit další třídu (dítě rozšiřující rodiče zděděním jeho vlastností). Rozhraní také zdědí (pomocí klíčového slova rozšiřuje) další rozhraní. | Třída může implementovat rozhraní |
Subtřída rozšiřující super třídu nemusí přepsat všechny metody super třídy | Rozhraní implementující třídu musí implementovat všechny metody rozhraní. |
Třída může rozšířit pouze jednu super třídu. | Třída může implementovat libovolný počet rozhraní. |
Rozhraní může rozšířit více než jedno rozhraní. | Rozhraní nemůže implementovat žádné jiné rozhraní. |
Syntax: třída Dítě rozšiřuje třídu Rodič | Syntax: hybridní nářadí třídy Rose |
Otázka č. 13) Jaké jsou různé modifikátory přístupu v Javě?
Odpovědět: Modifikátory přístupu v Javě řídí přístupový rozsah třídy, konstruktoru, proměnné, metody nebo datového člena. Jsou různé typy modifikátorů přístupu:
- Výchozí modifikátor přístupu je bez jakýchkoli datových členů specifikujících přístup, třídy a metod a jsou přístupné ve stejném balíčku.
- Modifikátory soukromého přístupu jsou označeny klíčovým slovem private a jsou přístupné pouze v rámci třídy a nejsou přístupné ani třídě ze stejného balíčku.
- Chráněné modifikátory přístupu mohou být přístupné v rámci stejného balíčku nebo podtříd z různých balíků.
- Veřejné modifikátory přístupu jsou přístupné odkudkoli.
Otázka č. 14) Vysvětlete rozdíl mezi abstraktní třídou a metodou?
Odpovědět: Následuje několik rozdílů mezi abstraktní třídou a abstraktní metodou v Javě:
jak vybudovat bezpečnou síť
Abstraktní třída | Abstraktní metoda |
---|---|
Objekt nelze vytvořit z abstraktní třídy. | Abstraktní metoda má podpis, ale nemá tělo. |
Podtřída vytvořila nebo zdědila abstraktní třídu pro přístup k členům abstraktní třídy. | Ve své podtřídě je povinné přepsat abstraktní metody super třídy. |
Abstraktní třída může obsahovat abstraktní metody nebo jiné než abstraktní metody. | Třída obsahující abstraktní metodu by měla být vytvořena jako abstraktní třída. |
Otázka č. 15) Jaké jsou rozdíly mezi metodou a konstruktorem?
Odpovědět: Rozdíly mezi konstruktory a metodami v Javě jsou následující:
Konstruktéři | Metody |
---|---|
Název konstruktorů by se měl shodovat s názvem třídy. | Metody by neměly mít stejný název jako název třídy. |
Používají se k vytvoření, inicializaci a přidělení paměti objektu. | Metody se používají k provádění určitých příkazů zapsaných uvnitř nich. |
Konstruktory jsou implicitně vyvolány systémem, kdykoli jsou vytvořeny objekty. | Metody jsou vyvolány, když je volána. |
Při vyvolání instance třídy (objektu) jsou vyvolány pomocí nového klíčového slova. | Metody jsou vyvolány během provádění programu. |
Konstruktor nemá návratový typ. | Metoda má návratový typ. |
Konstruktor nelze zdědit podtřídou. | Metody lze zdědit podtřídou. |
Otázka č. 16) Co je konstruktor v Javě?
Odpovědět: Konstruktor je metoda bez návratového typu a má stejný název jako název třídy. Když vytvoříme objekt, výchozí konstruktor přidělí paměť pro objekt během kompilace kódu Java. Konstruktory se používají k inicializaci objektů a nastavení počátečních hodnot pro atributy objektů.
Otázka č. 17) Kolik typů konstruktorů lze použít v Javě? Prosím vysvětlit.
Odpovědět: V Javě existují v zásadě tři typy konstruktorů.
Tyto jsou:
- Výchozí konstruktor: Tento konstruktor je bez jakéhokoli parametru a vyvolá se pokaždé, když vytvoříte instanci třídy (objektu). Pokud je třída Employee, pak syntaxe výchozího konstruktoru bude Employee ().
- Konstruktor bez arg: Jak název napovídá, konstruktor bez jakéhokoli argumentu se nazývá konstruktor no-arg.
- Parametrizovaný konstruktor: Konstruktor s řadou parametrů se nazývá parametrizovaný konstruktor. Jste povinni poskytnout argumenty, tj. Počáteční hodnoty s ohledem na datový typ parametrů v tomto konstruktoru.
Otázka č. 18) Proč se v Javě používá nové klíčové slovo?
Odpovědět: Když vytvoříme instanci třídy, tj. Objekty, použijeme klíčové slovo Java Nový . Přiděluje paměť v oblasti haldy, kde JVM rezervuje místo pro objekt. Interně vyvolá také výchozí konstruktor.
Syntax:
Class_name obj = new Class_name();
Otázka č. 19) Kdy používáte super klíčové slovo?
Odpovědět: Super je klíčové slovo Java používané k identifikaci nebo doporučení rodičovské (základní) třídy.
- Můžeme použít super pro přístup k konstruktoru super třídy a volání metod super třídy.
- Když jsou názvy metod stejné v super třídě a sub třídě, pro odkaz na super třídu se použije super je použito klíčové slovo.
- Přístup k datovým členům stejného jména nadřazené třídy, pokud jsou přítomni v nadřazené a podřízené třídě.
- Super lze použít k provedení explicitního volání konstruktorů no-arg a parametrizovaných nadřazených tříd.
- Přístup k metodě nadřazené třídy lze provést pomocí super , když má podřízená třída přepsanou metodu.
Otázka č. 20) Kdy používáte toto klíčové slovo?
Odpovědět: tento klíčové slovo v Javě odkazuje na aktuální objekt v konstruktoru nebo v metodě.
- Když mají atributy třídy i parametrizované konstruktory stejný název, tento je použito klíčové slovo.
- Klíčová slova tento vyvolá konstruktor aktuální třídy, metodu aktuální třídy, vrátí objekt aktuální třídy, předá argument v konstruktoru a volání metody.
Otázka č. 21) Jaký je rozdíl mezi runtime a kompilátorovým polymorfismem?
Odpovědět: Polymorfismus za běhu i za kompilace jsou dva různé typy polymorfismu. Jejich rozdíly jsou vysvětleny níže:
Kompilace časového polymorfismu | Runtime polymorfismus |
---|---|
Hovor je vyřešen kompilátorem v polymorfismu v době kompilace. | Volání není vyřešeno kompilátorem za běhového polymorfismu. |
Je také známý jako statická vazba a přetížení metody. | To je také známé jako dynamické, pozdní a přepsání metody. |
Metody stejného jména s různými parametry nebo metody se stejným podpisem a různými typy návratů jsou polymorfismus v době kompilace. | Metoda se stejným názvem se stejnými parametry nebo podpisem přidruženým v různých třídách se nazývá přepsání metody. |
Toho je dosaženo přetížením funkcí a operátorů. | Toho lze dosáhnout pomocí ukazatelů a virtuálních funkcí. |
Protože všechny věci jsou prováděny v době kompilace. polymorfismus v době kompilace je méně flexibilní. | Protože se věci spouštějí za běhu, je runtime polymorfismus flexibilnější. |
Otázka č. 22) Jaké objektově orientované funkce se používají v Javě?
Odpovědět: Koncept používání objektu v programovacím jazyce Java přináší výhody při použití objektově orientovaných konceptů, jako je zapouzdření pro vzájemné spojení stavu a chování objektu, zajišťuje přístup k datům pomocí specifikátorů přístupu, funkce jako abstrakce při skrývání informací, dědičnost k rozšíření stavu a chování základních tříd na podřízené třídy, polymorfismus v době kompilace a runtime pro přetížení metody a přepsání metody.
Otázka č. 23) Co je přetížení metody?
Odpovědět: Když dvě nebo více metod se stejným názvem mají buď odlišný počet parametrů nebo různé typy parametrů, tyto metody mohou nebo nemusí mít různé návratové typy, pak jsou přetížené metody a funkcí je přetížení metody. Přetížení metody se také nazývá polymorfismus v době kompilace.
Otázka č. 24) Co je přepsání metody?
Odpovědět: Když má metoda podtřídy (odvozená, podřízená třída) stejný název, parametry (podpis) a stejný návratový typ jako metoda ve své super třídě (základní, nadřazená třída), pak se říká, že metoda v podtřídě je přepsána metoda v nadtřídě. Tato funkce se také nazývá runtime polymorfismus.
Otázka č. 25) Vysvětlete přetížení konstruktoru.
Odpovědět: Více než jeden konstruktor, který má různé parametry, takže lze s každým konstruktorem provádět různé úkoly, se nazývá přetížení konstruktoru. S přetížením konstruktoru lze objekty vytvářet různými způsoby. Různé třídy Collection v rozhraní Java API jsou příklady přetížení konstruktoru.
Otázka č. 26) Jaké typy argumentů lze použít v Javě?
Odpovědět: U metod a funkcí Java lze data parametrů odesílat a přijímat různými způsoby. Pokud je metodaB () volána z metodyA (), metodaA () je funkce volajícího a metodaB () je nazývána funkcí, argumenty odeslané metodouA () jsou skutečné argumenty a parametry metodyB () jsou nazývány formální argumenty.
- Hodnota volání: Změny provedené ve formálním parametru (parametry metody B ()) se neodesílají zpět volajícímu (metoda A ()), tato metoda se nazývá volání podle hodnoty . Java podporuje volání podle hodnoty.
- Volání podle odkazu: Změny provedené ve formálním parametru (parametry metody B ()) se odešlou zpět volajícímu (parametry metody B ()).
- Jakékoli změny formálních parametrů (parametry metody B ()) se projeví ve skutečných parametrech (argumenty odeslané metodou A ()). Tomu se říká call by reference.
Otázka č. 27) Rozlišovat mezi statickou a dynamickou vazbou?
Odpovědět: Rozdíly mezi statickou a dynamickou vazbou jsou vysvětleny v následující tabulce.
Statická vazba | Dynamická vazba |
---|---|
Statická vazba v Javě používá jako rozlišení typ polí a třídu. | Dynamická vazba v Javě používá objekt pro řešení vazby. |
Příklad přetížení metody je příkladem statické vazby. | Příklad přepsání metody je příkladem dynamické vazby. |
Statická vazba je vyřešena v době kompilace. | Dynamická vazba se vyřeší za běhu. |
Metody a proměnné používající statickou vazbu jsou soukromé, konečné a statické typy. | Virtuální metody používají dynamickou vazbu. |
Otázka č. 28) Můžete vysvětlit základní třídu, podtřídu a nadtřídu?
Odpověď: Základní třída, podtřída a super třída v Javě jsou vysvětleny takto:
- Základní třída nebo nadřazená třída je super třída a je to třída, ze které je odvozena dílčí třída nebo podřízená třída.
- Podtřída je třída, která dědí atributy (vlastnosti) a metody (chování) ze základní třídy.
Otázka č. 29) Je v Javě podporováno přetížení operátora?
Odpovědět: Přetížení operátora není Java podporováno, protože
- Díky tomu tlumočník vynaloží větší úsilí na pochopení skutečné funkčnosti operátora, díky čemuž je kód složitý a obtížně kompilovatelný.
- Přetížení obsluhy činí programy náchylnější k chybám.
- Funkce přetížení operátora však může být dosažena při přetížení metody jednoduchým, jasným a bezchybným způsobem.
Otázka č. 30) Když se použije metoda finalizace?
Odpovědět: dokončit metoda je volána těsně před tím, než bude objekt zbaven paměti. Tato metoda přepíše, aby se minimalizovaly úniky paměti, provádějte činnosti vyčištění odebráním systémových prostředků.
Otázka č. 31) Vysvětlete tokeny.
Odpovědět: Tokeny v programu Java jsou nejmenší prvky, které kompilátor rozpozná. Identifikátory, klíčová slova, literály, operátory a oddělovače jsou příklady tokenů.
Závěr
Objektově orientované programovací koncepty jsou nedílnou součástí vývojářů, automatizace i manuálních testerů, kteří navrhují automatizační testovací rámec pro testování aplikace nebo vývoj aplikací v programovacím jazyce Java.
Podrobné porozumění je povinné u všech objektově orientovaných funkcí, jako je třída, objekt, abstrakce, zapouzdření, dědičnost, polymorfismus a použití těchto konceptů v programovacím jazyce, jako je Java, k dosažení požadavků zákazníka.
Pokusili jsme se pokrýt nejdůležitější otázky rozhovoru zaměřeného na objektově orientované programování a poskytli jsme odpovídající odpovědi pomocí příkladů.
Přejeme vám vše nejlepší pro váš nadcházející rozhovor!
Doporučené čtení
- OOP Java: Úvod do objektově orientovaného programování v Javě
- Top 20 Java Interview Programmes for Programming and Coding Interview
- Nejlepší 50+ základních otázek a odpovědí na rozhovor s Java
- Výukový program pro rozhraní Java a abstraktní třídu s příklady
- Zapouzdření v Javě: Kompletní výukový program s příklady
- Co je to abstrakce v Javě - dozvíte se na příkladech
- Koncepty OOPS v C #: Výukový program konceptu objektově orientovaného programování
- Koncepty OOP Pythonu (třídy, objekty a dědičnost Pythonu)