21 Často kladených otázek a odpovědí na OOP rozhovoru, které byste měli znát ještě dnes

Otázky k pohovoru o objektově orientovaném programování mohou pomoci programátorům a vývojářům zlepšit jejich znalosti klíčových pojmů ve světě programování.

OOP je jedním z nejnutnějších a nejpotřebnějších paradigmat programování, který se zaměřuje na objekty a třídy namísto procedur a funkcí.

Některé programovací jazyky založené na OOP jsou Objective-C, Java, Ada, Perl, Python, C++ a další.

Velké společnosti hledají vývojáře zběhlé v objektově orientovaných přístupech a vzorech.

Pokud se tedy plánujete zúčastnit takového pohovoru, musíte mít hluboké porozumění konceptům OOP.

Podívejme se na některé z často kladených otázek a odpovědí na pohovory OOP, které vám pomohou připravit se na pohovory a testy.

Objektově orientované programování (OOP): Přehled

OOP je programovací paradigma, které se točí kolem objektů. Zde jsou objekty považovány za instance reálného světa, jako třída, která zahrnuje některá chování a vlastnosti specifikované v šabloně třídy.

Vezměme si například auto. Podle modelu OOPs:

  • Objekt: Auto. Může to být jakýkoli typ nebo model, například auto, které vlastníte.
  • Třída: Model nebo typ vozu, například BMW, Chevrolet, Kia, Audi a další.
  • Charakteristika: Barva vozu, číslo podvozku vozu, typ motoru, typ převodovky a další.
  • Chování: Jak přeřadit, jak nastartovat auto a další.

Charakteristiky jsou zde také známé jako vlastnosti, atributy nebo data, zatímco chování jsou v programovacích jazycích známé jako procedury, metody nebo funkce.

Začněme tedy některými často kladenými otázkami na OOP rozhovoru.

Co znamená pojem OOPs?

Odpověď: Objektově orientované programování (OOP) je programovací model založený na objektech a třídách namísto procedur a funkcí. Jednotlivé objekty jsou uspořádány do tříd. OOPs popisuje entity reálného světa s pojmy jako polymorfismus, skrývání, dědičnost atd. a programovací paradigmata.

OOP spojují kód a data dohromady. Objekty jsou entity reálného světa definované prostřednictvím tříd se specifickými charakteristikami a chováním, zatímco třída je definována jako vzor pro konkrétní objekt. Je také známý jako uživatelsky definovaný datový typ.

To zahrnuje programy pro návrh a výrobu spolu s mobilní aplikací. OOP můžete například použít pro software pro simulaci výrobního systému.

Jaká jsou jiná programovací paradigmata než OOP?

Odpověď: Programovací paradigmata jsou metodou kategorizace programovacích jazyků na základě vlastností každého jazyka. Existují dva typy programovacích paradigmat:

  • Paradigma imperativního programování: Zaměřuje se na způsob provádění logiky a definuje tok řízení. Zahrnuje paradigma procedurálního programování, objektově orientované programování (OOP) a paralelní programování.
  • Paradigma deklarativního programování: Zaměřuje se na to, co se má v programu provést, a definuje jeho logiku, nikoli tok řízení. Zahrnuje paradigma logického programování, paradigma funkčního programování a paradigma databázového programování.
  Karma Train je klient iPhone Reddit s jedinečným uživatelským rozhraním založeným na kartách

Jaký je rozdíl mezi OOP a SOP?

Odpověď: Pojďme pochopit rozdíl mezi OOP a SOP pomocí této tabulky:

Struktura objektově orientovaného programování Orientované programováníJe to programovací model založený na objektech namísto procedur a funkcí. Poskytuje logickou strukturu programu, kde jsou programy rozděleny do funkcí. Dodržuje přístup zdola nahoru Dodržuje přístup shora dolů Poskytuje skrytí nebo zapouzdření dat Neposkytuje skrytí dat Dokáže vyřešit složité problémy. Dokáže vyřešit středně závažné problémy. Nízká redundance, protože kód lze znovu použít. Nepodporuje opětovné použití kódu. Flexibilnější Méně flexibilní Jeho primárním zájmem jsou data. Jeho primárním zájmem je logická struktura programu.

