En İyi 30 Veri Yapıları ve Algoritma Mülakat Soruları ve Cevapları [Yeni Başlayanlar ve Deneyimliler İçin]

Yayınlanan: 2021-08-31

Veri Yapıları ve Algoritmalar, Bilgisayar Bilimi ve Mühendisliği dünyasının en önemli konuları arasındadır. Bir yazılım mühendisliği röportajına gelirseniz, özellikle Veri Yapıları ve Algoritmalara ayrılmış bir dizi soruyla karşılaşacağınızdan emin olabilirsiniz - işte bu kadar önemli!

Algoritmalar, bilgisayar bilimi ve veri biliminde olan her şeyin merkezinde yer alır. Machine Learning'den AI'ya ve Blockchain'e kadar tüm teknolojiler algoritmalar üzerinde çalışır. Ve algoritmaların çalışması için Veri Yapılarına ihtiyacı vardır. Böylece, Veri Yapıları ve Algoritmaların birleşik bilgisi, görüşmeniz sırasında kalabalığın arasından sıyrılmanıza yardımcı olabilir.

Ancak zorluk, DSA'nın kapsamlı bir etki alanı olmasıdır. Burada öğrenme asla durmaz ve her zaman anlamanız gereken bazı yeni gelişmeler vardır. Veri Yapıları ve Algoritmalar ile uğraşırken sürekli olarak becerilerin geliştirilmesi zorunlu olsa da, bugün teknik mülakatlarda başarılı olmanıza yardımcı olacak bazı DSA temellerine bakacağız.

İçindekiler

En İyi Veri Yapıları ve Algoritmalar Röportaj Soru-Cevap

  1. 'Veri Yapıları' hakkında ne anlıyorsunuz?

Veri Yapıları, verileri sistematik olarak tanımlamak, depolamak ve bunlara erişmek için kullanılan teknikler olarak tanımlanabilir. Herhangi bir algoritmanın en önemli bileşenini oluştururlar. Veri Yapılarının türüne bağlı olarak, farklı türde verileri depolarlar ve farklı şekillerde erişilebilirler. Bir algoritmanın bir sonuç döndürmesi için, nihai sonuca ulaşmak için bir dizi veri yapısı üzerinde organize ve verimli bir şekilde çalışması ve manipüle etmesi gerekir.

  1. Dosya Yapısı ile Veri Yapısı arasında nasıl ayrım yapabilirsiniz?

Dosya Yapılarında, veriler standart dosya depolama ilkeleri izlenerek disklerde depolanır ve harici, üçüncü taraf uygulamalarla uyumlu değildir. Veri Yapılarında ise veriler hem diskte hem de RAM'de özelleştirilmiş depolama ilkelerinde depolanır ve bunlar harici uygulamalarla oldukça uyumludur.

  1. Geniş veri yapısı türleri nelerdir?

Veri Yapıları genel olarak iki kategoriye ayrılabilir:

  • Doğrusal: Burada tüm öğeler sıralı olarak depolanır ve geri alma doğrusal olarak gerçekleşir. Düzenleme hiyerarşik değildir ve her öğenin bir ardılı ve bir öncülü vardır. Örnek – Diziler, Bağlantılı Listeler, Yığınlar, Kuyruklar vb.
  • Doğrusal olmayan: Burada, depolama doğrusal bir sırayla gerçekleşmez – yani, tüm öğelerin mutlaka yalnızca bir halefi ve öncülü olması gerekmez. Bunun yerine, doğrusal olmayan Veri Yapılarındaki öğeler, doğrusal olmayan bir şekilde iki veya daha fazla öğeye bağlanır. Örnek – Ağaçlar, Grafikler, Yığınlar.

4. Veri Yapılarının bazı temel kullanım alanları nelerdir?

Algoritmalar ve Algoritma Optimizasyonu başta olmak üzere aklınıza gelebilecek tüm bilgi işlem alanlarında Veri Yapıları oldukça gereklidir. Veri Yapılarının yaygın olarak kullanıldığı diğer bazı alanlar şunlardır:

  • İşletim sistemi tasarımı
  • Sayısal analiz
  • Makine Öğrenimi ve Yapay Zeka
  • Derleyici tasarımı ve geliştirmesi
  • Veritabanı Yönetimi
  • sözlüksel analiz
  • grafik programlama
  • Arama ve sıralama algoritmaları ve daha fazlası.
  1. Yığın Veri Yapısını açıklayın ve kullanım alanlarından bahsedin.

