21 Sıkça Sorulan OOP Mülakat Soruları ve Bugün Bilmeniz Gereken Cevaplar

Yayınlanan: 2022-09-20

Nesne Yönelimli Programlama mülakat soruları, programcıların ve geliştiricilerin programlama dünyasındaki temel kavramlar hakkındaki bilgilerini geliştirmelerine yardımcı olabilir.

OOP, prosedürler ve işlevler yerine nesnelere ve sınıflara odaklanan en gerekli ve gerekli programlama paradigmalarından biridir.

Bazı OOP tabanlı programlama dilleri Objective-C, Java, Ada, Perl, Python, C++ ve daha fazlasıdır.

Büyük şirketler, kalıpların yanı sıra nesne yönelimli yaklaşımlarda yetkin geliştiriciler ararlar.

Dolayısıyla, böyle bir görüşme sürecine katılmayı planlıyorsanız, OOP kavramlarını derinlemesine anlamanız gerekir.

Mülakatlara ve testlere hazırlanmanıza yardımcı olacak sık sorulan bazı OOP mülakat soruları ve cevaplarına bakalım.

Nesneye Yönelik Programlama (OOP): Genel Bir Bakış

ayy

OOP, nesneler etrafında dönen bir programlama paradigmasıdır. Burada nesneler, sınıf şablonunda belirtilen bazı davranışları ve özellikleri içeren bir sınıf gibi gerçek dünya örnekleri olarak kabul edilir.

Örneğin bir araba düşünelim. OOP modeline göre:

  • Nesne : Bir araba. Sahip olduğunuz araba gibi herhangi bir tür veya model olabilir.
  • Sınıf : BMW, Chevrolet, Kia, Audi ve daha fazlası gibi otomobilin modeli veya türü.
  • Özellikler : Arabanın rengi, arabanın şasi numarası, motor tipi, vites tipi ve daha fazlası.
  • Davranış : Vites nasıl değiştirilir, araba nasıl çalıştırılır ve daha fazlası.

Burada özellikler aynı zamanda özellikler, nitelikler veya veriler olarak bilinirken, davranışlar programlama dillerinde prosedürler, yöntemler veya işlevler olarak bilinir.

Öyleyse, sık sorulan bazı OOP mülakat sorularıyla başlayalım.

OOP terimi ile ne kastedilmektedir?

Cevap: Nesneye Yönelik Programlama (OOP), prosedürler ve işlevler yerine nesnelere ve sınıflara dayalı bir programlama modelidir. Bireysel nesneler sınıflar halinde düzenlenir. OOP'ler, gerçek dünya varlıklarını polimorfizm, gizleme, kalıtım vb. kavramlarla ve programlama paradigmalarıyla tanımlar.

OOP'ler kodu ve verileri birbirine bağlar. Nesneler, belirli özelliklere ve davranışlara sahip sınıflar aracılığıyla tanımlanan gerçek dünya varlıklarıdır, oysa sınıf, belirli bir nesnenin kalıbı olarak tanımlanır. Kullanıcı tanımlı veri türü olarak da bilinir.

Bu, mobil uygulama ile birlikte tasarım ve üretim programlarını içerir. Örneğin, üretim sistemi simülasyon yazılımı için OOP kullanabilirsiniz.

OOP'lerden başka programlama paradigmaları nelerdir?

programlama paradigmaları

Cevap: Programlama paradigmaları, programlama dillerini her dilin özelliğine göre sınıflandırma yöntemidir. İki tür programlama paradigması vardır:

  • Zorunlu Programlama Paradigması: Mantığın nasıl yürütüleceğine odaklanır ve kontrol akışını tanımlar. Prosedürel Programlama Paradigmasını, Nesneye Yönelik Programlama (OOP) ve Paralel Programlamayı içerir.
  • Bildirimsel Programlama Paradigması: Programda neyin yürütüleceğine odaklanır ve kontrol akışını değil mantığını tanımlar. Mantıksal Programlama Paradigmasını, Fonksiyonel Programlama Paradigmasını ve Veritabanı Programlama Paradigmasını içerir.

