21 najczęściej zadawanych pytań i odpowiedzi podczas wywiadu OOP, które warto poznać dzisiaj

Pytania podczas rozmowy kwalifikacyjnej na temat programowania zorientowanego obiektowo mogą pomóc programistom i programistom poszerzyć ich wiedzę na temat kluczowych pojęć w świecie programowania.

OOP to jeden z najbardziej niezbędnych i potrzebnych paradygmatów programowania, skupiający się na obiektach i klasach zamiast na procedurach i funkcjach.

Niektóre języki programowania oparte na OOP to Objective-C, Java, Ada, Perl, Python, C++ i inne.

Duże firmy poszukują programistów biegłych w podejściach i wzorcach obiektowych.

Tak więc, jeśli planujesz stawić się na taki proces rozmowy kwalifikacyjnej, musisz mieć dogłębne zrozumienie koncepcji OOP.

Przyjrzyjmy się niektórym często zadawanym pytaniom i odpowiedziom podczas rozmowy kwalifikacyjnej OOP, które pomogą Ci przygotować się do rozmów kwalifikacyjnych i testów.

Programowanie obiektowe (OOP): przegląd

OOP to paradygmat programowania, który obraca się wokół obiektów. Tutaj obiekty są traktowane jako rzeczywiste instancje, jak klasa zawierająca pewne zachowania i cechy określone w szablonie klasy.

Rozważmy na przykład samochód. Zgodnie z modelem OOPs:

  • Obiekt: Samochód. Może to być dowolny typ lub model, na przykład samochód, który posiadasz.
  • Klasa: Model lub typ samochodu, np. BMW, Chevrolet, Kia, Audi i inne.
  • Charakterystyka: Kolor samochodu, numer podwozia samochodu, typ silnika, rodzaj przekładni i inne.
  • Zachowanie: Jak zmienić bieg, jak uruchomić samochód i nie tylko.

Tutaj cechy są również znane jako właściwości, atrybuty lub dane, podczas gdy zachowania są znane jako procedury, metody lub funkcje w językach programowania.

Zacznijmy więc od kilku najczęściej zadawanych pytań do wywiadów OOP.

Co oznacza termin OOP?

Odpowiedź: Programowanie zorientowane obiektowo (OOP) to model programowania oparty na obiektach i klasach, a nie procedurach i funkcjach. Poszczególne obiekty są uporządkowane w klasy. OOP opisują jednostki w świecie rzeczywistym za pomocą takich pojęć, jak polimorfizm, ukrywanie, dziedziczenie itp. oraz paradygmaty programowania.

OOP wiążą kod i dane razem. Obiekty to rzeczywiste byty zdefiniowane za pomocą klas o określonych cechach i zachowaniu, podczas gdy klasa jest zdefiniowana jako wzorzec dla określonego obiektu. Jest również znany jako typ danych zdefiniowany przez użytkownika.

Obejmuje to programy do projektowania i produkcji wraz z aplikacją mobilną. Na przykład, możesz użyć OOP do oprogramowania do symulacji systemu produkcyjnego.

Jakie są inne paradygmaty programowania niż OOP?

Odpowiedź: Paradygmaty programowania to metoda kategoryzacji języków programowania na podstawie cech każdego języka. Istnieją dwa rodzaje paradygmatów programowania:

  • Paradygmat programowania imperatywnego: Skupia się na tym, jak wykonać logikę i definiuje przepływ sterowania. Obejmuje paradygmat programowania proceduralnego, programowanie zorientowane obiektowo (OOP) i programowanie równoległe.
  • Paradygmat programowania deklaratywnego: Koncentruje się na tym, co należy wykonać w programie i definiuje jego logikę, a nie przepływ sterowania. Obejmuje paradygmat programowania logicznego, paradygmat programowania funkcjonalnego i paradygmat programowania baz danych.

Jaka jest różnica między OOP a SOP?

Odpowiedź: Zrozummy różnicę między OOP i SOP za pomocą tej tabeli:

Programowanie zorientowane obiektowo Programowanie zorientowane obiektowoJest to model programowania oparty na obiektach, a nie procedurach i funkcjach. Zapewnia logiczną strukturę programu, w której programy są podzielone na funkcje. Podejście oddolne Podejście odgórne Zapewnia ukrywanie lub enkapsulację danych Nie zapewnia ukrywania danych Może rozwiązywać złożone problemy. Może rozwiązywać umiarkowane problemy. Niska redundancja, ponieważ kod może być użyty ponownie. Nie obsługuje ponownego wykorzystania kodu.Bardziej elastycznyMniej elastycznyJego głównym problemem są dane.Najważniejszym problemem jest logiczna struktura programu.