Yığın, basitçe, 'üst' olarak bilinen uçlardan yalnızca birinden ekleme ve silmeye izin veren sıralı bir listedir. Yığının en üst öğesi hakkında bilgi edinmemizi sağlayan 'üst' öğelerine bir işaretçiye sahip özyinelemeli bir Veri Yapısıdır. Öğe alma stratejisine dayalı olarak, Yığına Son Giren İlk Çıkar olarak da bilinir, çünkü yığına itilen son öğe en üstte olur ve ilk dışarı atılır. Yığın Veri Yapısının bazı kullanımları şunlardır:

  • Geri izleme
  • Bellek yönetimi
  • İşlev dönüşü ve arama
  • İfade değerlendirmesi
  1. Yığın üzerinde yapılabilecek işlemler nelerdir?

Yığın Veri Yapısı aşağıdaki üç işlemi destekler:

  • push() — Yığının en üst konumuna bir öğe eklemek için.
  • pop() - bir öğeyi Yığının tepesinden çıkarmak için.
  • peek() - Yığının üstünde bulunan öğeyi Yığından çıkarmadan kontrol etmek için.
  1. Postfix İfadeleri hakkında ne anlıyorsunuz?

Postfix Expression, operatörlerin işlenenleri takip ettiği bir ifadedir. Bu, herhangi bir alt ifadenin parantez içinde gruplandırılmasını gerektirmediğinden ve hatta operatör önceliğini dikkate almadığından, hesaplama açısından son derece faydalıdır. a+b ifadesi, postfix'te basitçe ab+ olarak temsil edilir.

  1. 2B dizi öğeleri bellekte nasıl saklanır?

2 boyutlu bir dizinin öğeleri, iki yoldan biriyle bellekte saklanabilir:

  • Row-Major: Bu yöntemde önce dizinin tüm satırları bitişik olarak bellekte saklanır. İlk olarak, 1. sıra tamamen saklanır, ardından 2. sıra ve sonuncusuna kadar böyle devam eder.
  • Column-Major: Bunda dizinin tüm sütunları sürekli olarak bellekte saklanır. İlk olarak, 1. sütun tamamen saklanır, ardından 2. sütun vb.
  1. Bağlantılı Liste Veri Yapısını tanımlayın.

Bağlantılı Listeler, rastgele depolanan nesneler olan düğüm koleksiyonlarıdır. Her düğümün iki dahili öğesi vardır - bir Veri alanı ve bir Bağlantı alanı. Veri alanı, belirli bir düğümün sahip olduğu değeri tutarken, Bağlantı alanı, bu düğümün bağlı olduğu bir sonraki düğüme yönelik bir işaretçiye sahiptir. Duruma bağlı olarak, Bağlantılı Liste hem doğrusal hem de doğrusal olmayan Veri Yapısı olarak düşünülebilir.

  1. Bağlantılı Listeler hangi yönlerden dizilerden daha iyidir?

Bağlantılı Listeler, aşağıdaki şekillerde dizilerden daha iyidir:

  • Dizi boyutları çalışma zamanında sabitlenir ve daha sonra değiştirilemez, ancak Bağlantılı Listeler gereksinimlere göre gerçek zamanlı olarak genişletilebilir.
  • Bağlantılı Listeler, bellekte bitişik olarak depolanmaz, sonuç olarak, statik olarak depolanan dizilerden çok daha verimli belleklerdir.
  • Herhangi bir Bağlantılı Listede saklanabilecek eleman sayısı sadece kullanılabilir bellek alanı ile sınırlıdır, eleman sayısı ise dizinin boyutuna bağlıdır.
  1. C programlama dilinde, heterojen bağlantılı bir liste uygulamak için hangi işaretçiyi kullanırsınız?