OOP ve SOP arasındaki fark nedir?

Cevap: Bu tablo ile OOP ve SOP arasındaki farkı anlayalım:

Nesne yönelimli programlama Yapı Yönelimli Programlama
Prosedürler ve fonksiyonlar yerine nesnelere dayalı bir programlama modelidir. Programların fonksiyonlara ayrıldığı programa mantıksal bir yapı sağlar.
Aşağıdan yukarıya bir yaklaşım izler Yukarıdan aşağıya bir yaklaşım izler
Veri gizleme veya kapsülleme sağlar Veri gizleme sağlamaz
Karmaşık sorunları çözebilir. Orta düzeyde sorunları çözebilir.
Kod tekrar kullanılabildiğinden düşük yedeklilik Kodun yeniden kullanılabilirliğini desteklemiyor.
Daha esnek Daha az esnek
Birincil endişesi veridir. Birincil kaygısı, bir programın mantıksal yapısıdır.

OOP'lerin temel özellikleri nelerdir?

özellikler

Cevap: İşte OOP'lerin ana özellikleri:

  • Miras
  • kapsülleme
  • Soyutlama
  • polimorfizm
  • Yöntem geçersiz kılma
  • Yöntem aşırı yüklemesi
  • nesneler
  • sınıflar
  • Yapıcılar ve yıkıcılar

Kalıtım, polimorfizm ve kapsülleme, bu özellikleri OOP olmayan dillerden ayıran OOP'nin temel unsurlarıdır.

Kapsülleme nedir?

Cevap: Kapsülleme, işi yapmak ve aynı kapsülü kullanıcıya sunmak için gerekli olan bir kapsülün içine sınıf, değişkenler, yöntemler ve daha fazlasını koyma yöntemidir. Basit bir ifadeyle, gerekli tüm yöntemler ve veriler bir araya getirilir ve gereksiz ayrıntılar kullanıcılardan gizlenir.

Ayrıca başka şekillerde de tanımlanabilir:

  • Veri bağlama: Kapsülleme, bir sınıf veya bir bütün olarak yöntemlerle birlikte veri üyelerini bağlama işlemidir.
  • Veri gizleme: Kapsülleme, bir nesnenin üyesine erişim kısıtlamaları vb. gibi gereksiz bilgileri gizleme işlemidir.

Polimorfizm nedir?

polimorfizm

Cevap: Polimorfizmi, terimi oluşturan iki kelimeye ayırarak anlayalım:

“Poli”, “çok” anlamına gelir

“Morph”, “şekiller” anlamına gelir.

Dolayısıyla polimorfizm, farklı şekillere sahip bir nesne olarak tanımlanabilir.

OOP'lerde, bazı veri, nesne, yöntem veya kodun birden çok bağlam veya koşul altında farklı davrandığı süreç olarak adlandırılır. OOPs modelinde iki tür polimorfizm vardır:

  • Çalışma zamanı polimorfizmi
  • Derleme zamanı polimorfizmi

Başka bir deyişle, tek bir arayüzün çoklu tanımlarıdır. Örneğin, 'hız' yönteminden oluşan 'araç' adında bir sınıf var. Farklı araçların farklı hızları olduğu için hızı tanımlamak mümkün değildir. Böylece bu, çeşitli araçlar için çeşitli tanımların alt sınıflarında tanımlanabilir.

Statik Polimorfizm nedir?

Cevap: Statik polimorfizm, derleme zamanı polimorfizmi olarak da bilinir. Bir nesnenin, değerlere dayalı olarak ilgili operatör veya fonksiyon ile ilişkilendirilebileceği özelliktir. Bu, operatör aşırı yüklemesi veya yöntem aşırı yüklemesi yoluyla elde edilebilir.

Burada yöntemler benzer bir ad kullanır, ancak her adın parametresi değişir. Nesne, benzer bir tetikleyici için farklı davranır. Bu nedenle, aynı sınıfta birden fazla yöntem uygulanır.