Jaké jsou hlavní rysy OOP?

Odpověď: Zde jsou hlavní rysy OOP:

  • Dědictví
  • Zapouzdření
  • Abstrakce
  • Polymorfismus
  • Přepsání metody
  • Přetížení metody
  • Objekty
  • Třídy
  • Konstruktéři a destruktori

Dědičnost, polymorfismus a zapouzdření jsou základní prvky OOP, které odlišují tyto vlastnosti od jazyků bez OOP.

Co je to zapouzdření?

Odpověď: Zapouzdření je metoda vkládání třídy, proměnných, metod a dalšího do kapsle, která je nutná k provedení práce a předání stejné kapsle uživateli. Jednoduše řečeno, všechny potřebné metody a data jsou poskládány a nepotřebné detaily jsou uživatelům skryty.

Lze jej definovat i jinak:

  • Vazba dat: Zapouzdření je proces spojení datových členů spolu s metodami dohromady jako třída nebo jako celek.
  • Skrytí dat: Zapouzdření je proces skrývání nepotřebných informací, jako jsou omezení přístupu pro člena objektu atd.

Co je to polymorfismus?

Odpověď: Pojďme pochopit polymorfismus rozdělením termínu na dvě slova, která jej tvoří:

„Poly“ znamená „mnoho“

„Morph“ znamená „tvary“

Polymorfismus lze tedy popsat jako objekt, který má různé tvary.

V OOP se označuje jako proces, jehož prostřednictvím se některá data, objekt, metoda nebo kód chovají odlišně za různých kontextů nebo okolností. V modelu OOPs existují dva typy polymorfismu:

  • Polymorfismus doby běhu
  • Polymorfismus času kompilace

Jinými slovy, je to více definic jednoho rozhraní. Například existuje třída s názvem ‚vehicle‘, která se skládá z metody ‚speed‘. Je nemožné definovat rychlost, protože různá vozidla mají různé rychlosti. To může být definováno v podtřídách různých definic pro různá vozidla.

Co je statický polymorfismus?

Odpověď: Statický polymorfismus je také známý jako polymorfismus doby kompilace. Je to vlastnost, pomocí které lze objekt propojit s příslušným operátorem nebo funkcí na základě hodnot. Toho lze dosáhnout přetížením operátora nebo přetížením metody.

Zde metody používají podobný název, ale parametry každého názvu se liší. Objekt se pro podobnou spoušť chová jinak. Ve stejné třídě je tedy implementováno více metod.

Co je dynamický polymorfismus?

Odpověď: Dynamický polymorfismus je také známý jako runtime polymorfismus. Vztahuje se k typu polymorfismu v OOP, jehož prostřednictvím se skutečné začlenění funkce řeší během provádění nebo běhu. Toho lze dosáhnout přepsáním metody.

Například jsou vytvořeny dvě třídy, bike a Yamaha, a třída Yamaha rozšiřuje třídu bike a přepisuje svou metodu run(). Protože metoda podtřídy přepíše metodu nadřazené třídy, je vyvolána za běhu.

Co je třída?

Odpověď: Třídu lze definovat jako plán nebo šablonu, která obsahuje nějaké hodnoty, nazývané data členů. Zahrnuje také některá pravidla, která jsou známá jako funkce nebo chování. Když vytvoříte objekt, automaticky převezme funkce a data definovaná ve třídě.

  Každá klávesová zkratka Skype a jak je používat

Třída je však plán nebo šablona pro objekty. Jeden může navrhnout tolik objektů podle požadavku na základě třídy. Nejprve se například vytvoří šablona auta. Poté jsou na základě šablony vozu navrženy různé jednotky vozů.

Co je to objekt?

Odpověď: Objekt lze definovat jako instanci třídy, která obsahuje instanci chování a členů definovaných v šabloně. Objekt je skutečná entita, se kterou uživatel interaguje, ale třída je pouze návrhem tohoto objektu.

Předměty tedy mají nějaké vlastnosti nebo chování a spotřebovávají prostor – například konkrétní model auta.

Jaký je rozdíl mezi třídou a strukturou?

Odpověď: Pochopme to pomocí tabulky:

Struktura tříd Třídy jsou referenčního typu.Struktury jsou hodnotového typu.Je alokována do paměti haldy.Je alokována v paměti zásobníku.Alokace je levnější ve velkém referenčním typuAlokace je levnější v hodnotovém typu než v referenčním typuMá neomezené funkce.Má má omezené vlastnosti.Ve velkých programech se používá třída.V malých programech se používá struktura.Obsahuje konstruktor a destruktor.Obsahuje parametrizovaný nebo statický konstruktor. Pokaždé, když vytváří instance, používá klíčové slovo new(). Může snadno vytvářet instance s libovolnými klíčovými slovy nebo bez nich. Třída může dědit od jiné třídy. Struktura nesmí dědit. Datové členy třídy lze chránit. Datové členy struktury nelze chránit.Členy funkce mohou být abstraktní nebo členy virtuálníFunkční nemohou být abstraktní nebo virtuálníDvě různé proměnné třídy mohou obsahovat odkaz na podobný objekt. Každá proměnná obsahuje svou vlastní kopii.

Co je dědičnost?

Odpověď: Dědičnost je jednou z funkcí OOP, která umožňuje třídě zdědit hlavní vlastnosti jiné třídy. Pokud je například ‚vozidlo‘ třídou, pak ‚auto‘, ‚kolo‘ atd. jsou další třídy, které mohou zdědit klíčové vlastnosti od vozidla dané třídy.

Tato funkce pomáhá zbavit se nadbytečného kódu; tedy zmenšení velikosti kódu. Jednoduše řečeno, dědičnost je definována jako příjemce vlastností z nadřazené třídy do podřízené třídy. Zde je ‚vozidlo‘ nadřazenou třídou a ‚auto‘ nebo ‚kolo‘ jsou podřízené třídy z výše uvedeného příkladu.

Tímto způsobem můžete znovu použít programovací kód jedné třídy v jiné třídě, aniž byste museli znovu psát stejný kód nebo ztrácet čas v procesu.

Jaké jsou různé typy dědictví?

Odpověď: V modelu OOPs se používají různé typy dědičnosti, jako například:

  • Jediná dědičnost: Definuje se jako dědičnost, ve které jedna třída dědí společné funkce jedné základní třídy.
  • Vícenásobná dědičnost: Objeví se, když jedna třída zdědí více než jednu třídu.
  • Víceúrovňová dědičnost: To znamená, že třída dědí z jiných tříd, které jsou podtřídami nějaké jiné třídy.
  • Hierarchická dědičnost: Odkazuje na dědičnost, kdy jedna třída má více podtříd.
  • Hybridní dědičnost: Jedná se o kombinaci víceúrovňové a vícenásobné dědičnosti.

Jaká jsou omezení dědičnosti?

Odpověď: Některá omezení dědičnosti jsou následující:

  • Zvyšuje úsilí a čas potřebný k provedení programu. Je to proto, že vyžaduje časté skákání z jedné třídy do druhé, což vyžaduje čas.
  • Rodičovská třída spolu s dětskou třídou jsou velmi těsně propojeny, takže menší flexibilita.
  • Vyžaduje pečlivé začlenění, jinak by to vedlo k nedostatečným nebo nesprávným výsledkům.
  • Jediná úprava v programu může vést ke změně kódu v rodičovských i podřízených třídách.

Co je abstrakce?

Odpověď: Abstrakce je jedním z prvků OOP. Klíčovou rolí abstrakce je zvládnout složitost. Toho se dosáhne skrytím nechtěných detailů před uživateli. To umožňuje uživatelům implementovat komplexní logiku nad abstrakcí, aniž by přemýšleli o skryté složitosti.

  Jak nastavit RStudio IDE na Linuxu

Pokud jste například milovníci kávy, potřebujete vědět, kolik mléka, kávových zrn a kostkového cukru chcete přidat, abyste si připravili šálek kávy pomocí kávovaru. O principu fungování toho stroje nemá smysl přemýšlet. Kávovar je skrytá složitost, kterou nemusíte znát, ale proces přípravy kávy je nutností.

Existují dva typy abstrakce:

  • Abstrakce dat
  • Abstrakce procesu

Co je to konstruktér?