Heterojen bağlantılı listeler, adından da anlaşılacağı gibi, farklı veri türlerini içerir. Sonuç olarak, burada sıradan işaretçiler kullanmak mümkün değildir. Bu nedenle, Void işaretçileri normalde böyle bir senaryoda kullanılır, çünkü her türlü değere işaret edebilirler.

  1. Çift Bağlantılı Liste nedir?

Adından da anlaşılacağı gibi, Çift Bağlantılı Liste, hem sonraki hem de önceki düğümlere bağlı düğümleri olan bir Bağlantılı Listedir. Sonuç olarak, Doubly Linked List düğümlerinde iki değil üç alan bulunur:

  • Veri Alanı
  • Sonraki işaretçi (bir sonraki düğümü işaret etmek için)
  • Önceki işaretçi (önceki düğümü işaret etmek için)
  1. Kuyruk Veri Yapısını bazı uygulamalarıyla açıklayın.

Bir Kuyruk, öğelerin bir değil iki uçtan eklenmesine ve silinmesine izin veren sıralı bir listedir - ARKA ve ÖN olarak adlandırılır. Ekleme ÖN uçtan, silme ARKA uçtan gerçekleşir. Bunun bir sonucu olarak, Kuyruk genellikle İlk Giren İlk Çıkar (FIFO) olarak adlandırılır. Veri Yapısı Olarak Kuyrukların bazı yaygın uygulamaları şunlardır:

  • CPU, yazıcı, disk vb. gibi tek tek paylaşılan kaynaklar için bekleme listeleri için.
  • Eşzamansız veri aktarımı için, örnek dosya IO, soketler, borular.
  • Medya oynatıcı uygulamalarının çoğunda arabellek olarak.
  • Kesintileri işlemek için İşletim Sistemlerinde.
  1. Dizileri kullanarak Kuyrukları uygulamanın bazı sakıncalarını listeleyebilir misiniz?

Dizilerle Kuyrukları uygularken ortaya çıkan başlıca iki dezavantaj vardır:

  • Diziler statik veri yapıları olduğundan, belleğin yanlış yönetimi, bu nedenle Kuyrukları dizilerle uygulamak Kuyrukların birçok işlevini kaldırır.
  • Dizi boyutları dizi tanımı sırasında tanımlandığından boyutla ilgili sorun. Bu nedenle, kuyruğumuza dizinin boyutundan daha fazla eleman eklemek istersek, bu mümkün olmayacaktır.
  1. Bir elemanın dairesel bir kuyruğa eklenmesi için hangi koşullar yerine getirilmelidir?

Döngüsel sıralara eklemeyle ilgili bazı koşullar şunlardır:

  • Eğer (arka + 1)%maxsize == ön -> bu, sıranın dolu olduğu anlamına gelir -> artık ekleme mümkün değildir.
  • Eğer arka != max – 1 ise, arka değeri maxsize'a artırılır ve arka uca yeni bir değer eklenir.
  • Ön != 0 ve arka == max -1 –> ise bu, sıranın dolu olmadığı anlamına gelir. Böylece, arka değeri 0'a ayarlanır ve dairesel kuyruğun arka ucuna yeni bir eleman eklenir.

16. Dequeue nedir?

Çift Uçlu Kuyruk veya deque, arkadan ve önden her iki uçtan da ekleme ve silmeyi kolaylaştıran sıralı bir öğeler kümesidir. Bunun bir sonucu olarak, bu kuyruk veri yapısından bile daha esnektir.

  1. Ağaç Veri Yapısını tanımlayın ve bazı ağaç türlerini listeleyin.

Ağaç, çeşitli düğümler içeren doğrusal olmayan, özyinelemeli bir veri yapısıdır. Belirli bir düğüm, diğer tüm düğümlerin ortaya çıktığı ağacın kökü olarak belirlenir. Kök dışında, diğer tüm düğümlere alt düğümler denir. Genel olarak aşağıdaki Ağaç Veri Yapıları türleri vardır:

  • Genel Ağaçlar
  • İkili Ağaçlar
  • İkili Arama Ağaçları
  • Ormanlar
  • İfade Ağacı
  • Turnuva Ağacı
  1. Kabarcık sıralama nasıl çalışır?