Dinamik Polimorfizm nedir?

dinamik polimoirfizm

Cevap: Dinamik polimorfizm, çalışma zamanı polimorfizmi olarak da bilinir. Yürütme veya çalışma zamanı sırasında işlevin gerçek dahil edilmesinin kararlaştırıldığı OOP'lerdeki polimorfizm türünü ifade eder. Yöntem geçersiz kılma ile elde edilebilir.

Örneğin, bike ve Yamaha olmak üzere iki sınıf oluşturulur ve Yamaha sınıfı, run() yöntemini geçersiz kılarak bike sınıfını genişletir. Alt sınıf yöntemi, üst sınıf yöntemini geçersiz kıldığından, çalışma zamanında çağrılır.

Sınıf nedir?

Cevap: Bir sınıf, üye verileri adı verilen bazı değerleri içeren plan veya şablon olarak tanımlanabilir. Ayrıca işlevler veya davranışlar olarak bilinen bazı kuralları da içerir. Bir nesne oluşturduğunuzda, sınıfta tanımlanan fonksiyonları ve verileri otomatik olarak alır.

Ancak sınıf, nesneler için bir plan veya şablondur. Bir sınıfa dayalı olarak gereksinime göre çok sayıda nesne tasarlanabilir. Örneğin, önce bir arabanın şablonu oluşturulur. Bundan sonra, arabanın şablonuna göre farklı araba birimleri tasarlanır.

Nesne nedir?

nesnef

Cevap: Nesne, şablonda tanımlanan davranış ve üyelerin örneğini içeren bir sınıfın örneği olarak tanımlanabilir. Nesne, kullanıcının etkileşimde bulunduğu gerçek varlıktır, ancak sınıf yalnızca o nesne için bir plandır.

Bu nedenle, nesnelerin bazı özellikleri veya davranışları vardır ve örneğin belirli bir araba modeli gibi alan tüketirler.

Sınıf ve Yapı arasındaki fark nedir?

Cevap: Bunu bir tablo yardımıyla anlayalım:

Sınıf Yapı
Sınıflar referans türlerindendir. Yapılar değer tiplerindendir.
Yığın belleğe tahsis edilir. Yığın belleğinde tahsis edilir.
Büyük referans türünde tahsis daha ucuzdur Tahsis, değer türünde bir referans türünden daha ucuzdur
Sınırsız özelliklere sahiptir. Sınırlı özelliklere sahiptir.
Büyük programlarda bir sınıf kullanılır. Küçük programlarda bir yapı kullanılır.
Bir kurucu ve bir yıkıcı içerir. Parametreli veya statik kurucu içerir.
Her örnek oluşturduğunda new() anahtar sözcüğünü kullanır. Herhangi bir anahtar kelime ile veya anahtar kelime olmadan kolayca örnekler oluşturabilir.
Bir sınıf başka bir sınıftan miras alabilir. Bir yapının miras almasına izin verilmez.
Bir sınıfın veri üyeleri korunabilir. Bir yapının veri üyeleri korunamaz.
İşlev üyeleri soyut veya sanal olabilir İşlev üyeleri soyut veya sanal olamaz
Sınıfın iki farklı değişkeni, benzer bir nesnenin referansını içerebilir. Her değişken kendi kopyasını içerir.

Miras nedir?

miras

Cevap: Kalıtım, bir sınıfın başka bir sınıfın ana özelliklerini miras almasını sağlayan OOP'lerin özelliklerinden biridir. Örneğin, "araç" bir sınıfsa, "araba", "bisiklet" vb., "araç" sınıfından temel özellikleri devralabilen diğer sınıflardır.

Bu özellik, gereksiz kodlardan kurtulmanıza yardımcı olur; bu nedenle, kodun boyutunu küçültmek. Basit bir ifadeyle, kalıtım, ana sınıftan alt sınıfa özelliklerin alıcısı olarak tanımlanır. Burada, 'araç' üst sınıftır ve 'araba' veya 'bisiklet' yukarıdaki örnekteki alt sınıflardır.