Jakie są główne cechy obiektów OOP?

Odpowiedź: Oto główne cechy OOP:

  • Dziedzictwo
  • Kapsułkowanie
  • Abstrakcja
  • Wielopostaciowość
  • Zastępowanie metody
  • Przeciążanie metod
  • Obiekty
  • Klasy
  • Konstruktory i destruktory

Dziedziczenie, polimorfizm i enkapsulacja to podstawowe elementy OOP, które odróżniają te cechy od języków innych niż OOP.

Co to jest enkapsulacja?

Odpowiedź: Enkapsulacja to metoda umieszczania klas, zmiennych, metod i innych elementów wewnątrz kapsuły, która jest wymagana do wykonania pracy i zaprezentowania tej samej kapsuły użytkownikowi. Mówiąc prościej, wszystkie niezbędne metody i dane są zebrane razem, a niepotrzebne szczegóły są ukrywane przed użytkownikami.

Można go również zdefiniować na inne sposoby:

  • Wiązanie danych: enkapsulacja to proces wiązania elementów danych wraz z metodami razem w klasę lub jako całość.
  • Ukrywanie danych: Enkapsulacja to proces ukrywania niepotrzebnych informacji, takich jak ograniczenia dostępu do członka obiektu itp.

Co to jest polimorfizm?

Odpowiedź: Zrozummy polimorfizm, dzieląc termin na dwa słowa, które go tworzą:

„Poly” oznacza „wiele”

„Morph” oznacza „kształty”

Tak więc polimorfizm można opisać jako obiekt o różnych kształtach.

W obiektach obiektowych jest to proces, w którym niektóre dane, obiekt, metoda lub kod zachowują się inaczej w wielu kontekstach lub okolicznościach. W modelu OOP występują dwa rodzaje polimorfizmu:

  • Polimorfizm w czasie wykonywania
  • Polimorfizm czasu kompilacji

Innymi słowy, jest to wiele definicji jednego interfejsu. Na przykład istnieje klasa o nazwie „pojazd”, która składa się z metody „prędkość”. Nie można określić prędkości, ponieważ różne pojazdy mają różne prędkości. Można to zatem zdefiniować w podklasach różnych definicji dla różnych pojazdów.

Co to jest polimorfizm statyczny?

Odpowiedź: Polimorfizm statyczny jest również znany jako polimorfizm czasu kompilacji. Jest to cecha, dzięki której obiekt może być powiązany z odpowiednim operatorem lub funkcją na podstawie wartości. Można to osiągnąć poprzez przeciążenie operatora lub przeciążenie metody.

Tutaj metody używają podobnej nazwy, ale parametr każdej nazwy jest inny. Obiekt zachowuje się inaczej dla podobnego wyzwalacza. W ten sposób wiele metod jest zaimplementowanych w tej samej klasie.

Co to jest dynamiczny polimorfizm?

Odpowiedź: Dynamiczny polimorfizm jest również znany jako polimorfizm w czasie wykonywania. Odnosi się do rodzaju polimorfizmu w obiektach OOP, poprzez które faktyczne włączenie funkcji jest rozliczane podczas wykonywania lub w czasie wykonywania. Można to osiągnąć przez nadpisanie metody.

Na przykład tworzone są dwie klasy, bike i Yamaha, a klasa Yamaha rozszerza klasę bike, zastępując jej metodę run(). Ponieważ metoda podklasy przesłania metodę klasy nadrzędnej, jest wywoływana w czasie wykonywania.

Czym jest klasa?

Odpowiedź: Klasę można zdefiniować jako plan lub szablon, który zawiera pewne wartości, zwane danymi składowymi. Zawiera również pewne reguły, które są znane jako funkcje lub zachowania. Kiedy tworzysz obiekt, automatycznie pobiera on funkcje i dane zdefiniowane w klasie.

Jednak klasa jest planem lub szablonem dla obiektów. W oparciu o klasę można zaprojektować tyle obiektów, ile potrzeba. Na przykład najpierw tworzony jest szablon samochodu. Następnie różne jednostki samochodów są projektowane na podstawie szablonu samochodu.

Co to jest obiekt?

Odpowiedź: Obiekt można zdefiniować jako instancję klasy, która zawiera instancję zachowań i członków zdefiniowanych w szablonie. Obiekt jest rzeczywistą jednostką, z którą użytkownik wchodzi w interakcję, ale klasa jest tylko projektem dla tego obiektu.

W ten sposób obiekty mają pewne cechy lub zachowanie i zajmują przestrzeń — na przykład określony model samochodu.

Jaka jest różnica między klasą a strukturą?

Odpowiedź: Zrozummy to za pomocą tabeli:

Struktura klasy Klasy są typu referencyjnego. Struktury są typu wartościowego. Jest przydzielane do pamięci sterty. Jest przydzielane do pamięci stosu. Alokacja jest tańsza w przypadku dużego typu referencyjnego. ma ograniczone funkcje.W dużych programach używa się klasy.W małych programach używa się struktury.Zawiera konstruktor i destruktor.Zawiera konstruktor sparametryzowany lub statyczny. Używa słowa kluczowego new() za każdym razem, gdy tworzy instancje.Może łatwo tworzyć instancje z dowolnymi słowami kluczowymi lub bez nich.Klasa może dziedziczyć z innej klasy.Struktura nie może dziedziczyć.Członkowie danych klasy mogą być chronione. Elementy członkowskie danych struktury nie mogą być chronione. Członkowie funkcji mogą być abstrakcyjni lub członkowie virtualFunction nie mogą być abstrakcyjni lub virtualDwie różne zmienne klasy mogą zawierać odwołanie do podobnego obiektu. Każda zmienna zawiera własną kopię.

Co to jest dziedziczenie?

Odpowiedź: Dziedziczenie jest jedną z cech OOP, która umożliwia klasie dziedziczenie głównych właściwości innej klasy. Na przykład, jeśli „pojazd” jest klasą, to „samochód”, „rower” itd. są innymi klasami, które mogą dziedziczyć kluczowe właściwości z klasy „pojazd”.

Ta funkcja pomaga w pozbyciu się zbędnego kodu; stąd zmniejszenie rozmiaru kodu. W uproszczeniu dziedziczenie jest definiowane jako odbiorca właściwości z klasy nadrzędnej do klasy podrzędnej. Tutaj „pojazd” jest klasą nadrzędną, a „samochód” lub „rower” to klasy podrzędne z powyższego przykładu.

W ten sposób możesz ponownie użyć kodu programistycznego jednej klasy w innej klasie bez ponownego pisania tego samego kodu lub marnowania czasu na proces.

Jakie są rodzaje dziedziczenia?

Odpowiedź: W modelu OOPs stosowane są różne rodzaje dziedziczenia, takie jak:

  • Pojedyncze dziedziczenie: Definiuje jako dziedziczenie, w którym pojedyncza klasa dziedziczy wspólne funkcje pojedynczej klasy bazowej.
  • Dziedziczenie wielokrotne: pojawia się, gdy jedna klasa dziedziczy więcej niż jedną klasę.
  • Dziedziczenie wielopoziomowe: Oznacza to, że klasa dziedziczy z innych klas, które są podklasami jakiejś innej klasy.
  • Dziedziczenie hierarchiczne: Odnosi się do dziedziczenia, w którym jedna klasa ma wiele podklas.
  • Dziedziczenie hybrydowe: Jest to połączenie dziedziczenia wielopoziomowego i wielokrotnego.

Jakie są ograniczenia dziedziczenia?

Odpowiedź: Niektóre ograniczenia dziedziczenia są następujące:

  • Zwiększa wysiłek i czas potrzebny do wykonania programu. Dzieje się tak, ponieważ wymaga częstego przeskakiwania z jednej klasy do drugiej, co wymaga czasu.
  • Klasa rodzica, wraz z klasą dziecka, są ze sobą ściśle powiązane, co oznacza mniejszą elastyczność.
  • Wymaga ostrożnej inkorporacji, w przeciwnym razie doprowadziłoby to do niedostatecznych lub nieprawidłowych wyników.
  • Pojedyncza modyfikacja w programie może prowadzić do zmiany kodu zarówno w klasach nadrzędnych, jak i podrzędnych.

Czym jest abstrakcja?

Odpowiedź: Abstrakcja jest jednym z elementów OOP. Kluczową rolą abstrakcji jest radzenie sobie ze złożonością. Odbywa się to poprzez ukrywanie niechcianych szczegółów przed użytkownikami. Pozwala to użytkownikom na zaimplementowanie złożonej logiki na szczycie abstrakcji bez myślenia o ukrytej złożoności.

Na przykład, jeśli jesteś miłośnikiem kawy, musisz wiedzieć, ile mleka, ziaren kawy i kostek cukru chcesz dodać, aby zaparzyć filiżankę kawy za pomocą ekspresu do kawy. Nie ma sensu myśleć o zasadzie działania tej maszyny. Ekspres do kawy to ukryta złożoność, o której nie musisz wiedzieć, ale proces parzenia kawy to konieczność.

Istnieją dwa rodzaje abstrakcji:

  • Abstrakcja danych
  • Abstrakcja procesowa

Kim jest Konstruktor?