Bubble Sort, en çok kullanılan sıralama algoritmalarından biridir ve dizilerle, bitişik öğeleri karşılaştırarak ve değerlerine göre konumlarını değiştirerek kullanılır. Kabarcık sıralama denir çünkü nasıl çalıştığının görselleştirilmesi, suyun üstünden yüzen baloncuklar ve daha büyük varlıkların batması gibidir.

Okuyun: C'de Veri Yapıları & Nasıl Kullanılır?

  1. Mevcut en hızlı sıralama algoritması hangisidir?

Birleştirilmiş sıralama, hızlı sıralama, kabarcık sıralama ve daha fazlası gibi birçok farklı sıralama algoritması mevcuttur. Bunların arasından, performansları girdi verilerine, algoritmanın verileri işledikten sonraki tepkisine ve bunların nasıl depolandığına bağlı olarak büyük ölçüde değiştiği için nesnel olarak en hızlı olan belirli bir algoritma seçemiyoruz.

  1. İkili Ağaçlar nedir?

İkili Ağaçlar, her düğümün EN ÇOK iki çocuğa sahip olabileceği özel ağaç türleridir. İşleri kolaylaştırmak için, İkili Ağaçlar genellikle üç ayrık kümeye ayrılır - kök düğüm, sağ alt ağaç ve sol alt ağaç.

  1. AVL Ağaçları, BST'ye kıyasla çeşitli işlemlerde nasıl kullanılabilir?

AVL ağaçları boy dengeli ağaçlardır, bu nedenle ağacın herhangi bir tarafından eğrilmesine izin vermezler. h yüksekliğindeki BST'de yapılan tüm işlemler için geçen süre O(h)'dir. Bununla birlikte, en kötü senaryoda - BST'nin çarpık hale geldiği - O(n) olarak devam edebilir. AVL, ağacın yüksekliğini kısıtlayarak bu sınırlamanın ortadan kaldırılmasına yardımcı olur. Bunu yaparken, tüm işlemlere maksimum O(log n) olacak şekilde bir üst sınır uygular, burada n = düğüm sayısı.

  1. B Ağacının özellikleri nelerdir?

m düzeyindeki bir B Ağacı aşağıdaki özellikleri içerir:

  • M-yollu bir ağacın tüm özellikleri.
  • B_tree'nin her düğümü maksimum m çocuğa sahip olacaktır.
  • Kök ve yaprak dışındaki her düğümün en az m / 2 çocuğu olacaktır.
  • Kök düğümün en az 2 alt düğümü olmalıdır.
  • Tüm yaprak düğümleri aynı yatay seviyede yer almalıdır.
  1. Grafik Veri Yapısı hakkında ne anlıyorsunuz?

Grafik (G) Veri Yapısı, sıralı bir G(V,E) kümesi olarak tanımlanabilir; burada V, köşeler kümesini temsil eder ve E, bağlantıları oluşturan kenarlardır. Temel olarak, bir Grafik, düğümlerin yalnızca ebeveyn-çocuk ilişkilerini değil, aralarındaki karmaşık ilişkileri sürdürebildiği döngüsel bir ağaç olarak düşünülebilir.

  1. Grafik Veri Yapısını referans alarak döngü, yol ve devre arasında ayrım yapın.

Döngü, yol ve devre arasındaki farklar aşağıdaki gibidir:

  • Yama, herhangi bir kısıtlama olmaksızın kenarlarla birbirine bağlanan komşu köşelerin bir sırasıdır.
  • Bir döngü, ilk tepe noktasının son tepe noktası ile aynı olduğu kapalı bir yoldur. Bir döngüde, belirli bir verte iki kez ziyaret edilemez.
  • Bir devre, bir döngü gibi, ilk tepe noktası bitiş tepe noktasıyla aynı olan kapalı bir yoldur. Bununla birlikte, bir devredeki belirli herhangi bir tepe noktası birden fazla kez ziyaret edilebilir.
  1. Kruskal'ın algoritması nasıl çalışır?