Bu sayede bir sınıfın programlama kodunu başka bir sınıfta aynı kodu tekrar yazmadan veya süreçte zaman kaybetmeden tekrar kullanabilirsiniz.

Mirasın çeşitleri nelerdir?

Cevap: OOPs modelinde kullanılan çeşitli kalıtım türleri vardır, örneğin:

  • Tek kalıtım: Tek bir sınıfın tek bir temel sınıfın ortak işlevlerini devraldığı kalıtım olarak tanımlanır.
  • Çoklu kalıtım: Tek bir sınıf birden fazla sınıfı miras aldığında ortaya çıkar.
  • Çok düzeyli kalıtım: Bu, bir sınıfın başka bir sınıfın alt sınıfları olan diğer sınıflardan miras aldığı anlamına gelir.
  • Hiyerarşik kalıtım: Bir sınıfın birden fazla alt sınıfa sahip olduğu kalıtımı ifade eder.
  • Hibrit kalıtım: Çok düzeyli ve çoklu kalıtımın birleşimidir.

Mirasın sınırları nelerdir?

mirasın sınırlamaları

Cevap: Mirasın sınırlamalarından bazıları şunlardır:

  • Programı yürütmek için gereken çabayı ve zamanı artırır. Bunun nedeni, bir sınıftan diğerine sık sık atlamayı gerektirmesidir, bu da zaman alır.
  • Ana sınıf, alt sınıfla birlikte çok sıkı bir şekilde birleştirilir, bu nedenle daha az esneklik.
  • Dikkatli bir şekilde dahil edilmesi gerekiyor, aksi takdirde yetersiz veya yanlış sonuçlara yol açacaktır.
  • Programdaki tek bir değişiklik, hem ebeveyn hem de alt sınıflarda kodda bir değişikliğe yol açabilir.

Soyutlama nedir?

Cevap: Soyutlama, OOP'lerin öğelerinden biridir. Soyutlamanın anahtar rolü karmaşıklığı ele almaktır. Bu, istenmeyen ayrıntıları kullanıcılardan gizleyerek yapılır. Bu, kullanıcıların gizli karmaşıklığı düşünmeden soyutlamanın üzerine karmaşık mantığı uygulamalarına olanak tanır.

Örneğin, bir kahve aşığıysanız, bir kahve makinesi kullanarak bir fincan kahve yapmak için ne kadar süt, kahve çekirdeği ve küp şeker eklemek istediğinizi bilmeniz gerekir. O makinenin çalışma prensibini düşünmenin bir anlamı yok. Kahve makinesi, bilmeniz gerekmeyen gizli bir karmaşıklıktır, ancak kahve yapma süreci bir zorunluluktur.

İki tür soyutlama vardır:

  • Veri soyutlama
  • süreç soyutlama

Yapıcı nedir?

yapıcı

Cevap: Bir yapıcı, adı sınıf adına benzer olan sınıf veya yapıdaki özel bir yöntemdir. Nesneleri başlatmak için gerekli amaca hizmet eder. Ayrıca üye verilerinin örneklenmesine ve sınıfa nesne atama yöntemlerine yardımcı olur.

Bir kurucu oluştururken akılda tutulması gereken birkaç şey vardır:

  • Sınıf adıyla aynı şekilde adlandırılır.
  • Soyut, nihai veya statik olamaz.
  • Herhangi bir dönüş tipi değişkeni yoktur.

C++'daki çeşitli yapıcı türleri nelerdir?

Cevap: C++'da temel olarak üç tür kurucu vardır:

  • Varsayılan yapıcı: Tanımda parametre veya argüman içermeyen bir yapıcı. Bu tür yapıcı, veri üyelerini veya değişkenleri gerçek değerlerle başlatmak için kullanılır.
  • Parameterized Constructor: Bildirimde ve tanımda argümanlar veya parametreler içerir. Parametrelendirilmiş kurucudan birden fazla parametre geçebilir. Birden çok kurucudaki farklılıkları bilmek için aşırı yükleme için kullanılır.
  • Kopya yapıcı: Bir nesneyi başlatmak için benzer bir sınıfın başka bir nesnesini kullanan bir üye işlevdir. Ayrıca, verileri tek bir nesneden diğerine kopyalamaya yardımcı olur.