Odpowiedź: Konstruktor to specjalna metoda w klasie lub strukturze, której nazwa jest podobna do nazwy klasy. Służy wymaganemu celowi inicjowania obiektów. Pomaga również w tworzeniu wystąpień danych składowych, a także metod przypisywania obiektów do klasy.

Tworząc konstruktor, należy pamiętać o kilku rzeczach:

  • Ma taką samą nazwę jak nazwa klasy.
  • Nie może być abstrakcyjna, ostateczna ani statyczna.
  • Nie ma żadnej zmiennej typu zwracanego.

Jakie są różne typy konstruktorów w C++?

Odpowiedź: W C++ istnieją głównie trzy typy konstruktorów:

  • Konstruktor domyślny: Konstruktor bez parametrów ani argumentów w definicji. Ten typ konstruktora służy do inicjalizacji składowych danych lub zmiennych wartościami rzeczywistymi.
  • Konstruktor sparametryzowany: zawiera argumenty lub parametry w deklaracji i definicji. Przez sparametryzowany konstruktor może przechodzić więcej niż jeden parametr. Służy do przeciążania, aby poznać różnice w wielu konstruktorach.
  • Konstruktor kopiujący: Jest to funkcja członkowska, która używa innego obiektu podobnej klasy do inicjalizacji obiektu. Co więcej, pomaga kopiować dane z jednego obiektu do drugiego.

Co to jest destruktor?

Odpowiedź: Destruktor to metoda wywoływana automatycznie podczas niszczenia obiektu. Realizuje określone działania:

  • Odzyskiwanie przestrzeni sterty, która została przydzielona wcześniej podczas inicjalizacji obiektu
  • Zamykanie połączeń i plików z bazą danych
  • Zwalnianie zasobów sieciowych i blokady zasobów
  • Wykonywanie różnych czynności porządkowych

Innymi słowy, destruktor niszczy obiekty zainicjowane przez konstruktora. Jest to specjalna funkcja składowa o tej samej nazwie co nazwa klasy, ale poprzedzona symbolem (~). Destruktor może być przeciążony, ponieważ jest funkcją jednokierunkową.

Co to jest zbieranie śmieci (GC)?

Odpowiedź: Garbage collection (GC) to element odzyskiwania pamięci wbudowany w języki programowania, takie jak Java i C#. Język programowania obsługujący GC zawiera co najmniej jeden odśmiecacz pamięci, który automatycznie zwalnia miejsce w pamięci, które nie jest już wymagane w programie.

Odśmiecanie potwierdza, że ​​program nadal mieści się w limicie pamięci. Uniemożliwia programistom ręczne zarządzanie pamięcią programu, co minimalizuje błędy związane z pamięcią.

Co to jest obsługa wyjątków?

Odpowiedź: Obsługa wyjątków to metoda reagowania na nieoczekiwane zdarzenia podczas działania programu komputerowego. Programiści muszą „obsługiwać” niechciane zdarzenia (wyjątki), aby zapobiec awariom systemu lub programu. Bez tej metody wyjątki mogą zakłócać zwykłe działanie programu i skutkować nieefektywnością lub ryzykiem.

Co to jest blok try/catch?

Odpowiedź: Try or catch to słowa kluczowe reprezentujące obsługę wyjątków z powodu błędów kodowania lub danych podczas wykonywania programu.

  • Blok try to blok kodu, w którym występują wyjątki
  • Blok catch obsługuje i łapie wyjątki blokowe

Instrukcje try and catch są często używane w różnych językach programowania, w tym w C++. C#, Java, SQL i JavaScript. Każda instrukcja try pasuje do instrukcji catch w celu obsługi wykonania. Oto kilka innych rzeczy, o których należy pamiętać w instrukcjach try and catch:

  • Po bloku try następuje blok catch.
  • Po bloku try następuje co najmniej jeden blok catch.
  • Po bloku try następuje kolejny blok try, po którym następuje blok catch.

Wniosek

OOP to podstawowa koncepcja, którą powinni znać programiści. Dokładne poznanie go pomoże ci również dobrze programować w językach, które wykorzystują koncepcje OOP.

Jeśli przygotowujesz się do rozmowy kwalifikacyjnej lub testu, powyższe pytania i odpowiedzi pomogą Ci odświeżyć zrozumienie pojęć OOP, takich jak klasy, obiekty, enkapsulacja, polimorfizm, dziedziczenie, abstrakcja i inne. W ten sposób możesz śmiało zmierzyć się z rozmowami kwalifikacyjnymi i pomyślnie przez nie przejść, aby budować swoją karierę.

Możesz również zapoznać się z niektórymi z tych pytań do wywiadu SQL.