Kruskal Algoritması, grafiği bir orman ve düğümlerinin her birini ayrı bir ağaç olarak kabul eder. Bir ağacın başka bir ağaca ancak ve ancak tüm seçenekler arasında en düşük maliyetliyse ve Minimum Yayılma Ağacının (MST) hiçbir özelliğini ihlal etmiyorsa bağlandığı söylenir.

İlgili: Veri Yapısında İkili Ağaç

  1. Prim'in algoritması yayılan ağacı nasıl buluyor?

Prim'in algoritması, düğümleri tekli ağaçlar olarak ele alarak çalışır. Ardından, gerekli yayılma ağacına dönüştürülmesi gereken verilen grafikten yayılan ağaca yeni düğümler eklemeye devam eder.

  1. Minimum kapsayan ağaç (MST) nedir?

Ağırlıklı grafiklerde MST'ler, minimum ağırlığa sahip ancak tüm köşelere yayılan ağaçlardır.

  1. Özyinelemeli işlev nedir?

Tanım olarak, özyinelemeli bir işlev kendisini geri çağırır veya doğrudan onu çağıran bir işlevi çağırır. Her özyinelemeli işlevin bazı temel ölçütleri vardır, ardından işlevin kendisini çağırmayı durdurur.

  1. Enterpolasyon arama tekniği nedir?

Enterpolasyon arama tekniği, Binary Search yönteminin üzerinde bir değişikliktir. Enterpolasyon arama algoritması, istenen değerlerin problama pozisyonu üzerinde çalışır.

  1. hash nedir?

Hashing, bir dizi anahtar-değer çiftini bir dizinin indekslerine dönüştürmek için kullanılan çok kullanışlı bir tekniktir. Hash tabloları, yalnızca anahtar/değer çiftini sağlayarak veri dizininin kolayca bulunabileceği ilişkisel veri depolaması oluştururken kullanışlıdır!

Sonuç olarak

Veri Yapıları, Bilgisayar Biliminde gerçekleşen her şeyin gerçekten temelidir. Bilgisayar Biliminin daha karmaşık uygulamaları, yani Veri Bilimi, Makine Öğrenimi, Yapay Zeka, IoT bile Veri Yapıları ve Algoritmaların üzerine inşa edilmiştir.

Bu nedenle, yeni çağ alanlarından herhangi birinde kariyer yapmak isteyen yeni başlayan biriyseniz, Veri Yapıları ve Algoritmalarda uzmanlaşarak başlamanız önerilir. Veya yeni başlayanlar için tasarlanmış Veri Biliminde Yönetici PG Programı kursumuza da göz atabilirsiniz . Sıfırdan öğrenin ve bir Veri Bilimi uzmanı olun. Bugün kaydolun!

Hangi iş rolü için mülakatlar genellikle Veri Yapısı ve Algoritma soruları sorar?

Herhangi bir yazılım geliştirme veya mühendislik rolü için oturuyorsanız, kesinlikle DSA becerilerinizi kontrol edeceksiniz. Bunun dışında, Veri Bilimi işlerine başvuruyorsanız veya Makine Öğrenimi'ne girmek istiyorsanız, DSA'yı bilmeniz beklenir.

Veri Yapısını ve Algoritmaları anlamak için programlama bilmem gerekir mi?

Hayır, zorunlu değil. DSA çoğunlukla soyuttur ve tamamı, herhangi bir uygulamanın veya programın perde arkasında neler olup bittiğinin matematiği, temsilleri ve akışı ile ilgilidir. Algoritmaları uyguladığınızda programlama konusunda deneyim sahibi olmak işe yarayacak olsa da, DSA'yı incelemek için hiçbir şekilde bir ön koşul değildir.

Veri Yapıları her zaman statik midir?

Hayır, Veri Yapıları, bellek ayırmanın kendileri için çalışma şekline bağlı olarak hem dinamik hem de statik olabilir. Örneğin, Diziler statik veri yapılarıdır, çünkü tanımlandıklarında kendilerine çok sayıda bitişik bellek tahsis edilir. Öte yandan Bağlantılı Listeler, sabit bir boyutu olmadığı ve programcının gereksinimlerine bağlı olarak düğüm sayısı artabileceği için dinamik Veri Yapılarıdır.