Odpověď: Konstruktor je speciální metoda ve třídě nebo struktuře, jejíž název je podobný názvu třídy. Slouží požadovanému účelu inicializace objektů. Pomáhá také při vytváření instancí dat členů a také metod pro přiřazování objektů do třídy.

Při vytváření konstruktoru je nutné mít na paměti několik věcí:

  • Jmenuje se stejně jako název třídy.
  • Nemůže být abstraktní, konečný nebo statický.
  • Nemá žádnou proměnnou návratového typu.

Jaké jsou různé typy konstruktorů v C++?

Odpověď: V C++ existují hlavně tři typy konstruktorů:

  • Výchozí konstruktor: Konstruktor bez parametrů nebo argumentů v definici. Tento typ konstruktoru se používá k inicializaci datových členů nebo proměnných s reálnými hodnotami.
  • Parametrizovaný konstruktor: Obsahuje argumenty nebo parametry v deklaraci a definici. Parametrizovaným konstruktorem může projít více než jeden parametr. Používá se pro přetížení, abychom poznali rozdíly ve více konstruktorech.
  • Kopírovat konstruktor: Je to členská funkce, která používá jiný objekt podobné třídy k inicializaci objektu. Navíc pomáhá kopírovat data z jednoho objektu do druhého.

Co je to destruktor?

Odpověď: Destruktor je metoda, která se volá automaticky při ničení objektu. Provádí určité akce:

  • Obnovení prostoru haldy, který byl přidělen před během inicializace objektu
  • Uzavření databázových připojení a souborů
  • Uvolnění síťových prostředků a zámků prostředků
  • Provádění různých úklidových prací

Jinými slovy, destruktor ničí objekty inicializované konstruktorem. Je to speciální členská funkce se stejným názvem jako název třídy, ale předchází jí symbol (~). Destruktor může být přetížen, protože je to jednosměrná funkce.

Co je to Garbage Collection (GC)?

Odpověď: Garbage collection (GC) je prvek obnovy paměti zabudovaný do programovacích jazyků, jako je Java a C#. Programovací jazyk s podporou GC obsahuje alespoň jeden garbage collector, který automaticky uvolňuje paměťový prostor, který již není v programu vyžadován.

Garbage collection potvrzuje, že program je stále v rámci své paměťové kvóty. Brání vývojářům v ruční správě paměti programu, což minimalizuje chyby související s pamětí.

Co je zpracování výjimek?

Odpověď: Zpracování výjimek je způsob reakce na neočekávané události během běhu počítačového programu. Programátoři musí „zacházet“ s nechtěnými událostmi (výjimkami), aby zabránili pádu systému nebo programu. Bez této metody mohou výjimky narušit běžný provoz programu a vést k neefektivitě nebo rizikům.

Co je to pokus/chytit blok?

Odpověď: Try nebo catch jsou klíčová slova, která představují zpracování výjimek kvůli chybám kódování nebo dat během provádění programu.

  • Blok try je blok kódu, kde dochází k výjimkám
  • Blok catch zpracovává výjimky bloku a zachycuje pokus

Příkazy try and catch se často používají v různých programovacích jazycích, včetně C++. C#, Java, SQL a JavaScript. Každý příkaz try se shoduje s příkazem catch, aby bylo možné zpracovat provedení. Zde je několik dalších věcí, které je třeba si pamatovat ve výpovědích typu „try and catch“:

  • Po bloku try následuje blok catch.
  • Po bloku try následuje alespoň jeden blok catch.
  • Blok try je následován dalším blokem try a dále blokem catch.

Závěr

OOP je základní koncept, který by měli programátoři znát. Důkladné naučení vám také pomůže dobře programovat v jazycích, které používají koncepty OOP.

Pokud se připravujete na pohovor nebo test, výše uvedené otázky a odpovědi na pohovor vám pomohou obnovit vaše porozumění konceptům OOP, jako jsou třídy, objekty, zapouzdření, polymorfismus, dědičnost, abstrakce a další. Tímto způsobem můžete s jistotou čelit pohovorům a úspěšně je projít, abyste mohli budovat svou kariéru.

Můžete se také podívat na některé z těchto otázek SQL Interview.