Yıkıcı nedir?

yıkıcı

Cevap: Yıkıcı, bir nesneyi yok ederken otomatik olarak çağrılan bir yöntemdir. Belirli eylemleri uygular:

  • Nesnenin başlatılması sırasında daha önce tahsis edilen yığın alanını kurtarma
  • Veritabanı bağlantılarını ve dosyalarını kapatma
  • Ağ kaynaklarını ve kaynak kilitlerini serbest bırakma
  • Çeşitli temizlik görevlerinin yerine getirilmesi

Başka bir deyişle, bir yıkıcı, yapıcı tarafından başlatılan nesneleri yok eder. Bu, sınıf adıyla aynı ada sahip, ancak önünde bir (~) sembolü bulunan özel bir üye işlevidir. Yıkıcı, tek yönlü bir işlev olduğu için aşırı yüklenebilir.

Çöp Toplama (GK) Nedir?

Cevap: Çöp toplama (GC), Java ve C# gibi programlama dillerinde yerleşik bir bellek kurtarma öğesidir. GC özellikli bir programlama dili, bir programda artık gerekli olmayan bellek alanını otomatik olarak boşaltan en az bir çöp toplayıcı içerir.

Çöp toplama, programın hala bellek kotasında olduğunu doğrular. Geliştiricilerin programın belleğini manuel olarak yönetmelerini engeller, bu da bellekle ilgili hataları en aza indirir.

İstisna işleme nedir?

istisna işleme

Cevap: Özel durum işleme, bir bilgisayar programı çalışırken beklenmeyen olaylara yanıt verme yöntemidir. Programcılar, bir sistem veya programın çökmesini önlemek için istenmeyen olayları (istisnaları) "işlemelidir". Bu yöntem olmadan istisnalar, bir programın ortak işleyişini bozabilir ve verimsizliklere veya risklere neden olabilir.

dene/yakala bloğu nedir?

Cevap: Dene veya yakala , bir programın yürütülmesi sırasında kodlama veya veri hatalarından kaynaklanan istisna işlemlerini temsil eden anahtar sözcüklerdir.

  • Try bloğu, istisnaların meydana geldiği kod bloğudur.
  • Bir yakalama bloğu, try bloğu istisnalarını işler ve yakalar

Try ve catch ifadeleri, C++ dahil olmak üzere çeşitli programlama dillerinde sıklıkla kullanılır. C#, Java, SQL ve JavaScript. Yürütmeyi halletmek için her try ifadesi bir catch ifadesi ile eşleşir. İşte dene ve yakala ifadelerinde hatırlanması gereken birkaç şey daha:

  • Bir try bloğunu, yakalama bloğu takip eder.
  • Bir try bloğunu en az bir catch bloğu takip eder.
  • Bir try bloğunu başka bir try bloğu takip eder ve ardından catch bloğu gelir.

Çözüm

OOP, programcıların bilmesi gereken önemli bir kavramdır. Bunu iyice öğrenmek, OOP kavramlarını kullanan dillerde iyi programlama yapmanıza da yardımcı olacaktır.

Bir mülakata veya teste hazırlanıyorsanız, yukarıdaki mülakat soruları ve cevapları, sınıflar, nesneler, kapsülleme, polimorfizm, kalıtım, soyutlama ve daha fazlası gibi OOP kavramları hakkındaki anlayışınızı tazelemenize yardımcı olacaktır. Bu şekilde, röportajlarla güvenle yüzleşebilir ve kariyerinizi inşa etmek için başarılı bir şekilde geçebilirsiniz.

Ayrıca bu SQL Mülakat Sorularından bazılarına da bakabilirsiniz.