En İyi 50 Dizi Röportaj Soruları ve Cevapları (2026)

Bir Array mülakatına mı hazırlanıyorsunuz? Karşınıza çıkabilecek sorulara odaklanmanın zamanı geldi. {{keyword}}'ü anlamak, adayların analitik düşünme, mantık ve problem çözme yeteneklerini etkili bir şekilde ortaya koymalarına yardımcı olur.

Diziler, programcılar için teknik ve mesleki deneyimin temelini oluşturur. Yeni mezunlardan kıdemli profesyonellere kadar, dizilere hakim olmak, güçlü teknik uzmanlığı ve veri manipülasyonunda kök düzeyinde deneyimi gösterir. İşverenler, soru-cevap oturumlarında bu tür becerilere değer verir.ping Adaylar, kendinden emin analiz yetenekleri ve pratik becerileriyle genel, ileri düzey veya sözlü sınav aşamalarını başarıyla geçiyorlar.

85'ten fazla teknik lider, yönetici ve profesyonelin görüşlerine dayanan bu koleksiyon, sektörler genelinde farklı bakış açılarını kapsayarak her dizi konusunun gerçek işe alım beklentilerini ve gerçek dünya kodlama değerlendirme standartlarını yansıtmasını sağlar.

Dizi Mülakat Soruları ve Cevapları

En İyi Dizi Mülakat Soruları ve Cevapları

1) Dizinin ne olduğunu ve diğer veri yapılarından nasıl farklı olduğunu açıklayın.

Dizi, aynı veri türündeki birden fazla öğeyi depolayan bitişik bir bellek bloğudur. Dizinleri aracılığıyla herhangi bir öğeye sabit zamanlı erişim sağlar ve bu da onu rastgele erişim için en verimli yapılardan biri yapar. Bağlantılı listelerin aksine, dizilerin sabit boyutu vardır ve işaretçileri depolamak için ek yük gerektirmez. Öğe sayısı önceden bilindiğinde diziler tercih edilirken, sık sık yeniden boyutlandırma beklendiğinde listeler veya vektörler gibi dinamik yapılar kullanılır.

Özellik Dizi Bağlantılı liste
Bellek Ayırma Bitişik bitişik olmayan
Erişim süresi O (1) O (n)
Ekleme/Silme pahalı Verimli
Bellek Yükü Düşük Yüksek (işaretçiler)

👉 Ücretsiz PDF İndirme: Dizi Mülakat Soruları ve Cevapları


2) Dizilerin farklı türleri nelerdir? Örnekler verin.

Diziler, boyutlarına ve kullanım alanlarına göre kategorilere ayrılır. Başlıca türleri şunlardır:

  • Tek boyutlu dizi: Öğeleri doğrusal olarak depolar, örneğin, int arr[5] = {1,2,3,4,5}.
  • İki boyutlu dizi: Tablo verilerini, örneğin matrisleri temsil eder.
  • Çok boyutlu dizi: Simülasyonlarda veya görüntü işlemede sıklıkla kullanılan daha yüksek boyutlar.
  • Dinamik diziler: Örn. öğeler eklendiğinde otomatik olarak yeniden boyutlandır ArrayList in Java, vector in C++.
Menşei Structure Örnek E-posta
1D doğrusal [1, 2, 3]
2D Matris [[1, 2], [3, 4]]
Hareketlilik Resizable std::vector<int>

3) Bir dizideki en büyük ve en küçük elemanları nasıl bulursunuz?

Bu sorun genellikle doğrusal bir geçiş kullanılarak çözülür. İki değişkeni (biri minimum, diğeri maksimum) korur ve yineleme sırasında güncellersiniz.

Algoritma:

  1. başlat min hem de max ilk elemanla.
  2. Diziyi dolaşın ve her bir öğeyi karşılaştırın.
  3. Güncelle min or max buna göre.

Örnek (C++):

int arr[] = {5, 2, 9, 1, 7};
int min = arr[0], max = arr[0];
for (int i : arr) {
    if (i < min) min = i;
    if (i > max) max = i;
}

Zaman Karmaşıklığı: Açık).


4) Dizilerin avantajları ve dezavantajları nelerdir?

Diziler rastgele erişim için yüksek performans sağlar ancak sabit boyuta ve maliyetli yeniden boyutlandırmaya sahiptir.

Görünüş Avantajlar Dezavantajlar
Performans Hızlı indeksleme (O(1)) Yavaş ekleme/silme (O(n))
Bellek Kompakt depolama Statik boyut tahsisi
Uygulama Basit sözdizimi Bazı dillerde sınır kontrolü yok
Kullanım çantası Sabit veri kümeleri için uygundur Sık değişiklikler için verimsiz

5) Statik ve dinamik diziler arasındaki farkı açıklayınız.

A statik dizi derleme zamanında belirlenen sabit bir boyuta sahipken, dinamik dizi Çalışma zamanı sırasında büyüyebilir veya küçülebilir. Statik diziler bellekte verimlidir ancak katıdır, dinamik diziler ise yeniden boyutlandırma sırasında hafif bir ek yük pahasına esneklik sağlar.

Özellik Statik Dizi Dinamik Dizi
Beden Sabit Değişken
Bellek Yığın yığın
Örnek E-posta int arr[5]; std::vector<int>
yeniden boyutlandırma Desteklenmez destekli

Örnek Kullanım Durumu:
Gömülü sistemlerde statik dizileri, öngörülemeyen boyuttaki koleksiyonlarda ise dinamik dizileri kullanın.


6) Bir diziyi yerinde nasıl tersine çevirebilirsiniz?

RevBir diziyi yerinde değiştirmek, takas işlemini içerir.ping İki uçtan merkeze doğru hareket eden unsurlar.

Algoritma:

  1. İki işaretçiyi başlat: start = 0 hem de end = n - 1.
  2. Öğeleri değiştir arr[start] hem de arr[end].
  3. artım start ve azalma end tanışana kadar.

Örnek (Python):

arr = [1, 2, 3, 4, 5]
arr.reverse()  # Built-in method
# or manually
arr = arr[::-1]

Zaman Karmaşıklığı: Açık), Uzay Karmaşıklığı: O(1).


7) Pürüzlü dizi ile çok boyutlu dizi arasındaki fark nedir?

A engebeli dizi iç dizilerin farklı uzunluklara sahip olabildiği bir dizi dizisidir, oysa çok boyutlu dizi satır ve sütun boyutları aynıdır.

Özellik pürüzlü Dizi Çok Boyutlu Dizi
Structure Düzensiz (iç içe diziler) Dikdörtgen (matris)
Bellek bitişik olmayan Bitişik
giriş arr[i][j] arr[i][j]
Örnek E-posta int[][] jagged = {{1,2}, {3,4,5}}; int[,] matrix = {{1,2}, {3,4}};

Veriler eşit olmadığında, düzensiz diziler bellek açısından daha verimlidir.


8) 1'den n'e kadar olan bir dizide eksik sayıyı nasıl bulursunuz?

Bu problemde doğal sayıların matematiksel özelliklerinden yararlanılmaktadır.

Yaklaşım 1 (Toplam Formülü):
İlk toplamı n doğal sayılar = n*(n+1)/2.

AlttracBu toplamdan dizi elemanlarının toplamını alın.

Yaklaşım 2 (XOR):
1'den n'e kadar olan tüm sayıları XOR'a tabi tutun. Geriye kalan değer eksik sayıdır.

Örnek:
Her Ticaretçi İçin Mükemmellik [1,2,4,5,6] (n=6):

Beklenen toplam = 21, Gerçek toplam = 18 → Eksik = 3.

Zaman Karmaşıklığı: Açık), Uzay Karmaşıklığı: O(1).


9) Bir diziden yinelenenleri kaldırmanın farklı yolları nelerdir?

Dile ve kısıtlamalara bağlı olarak çeşitli yaklaşımlar mevcuttur:

  • HashSet Kullanımı: Sadece benzersiz öğeleri saklayın.
  • Sıralama Kullanımı: Diziyi sıralayın ve bitişikteki yinelenenleri kaldırın.
  • Frekans Haritası Kullanımı: TracHer bir elementin k sayısı.

Örnek (Java):

Set<Integer> unique = new HashSet<>(Arrays.asList(arr));
Yaklaşım Zaman Uzay
Karma Kümesi O (n) O (n)
sınıflandırma O (n günlük n) O (1)
Sıklık O (n) O (n)

10) Bir dizideki ikinci en büyük eleman nasıl bulunur?

İki değişkeni koruyarak tek bir geçişle ikinci en büyük elemanı bulabilirsiniz.

Algoritma:

  1. başlat first hem de second as INT_MIN.
  2. Diziyi dolaş.
  3. Daha büyük bir değer bulunduğunda her ikisini de güncelleyin.

Örnek (C++):

int first = INT_MIN, second = INT_MIN;
for (int x : arr) {
    if (x > first) {
        second = first;
        first = x;
    } else if (x > second && x < first) {
        second = x;
    }
}

Zaman Karmaşıklığı: Açık), Uzay Karmaşıklığı: O(1).


11) Bir diziyi 'k' pozisyon kadar nasıl döndürebilirsiniz? Farklı yaklaşımları açıklayın.

Dizi döndürme, öğeleri döngüsel olarak kaydırır. üç ana yöntem başarmak için:

  1. Geçici Dizi Kullanımı: İlk k elemanı kopyalayın ve diğerlerini kaydırdıktan sonra bunları sona ekleyin.
  2. kullanma Reversal Algoritması: Reverse Dizinin üç bölümü – birinci bölüm, ikinci bölüm, ardından dizinin tamamı.
  3. Juggling Algoritmasının Kullanımı: n ve k'nin EBOB'una dayalı (O(n)'de verimli).

Örnek (2'li Sağa Döndürme):

Input: [1,2,3,4,5]
Output: [4,5,1,2,3]
Yöntem Zaman Uzay Açıklama
Geçici Dizi O (n) Tamam) Basit ve sezgisel
RevErsal O (n) O (1) Yerinde ve verimli
jonglörlük O (n) O (1) GCD döngülerine dayalı

12) Alt dizi nedir ve alt dizilerden farkı nedir?

A alt dizi bir dizinin bitişik bir bölümüdür, oysa alt dizi düzeni korur ancak bazı unsurları atlayabilir.

Varlığınızı alt dizi Alt dizi
Bitişik Evet Yok hayır
Düzen Korundu Evet Evet
Örnek ([1,2,3]'ten) [1,2] [1,3]

Örnek:
Verilen dizi [1,2,3], toplam alt diziler = n*(n+1)/2 = 6.

Öte yandan alt diziler, 2ⁿ - 1 = 7 boş olmayan kombinasyonlar.


13) Maksimum toplam alt dizisini nasıl bulursunuz?

MKS Kadane Algoritması maksimum toplama sahip bitişik alt diziyi bulmanın en verimli yoludur.

Adımlar:

  1. başlat max_current = max_global = arr[0].
  2. Öğeler arasında yineleme yapın.
  3. Güncelle max_current = max(arr[i], arr[i] + max_current).
  4. Track, küresel maksimumdur.

Örnek:
Giriş: [-2,1,-3,4,-1,2,1,-5,4] → Çıktı: 6 (alt dizi [4,-1,2,1]).

karmaşıklık:
O(n) zaman, O(1) uzay.


14) Ekstra alan kullanmadan iki sıralı diziyi nasıl birleştirebilirsiniz?

İki sıralı diziyi birleştirmek için Yerinde, fikir her iki dizinin sonundan karşılaştırmaktır.

Yaklaşım:

  1. Her iki dizinin de geçerli son elemanından başla.
  2. Karşılaştırın ve büyük olanı birleşik alanın sonuna taşıyın.
  3. Tüm öğeler birleştirilene kadar tekrarlayın.

Örnek (C++):

int i = m-1, j = n-1, k = m+n-1;
while (i >= 0 && j >= 0) {
    if (A[i] > B[j]) A[k--] = A[i--];
    else A[k--] = B[j--];
}

Zaman Karmaşıklığı: O(m+n).


15) Bir dizideki bir elemanı aramanın farklı yolları nelerdir?

Yöntem Menşei Zaman Karmaşıklığı Örnek Kullanım
Doğrusal Arama Sınıflandırılmamış O (n) Genel arama
Ikili arama sıralama O (log n) Verimli arama
Çırpı Sıralanmamış O(1) ortalama Büyük veri kümeleri

Örnek (İkili Arama – Python):

def binary_search(arr, x):
    l, r = 0, len(arr)-1
    while l <= r:
        mid = (l+r)//2
        if arr[mid] == x: return mid
        elif arr[mid] < x: l = mid+1
        else: r = mid-1
    return -1

16) Dizilerde sığ kopyalama ile derin kopyalama arasındaki farkı açıklayınız.

A sığ kopya orijinal öğelere yapılan referansları kopyalarken, derin kopya tüm verileri yeni bellek konumlarına kopyalar.

Kopyalama Türü Veri Bağımsızlığı Örnek E-posta
Sığ Yok hayır arr_copy = arr
Derin Evet arr_copy = arr[:] (Python)

Örnek:
Sığ bir kopyanın değiştirilmesi orijinal diziye yansır; derin kopya ise bunu yapmaz.


17) Ekstra alan kullanmadan bir dizideki tekrarları nasıl bulursunuz?

Yaklaşım 1 (Sıralama): Yan yana olan elemanları sıralayın ve kontrol edin.

Yaklaşım 2 (1–n değerleri için Olumsuzluk Yöntemi): Mark, o indeksteki öğeyi olumsuzlayarak indeksleri ziyaret etti.

Yaklaşım 3 (Floyd Döngüsü Algılama): Diziyi bağlı liste olarak ele al ve döngüyü bul ([1..n] aralığındaki tekrarlanan elemanlar için).

Örnek:
Dizi [3,1,3,4,2] → Kopyala = 3.

Saat: Açık), Alan: O(1).


18) Seyrek diziler nelerdir ve faydaları nelerdir?

A seyrek dizi Çoğunlukla sıfır veya varsayılan değerler içerir. Tüm öğeleri depolamak yerine, yalnızca indeksleriyle birlikte sıfır olmayan girdileri depolarız.

Avantajları:

  • Hafızadan tasarruf sağlar.
  • Matrisler veya belge terim frekansları gibi büyük veri kümeleri için etkilidir.
Menşei Örnek E-posta Kullanım çantası
Yoğun Dizi [0,1,0,2,3] Küçük veriler
Seyrek Dizi {1:1, 3:2, 4:3} Büyük ve seyrek veriler

Örnek: Makine öğrenmesi modellerinde (TF-IDF matrisleri) kullanılır.


19) İki dizinin kesişimini etkili bir şekilde nasıl bulabilirsiniz?

Kesişimler karma veya sıralama teknikleri kullanılarak bulunabilir.

  • HashSet Kullanımı: İlk dizinin elemanlarını ekleyin, ardından ikinci dizinin üyeliğini kontrol edin.
  • İki İşaretçinin Kullanımı: Sıralanmış diziler için çalışır.

Örnek (Python):

intersection = list(set(arr1) & set(arr2))

karmaşıklık:

  • HashSet: O(n)
  • İki İşaretçi: Sıralamadan dolayı O(n log n).

20) Dizilerde satır-ana sıralama ile sütun-ana sıralama arasındaki farkı açıklayınız.

Bunlar çok boyutlu diziler için kullanılan bellek depolama düzenleridir.

Konsept Satır-Majör (C/C++) Sütun-Büyük (Fortran, MATLAB)
Depolama Siparişi Satır Satır Sütun Sütun
Adres Formülü Base + ((i * cols) + j) * size Base + ((j * rows) + i) * size
Avantajları Satır geçişi için daha hızlı Sütun geçişi için daha hızlı

Örnek:
2 boyutlu bir dizi için A[2][3], sıralı büyük mağazalar [A[0][0], A[0][1], A[0][2], A[1][0], ...].


21) Önek toplama tekniği nedir ve dizilerde nasıl kullanılır?

MKS önek toplamı Bu teknik, aralık sorgularını verimli bir şekilde yanıtlamak için bir dizinin kümülatif toplamlarının önceden hesaplanmasını içerir.

Konsept:

prefix[i] = prefix[i-1] + arr[i]

Daha sonra l'den r'ye kadar olan elemanların toplamını almak için şunu kullanın:

sum(l, r) = prefix[r] - prefix[l-1]

Örnek:

Dizi = [2, 3, 5, 7, 1]

Önek = [2, 5, 10, 17, 18]

Toplam(2,4) = prefix[4] - prefix[1] = 15

Uygulamalar:
Alt dizi toplam sorgularında, kümülatif frekans tablolarında ve rekabetçi programlamada kullanılır.

karmaşıklık:
Ön işleme: O(n), Sorgu: O(1)


22) Kayan pencere tekniği dizi performansını nasıl iyileştirir?

MKS sürgülü pencere tekniği, bitişik segmentleri (alt dizileri) içeren problemleri etkili bir şekilde çözmek için kullanılır.

Fikir: Her pencere için toplamı veya koşulu yeniden hesaplamak yerine, bir sonraki öğeyi ekleyerek ve ilk öğeyi kaldırarak sonucu güncelleyin.

Örnek Sorun:
Boyuttaki maksimum toplam alt diziyi bulun k.

Algoritma:

  1. İlk toplamın hesaplanması k elemanları.
  2. Pencereyi birer birer kaydırın.
  3. Yeni öğeyi ekleyin, ilkini kaldırın ve track maksimum değerdir.

Zaman Karmaşıklığı: O(n) — saf O(n×k) yaklaşımından çok daha hızlı.

Uygulamalar:
Maksimum ortalama alt dizi, en uzun alt dize veya her penceredeki ilk negatif sayı gibi problemlerde kullanılır.


23) C dilinde dizi ile işaretçi arasındaki fark nedir?

Özellik Dizi Işaretçi
Tanım Benzer veri öğelerinin toplanması Bellek adresini depolayan değişken
Bellek Ayırma Bitişik Dinamik veya keyfi
Beden Sabit Yeniden boyutlandırılabilir
Örnek E-posta int a[5]; int *p;

Anahtar Fark:
Dizi adı sabit bir işaretçi gibi davranır, ancak bir işaretçi dinamik olarak herhangi bir yeri işaret edebilir.

Örnek:

int arr[3] = {1,2,3};
int *ptr = arr;  // ptr points to first element

24) Bir dizide denge indeksini nasıl bulabilirsiniz?

An denge endeksi soldaki elemanların toplamının sağdaki elemanlara eşit olduğu konumdur.

Algoritma:

  1. Dizinin toplamını hesapla.
  2. Sol toplamı geç ve koru.
  3. If (total_sum - left_sum - arr[i]) == left_sum, dönüş indeksi.

Örnek:
Dizi: [1, 3, 5, 2, 2] → İndeks = 2 (çünkü sol toplam = sağ toplam = 4)

karmaşıklık: Açık), Alan: O (1)


25) Seyrek matrisler nelerdir ve nasıl verimli bir şekilde saklanırlar?

A seyrek matris Çoğunlukla sıfırlardan oluşur. Bellek tasarrufu için yalnızca sıfır olmayan elemanlar ve bunların indeksleri saklanır.

Depolama Yöntemleri:

  1. Koordinat Listesi (COO): (Satır, sütun, değer) depola.
  2. Sıkıştırılmış Seyrek Satır (CSR): Üç dizi: values, col_index, row_pointer.
  3. Anahtar Sözlüğü (DOK): (Satır, sütun) → değerin karma haritası.
Yöntem Bellek Verimliliği Örnek Kullanım
COO ılımlı Genel depolama
KSS Yüksek Sayısal hesaplamalar
D.O.K. Esnek Dinamik ekleme

Yaygın olarak kullanılır makine öğrenme (TF-IDF, grafik komşuluk matrisleri).


26) Çift ve tek sayıların dönüşümlü olarak yer aldığı bir diziyi nasıl yeniden düzenlersiniz?

Amaç, çift ve tek sayıları, aralarındaki göreceli sırayı koruyarak iç içe geçirmektir.

Algoritma:

  1. Çift ve tek dizileri ayırın.
  2. Çift veya tek sayıyla başlayarak dönüşümlü olarak birleştirin.
  3. Bir tür tükenirse kalanını ekleyin.

Örnek:

Input: [3, 6, 12, 1, 5, 8]
Output: [6, 3, 12, 1, 8, 5]

karmaşıklık: O (n)


27) Dizi döndürme ve dizi kaydırma arasındaki farkı açıklayınız.

Çalışma rotasyon Shifting
Tanım Elementler dairesel olarak hareket eder Öğeler hareket eder, boşalan yerler doldurulur (örneğin, 0'lar)
Örnek E-posta [1,2,3,4] → [3,4,1,2] [1,2,3,4] → [0,1,2,3]
Veri Kaybı Yok hayır Evet
kullanım Döngüsel yeniden düzenlemeler Kuyruk uygulamaları

Özet olarak:
Dönme tersine çevrilebilir; kaydırma ise genellikle tersine çevrilemez.


28) Maksimum ürün alt dizisini nasıl bulabilirsiniz?

Kadane'nin algoritmasına benzer, ancak siz track, negatif değerler nedeniyle hem maksimum hem de minimum ürünleri etkiler.

Algoritma:

  1. başlat max_ending_here = min_ending_here = arr[0].
  2. Her ikisini de geçerli öğeye göre yineleyin ve güncelleyin.
  3. Track max_so_far.

Örnek:
Giriş: [2,3,-2,4] → Çıktı: 6 (alt dizi [2,3])

karmaşıklık: Açık), Alan: O (1)


29) Verilen toplama sahip alt dizilerin sayısını nasıl verimli bir şekilde sayabilirsiniz?

Yaklaşım (Önek Toplamı + Karma Harita):

  1. Yineleme sırasında çalışan toplamı koruyun.
  2. Her önek toplamı için, şunu kontrol edin: (current_sum - target) hash haritasında mevcuttur.
  3. Sayıyı buna göre artırın.

Örnek:

arr = [10,2,-2,-20,10], target = -10
Output = 3 subarrays

Zaman Karmaşıklığı: O (n)

Uzay Karmaşıklığı: O (n)


30) Dizi problemlerinde bit manipülasyonu nedir ve nerelerde uygulanır?

Bit manipülasyonu AND, OR, XOR ve shift gibi işlemleri yaparak problemleri etkin bir şekilde çözmeyi içerir.

Ortak Uygulamalar:

  • XOR kullanarak tekil olmayan elemanı bulma.
  • Bitmasking kullanarak bir alt kümenin var olup olmadığını kontrol etme.
  • Kümeleri bit vektörleri olarak temsil etmek.

Örnek:

Diğerleri iki kez görünürken bir kez görünen öğeyi bulun:

int res = 0;
for (int num : arr) res ^= num;

Avantajları:

  • Sabit alan
  • Hızlı mantıksal hesaplama

31) Bir matrisi spiral düzende nasıl geçersiniz?

A spiral geçiş tüm matris elemanlarını saat yönünde katman katman ziyaret eder.

Algoritma:

  1. Dört sınırı tanımlayın: top, bottom, left, ve right.
  2. Soldan → sağa, yukarıdan → aşağıya, sağdan → sola ve aşağıdan → yukarıya doğru hareket edin.
  3. Her geçişten sonra, tüm elemanlar kaplanana kadar sınırları daraltın.

Örnek:

Input:
1 2 3
4 5 6
7 8 9
Output: [1,2,3,6,9,8,7,4,5]

karmaşıklık:
Zaman: O(n×m) | Uzay: O(1)


32) Bir diziyi sıralamanın farklı yolları nelerdir? Örneklerle açıklayın.

Sıralama, öğeleri belirli bir düzende yeniden düzenler. Algoritma seçimi şunlara bağlıdır: veri boyutu, dağıtımı ve bellek kısıtlamaları.

Algoritma En iyi senaryo Ortalama Vaka Kararlı Uzay
Bubble Sırala O (n) O(n²) Evet O (1)
Sıralamayı Birleştir O (n günlük n) O (n günlük n) Evet O (n)
Hızlı sıralama O (n günlük n) O(n²) Yok hayır O (log n)
Yığın Sıralama O (n günlük n) O (n günlük n) Yok hayır O (1)

Örnek (Python Hızlı Sıralama):

def quicksort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr)//2]
    return quicksort([x for x in arr if x < pivot]) + [x for x in arr if x == pivot] + quicksort([x for x in arr if x > pivot])

33) Dizilerde iki işaretçi tekniğini açıklayınız.

MKS iki puanlık teknik farklı uçlardan veya hızlardan bir veri yapısını geçmek için iki endeks kullanır, böylece zaman ve mekandan tasarruf edilir.

Yaygın Kullanım Alanları:

  • Sıralanmış dizilerde verilen toplama sahip çiftlerin tespiti.
  • Yerinde yinelenenleri kaldırma.
  • Reversing dizileri.
  • Birleşen aralıklar.

Örnek (İle eşleştirin Target Toplam):

arr = [1,2,3,4,6], target = 6
left, right = 0, len(arr)-1
while left < right:
    s = arr[left] + arr[right]
    if s == target: print(arr[left], arr[right])
    elif s < target: left += 1
    else: right -= 1

karmaşıklık: O (n)


34) Bir dizideki çoğunluk elemanını nasıl bulabilirsiniz?

A çoğunluk unsuru ⌊n/2⌋ kereden fazla görünüyor.

Boyer-Moore Oylama Algoritması bunu doğrusal zaman ve sabit uzayda çözer.

Algoritma Adımları:

  1. başlat candidate hem de count = 0.
  2. Her bir element için:
    • Eğer sayım = 0 ise, ayarla candidate = element.
    • Eşitliğe göre sayıyı artırın/azaltın.
  3. Adayı doğrulayın.

Örnek: [3,2,3] → Çıktı: 3

karmaşıklık: O (n)


35) İkili arama ile üstel arama arasındaki fark nedir?

Özellik Ikili arama Üstel Arama
gereklilik Sıralanmış dizi Sıralanmış dizi
Ana Fikir Diziyi ikiye bölün İkili aramadan önce aralığı üstel olarak bulun
karmaşa O (log n) O (log n)
Kullanım çantası Bilinen boyut Bilinmeyen veya sonsuz diziler

Örnek:
Büyük veri kümeleri veya sınırsız diziler (sayfalandırılmış API'ler gibi) için üstel arama, aralığı verimli bir şekilde bulur.


36) Bir dizideki k'ıncı en küçük veya en büyük elemanı nasıl bulabilirsiniz?

Yaklaşımlar:

  1. Sıralama: Sıralama ve erişim k-1nci indeks (O(n log n)).
  2. Min/Maks Yığın: Sık sorgular için verimlidir (O(n log k)).
  3. QuickSelect (Hoare Algoritması): Ortalama O(n).

Örnek (Python heapq kullanarak):

import heapq
arr = [3,2,1,5,6,4]
k = 2
print(heapq.nlargest(k, arr)[-1])  # 5

Kullanım Örneği: Liderlik tabloları, en iyi performans gösteren metrikler, yüzdelik analiz.


37) 1'den n'e kadar olan bir dizide eksik ve tekrar eden sayıyı nasıl bulursunuz?

1'den n'e kadar sayıları içeren, bir tanesi eksik ve bir tanesi tekrar eden bir dizi verildiğinde:

Yaklaşım 1 (Matematiksel):
Gerçek ve beklenen toplam ile kareler toplamı arasındaki farkı kullanın.

Yaklaşım 2 (XOR Yöntemi):

  1. Dizinin tüm elemanlarını ve 1…n'yi XOR'la.
  2. Sonuç, eksik ve tekrar eden sayıların XOR'unu verir.
  3. En sağdaki set bitini kullanarak bölme işlemi yapın.

karmaşıklık: Açık), Alan: O (1)

Örnek:

Input: [4,3,6,2,1,1]
Output: Missing = 5, Repeating = 1

38) Bir dizideki ters çevirme sayıları nelerdir ve nasıl hesaplanır?

An evirme (i, j) çifti şu şekildedir: i < j hem de arr[i] > arr[j].

Yaklaşım:

  • Toy: Tüm çiftleri kontrol et → O(n²).
  • Optimize Edildi (Birleştirme Sıralaması): Birleştirme sırasında ters çevirmeleri say → O(n log n).

Örnek:

Input: [8, 4, 2, 1]
Inversions = 6 → (8,4), (8,2), (8,1), (4,2), (4,1), (2,1)

Kullanılan dizi bozukluğunun ölçülmesi hem de sıralama sistemleri.


39) Sıralanmış iki dizinin medyanını nasıl bulabilirsiniz?

Optimal Yaklaşım (İkili Arama):
Her iki diziyi, sol yarıdaki eleman sayısı sağ yarıdaki eleman sayısıyla aynı olacak şekilde bölün.

Algoritma:

  1. Daha küçük dizilerde ikili aramayı kullanın.
  2. Bölüm sınırlarını karşılaştırın.
  3. Bölüm değerlerine göre medyanı döndür.

karmaşıklık: O(log(min(n, m)))

Örnek:

A = [1,3], B = [2]
Median = 2.0

40) Bağlı listeler yerine dizileri kullanmanın avantajları nelerdir?

faktör Dizi Bağlantılı liste
Bellek Bitişik bitişik olmayan
Erişim süresi O (1) O (n)
Ekleme/Silme Pahalı Verimli
Önbellek Yerelliği Çok İyi Çok Zayıf
Kabin Üstü Hayır Ekstra işaretçi depolama

Sonuç:
Diziler, rastgele erişim gerektiren sabit boyutlu veri kümeleri için idealdir; bağlantılı listeler ise dinamik ekleme ve silme için daha iyidir.


41) Dairesel bir alt dizinin maksimum toplamı nasıl bulunur?

İçinde dairesel dizi, elemanlar sonunda sarılır.

Yaklaşım:

  1. Normal maksimum alt dizi toplamını kullanarak bulun Kadane Algoritması.
  2. Minimum alt dizi toplamını bulun.
  3. Sonuç = max(normal_max, total_sum - min_subarray).

Sınır Durum: Eğer tüm elemanlar negatif ise, maksimum elemanı döndür.

Örnek:

Input: [5, -2, 3, 4]
Normal Max = 10, Circular Max = 12 → Output = 12

karmaşıklık: O (n)


42) Döndürülmüş sıralı bir dizide bir eleman nasıl aranır?

Kullanmak değiştirilmiş ikili arama Pivotu bulmak ve karşılaştırmaları ayarlamak için.

Algoritma:

  1. Orta = (düşük + yüksek) / 2'yi bulun.
  2. Kontrol eğer arr[mid] == target.
  3. Eğer sol yarı sıralıysa → solda ara; aksi takdirde sağda ara.

Örnek:

Input: [4,5,6,7,0,1,2], target = 0
Output: Index = 4

Zaman Karmaşıklığı: O (log n)


43) “Maksimum Toplam Artan Alt Dizi” için dinamik programlama yaklaşımını açıklayınız.

Amaç, artan bir alt dizinin maksimum toplamını bulmaktır.

Algoritma:

  1. başlat dp[i] = arr[i].
  2. Her biri için i, önceki öğeleri kontrol edin j < i:
    • If arr[j] < arr[i], Daha sonra dp[i] = max(dp[i], arr[i] + dp[j]).
  3. Maksimum değeri döndür dp.

Örnek:

Input: [1, 101, 2, 3, 100, 4, 5]
Output: 106 (1 + 2 + 3 + 100)

Saat: O(n²) | Alan: O (n)


44) "Tuzak" nedir?ping Yağmur suyu sorunu ve nasıl çözülebilir?

Bu klasik dizi problemi, yağmurdan sonra çubuklar arasında ne kadar suyun tutulabileceğini sorar.

Yaklaşım (İki İpucu):

  1. başlat left, right, left_max, right_max.
  2. İşaretçileri içeriye doğru hareket ettirin, sıkışmış suyu güncelleyin = min(left_max, right_max) - height[i].

Örnek:

Input: [0,1,0,2,1,0,1,3,2,1,2,1]
Output: 6
Yaklaşım Zaman Uzay
Brute Force O(n²) O (1)
Dinamik program O (n) O (n)
İki İşaretçi O (n) O (1)

45) Toplamı sıfıra eşit olan en uzun alt diziyi nasıl bulabilirsiniz?

Algoritma (Karma Harita):

  1. Önek toplamlarını depolamak için bir karma haritası başlatın.
  2. Aynı önek toplamı tekrar görünürse, dizinler arasındaki alt dizinin toplamı sıfır olur.

Örnek:

Input: [15, -2, 2, -8, 1, 7, 10, 23]
Output: Length = 5 (Subarray [-2, 2, -8, 1, 7])

karmaşıklık: O (n)


46) Çok boyutlu dizilerin sığ ve derin düzleştirilmesi arasındaki fark nedir?

Menşei Tanım Örnek E-posta
Sığ Düzleşme Sadece bir seviyeyi düzleştirir [[1,2],[3,[4]]] → [1,2,3,[4]]
Derin Düzleşme Tüm iç içe geçmiş dizileri tamamen düzleştirir [[1,2],[3,[4]]] → [1,2,3,4]

Örnek (Python):

import itertools
shallow = list(itertools.chain.from_iterable(arr))

Kullanım Örneği: Veri temizliğinde ve hiyerarşik veri normalizasyonunda kullanışlıdır.


47) Bir matriste (2 boyutlu dizi) denge elemanı nasıl bulunur?

An denge elemanı Bir matriste bir eleman vardır satır ve sütun toplamları dengelidir.

Algoritma:

  1. Satır ve sütun toplamlarını önceden hesapla.
  2. Her bir öğe için, şunu kontrol edin: row_sum[i] - arr[i][j] == col_sum[j] - arr[i][j].

Örnek:

Matris:

Matrix:
2 7 5
3 1 1
4 6 8
Output: Element 1 at (1,1)

karmaşıklık: O(n²)


48) Bir diziyi eşit toplamlı iki alt kümeye nasıl bölebilirsiniz?

Bu bir alt küme-toplam problemi, kullanılarak çözüldü Dinamik program.

Yaklaşım:

  1. Toplam tutarı hesapla.
  2. Tek ise → False döndür.
  3. Alt kümenin olup olmadığını kontrol etmek için DP tablosu oluşturun sum/2 bulunmaktadır.

Örnek:

Input: [1,5,11,5]
Output: True (Subsets: [1,5,5] and [11])

Saat: O(n × toplam/2) | Alan: O(toplam/2)


49) Bir matrisi saat yönünde 90 derece nasıl döndürürsünüz?

Algoritma:

  1. Matrisi transpoze et.
  2. Reverse her sıra.

Örnek:

Input:
1 2 3
4 5 6
7 8 9
Output:
7 4 1
8 5 2
9 6 3

karmaşıklık: O(n²), Yerinde.

Kullanılan görüntü işleme hem de veri görselleştirme dönüşümleri.


50) Dizilerin gerçek dünyadaki en yaygın uygulamaları nelerdir?

Diziler çok sayıda hesaplamalı ve gerçek dünya sisteminin temelini oluşturur.

Uygulamalar:

  • Veritabanı İndeksleme: Kayıtların saklanması ve sınıflandırılması.
  • Makine öğrenme: Özellik vektörleri, matrisler ve tensörler.
  • Görüntü işleme: 2D ve 3D piksel verileri.
  • Operating Sistemleri: Bellek ve işlem planlama.
  • Ağ: Paket tamponlama ve yönlendirme.
  • Oyunlar: Oyuncu durumu tracKral ve ızgaralar.
domain Dizi Rolü
AI / ML Tensör ve matris gösterimi
DBMS Dizinleme ve arama optimizasyonu
Gömülü Sistemler Gerçek zamanlı sensör verileri
Cloud Computing Yük dağıtım dizileri

Diziler şunları sağlar: verimli veri organizasyonu, hesaplama ve ölçeklenebilirlik için omurga.


🔍 Gerçek Dünya Senaryoları ve Stratejik Yanıtlarla En İyi Dizi Mülakat Soruları

1) Dizi nedir ve diğer veri yapılarından nasıl farklıdır?

Adaydan beklenenler: Görüşmeyi yapan kişi, dizilerin amacı, yapısı ve bunların bağlantılı listeler veya karma haritalar gibi diğer veri türlerinden nasıl farklılaştığı da dahil olmak üzere diziler hakkındaki temel anlayışınızı değerlendirmek istiyor.

Örnek cevap:
"Bir dizi, her bir öğeye bir dizin kullanılarak erişilebilen, bitişik bellek konumlarında depolanan bir öğe koleksiyonudur. Bağlantılı listelerin aksine, diziler öğelere sabit zamanlı erişim (O(1)) sağlar, ancak oluşturma sırasında tanımlanmış sabit bir boyut gerektirir. Bu, onları okuma işlemleri için verimli, ancak ekleme ve silme işlemleri için daha az esnek hale getirir."


2) Bir dizideki en büyük ve en küçük elemanları verimli bir şekilde nasıl bulursunuz?

Adaydan beklenenler: Görüşmeyi yapan kişi algoritmik düşüncenizi ve performansı optimize etme yeteneğinizi ölçmek istiyor.

Örnek cevap:
"Bir dizideki hem en büyük hem de en küçük elemanı verimli bir şekilde bulmak için, diziyi bir kez yineleyerek tekrar tekrar aynı işlemi yapardım."ping tracMevcut maksimum ve minimumun k'sı. Bu yaklaşımın zaman karmaşıklığı O(n) ve alan karmaşıklığı O(1) olup, bu problem için en uygunudur."


3) Sıralanmamış bir diziden yinelenenleri nasıl kaldıracağınızı açıklayın.

Adaydan beklenenler: Görüşmeyi yapan kişi, bu görevi başarmanıza yardımcı olabilecek dizi manipülasyonu ve veri yapıları konusundaki bilginizi değerlendirmek istiyor.

Örnek cevap:
"Dizi içinde yineleme yaparken benzersiz öğeleri depolamak için bir karma kümesi kullanırdım. Bir öğe zaten kümedeyse, onu atlardım; yoksa eklerdim. Bu yöntem, yinelenen öğelerin O(n) zaman karmaşıklığı ve O(n) uzay karmaşıklığıyla verimli bir şekilde kaldırılmasını sağlar."


4) Dizi sıralama işleminin nasıl çalıştığını açıklayabilir ve birkaç yaygın algoritmanın adını verebilir misiniz?

Adaydan beklenenler: Görüşmeyi yapan kişinin farklı sıralama algoritmaları ve bunların kullanım durumları hakkında bilgi sahibi olması beklenmektedir.

Örnek cevap:
"Hızlı Sıralama, Birleştirme Sıralaması ve benzeri çeşitli algoritmalar kullanılarak dizi sıralama elde edilebilir. Bubble Sıralama. Hızlı Sıralama, O(n log n) karmaşıklığa sahip ortalama durumlar için verimlidir, ancak Birleştirme Sıralaması, kararlı yapısı nedeniyle büyük veri kümeleri için tercih edilir. Bubble Sort, basit olmasına rağmen, O(n²) performansı nedeniyle nadiren kullanılır.”


5) Dizileri yoğun olarak kullanan bir programı optimize ettiğiniz bir zamanı anlatır mısınız?

Adaydan beklenenler: Görüşmeyi yapan kişi sizin problem çözme yaklaşımınızı ve performansınızı iyileştirme yeteneğinizi anlamak ister.

Örnek cevap:
"Önceki görevimde, diziler üzerinde birden fazla iç içe döngüye dayanan bir veri işleme betiğini optimize ettim. Dizi dilimlemeyi uygulayarak ve yerleşik vektörleştirilmiş işlemleri kullanarak, yürütme süresini yaklaşık %60 oranında azalttım ve bu da sistem yanıt hızını önemli ölçüde iyileştirdi."


6) Sınır dışı dizi indeksi hatasını nasıl ele alırsınız?

Adaydan beklenenler: Görüşmeyi yapan kişi, hata yönetimi ve güvenli kodlama uygulamaları konusundaki anlayışınızı kontrol ediyor.

Örnek cevap:
"Tüm dizin erişimlerinin kullanılmadan önce dizinin uzunluk aralığında olup olmadıklarını kontrol ederek doğrulandığından emin olurdum. Ayrıca, beklenmedik sınır dışı hataları zarif bir şekilde yönetmek için try-catch mekanizmaları veya eşdeğer hata işleme yöntemleri uygulardım."


7) Ek bellek kullanmadan bir diziyi nasıl tersine çevirirsiniz?

Adaydan beklenenler: Görüşmeyi yapan kişi, algoritmik verimliliğinizi ve yerinde operasyonlara ilişkin anlayışınızı değerlendirmek istiyor.

Örnek cevap:
“İki işaretçi kullanırdım: biri dizinin başından, diğeri sonundan başlayarak. Değiştirme yöntemiyle.”ping Bu pozisyonlardaki elemanlar ve her iki işaretçinin de merkeze doğru hareket ettirilmesiyle, dizi O(n) zaman karmaşıklığı ve O(1) alan karmaşıklığı ile yerinde tersine çevrilebilir."


8) Büyük bir veri dizisini yönetmeniz gereken bir durumu anlatın. Performans ve doğruluğu nasıl sağladınız?

Adaydan beklenenler: Görüşmeyi yapan kişi, gerçek dünyadaki veri yönetimi ve performans optimizasyonu konusundaki yeteneğinizi ölçmek istiyor.

Örnek cevap:
"Önceki işimde, finansal veri analizi için büyük sayısal dizilerle çalışıyordum. Performansı korumak için verimli bellek yönetimi teknikleri ve toplu işlem kullandım. Ayrıca, vektörleştirilmiş işlemler gerçekleştirmek için NumPy dizilerinden yararlandım; bu da hem doğruluğu hem de yürütme hızını artırdı."


9) Sıralanmış bir dizide belirli bir değeri aramak için hangi adımları izlersiniz?

Adaydan beklenenler: Görüşmeyi yapan kişi sizden arama algoritmaları hakkında bilgi sahibi olduğunuzu göstermenizi bekliyor.

Örnek cevap:
"Sıralı bir dizi için, arama aralığını tekrar tekrar ikiye bölen ikili arama algoritmasını kullanırdım. Bu yaklaşım, zaman karmaşıklığını O(log n)'ye düşürerek, büyük veri kümeleri için doğrusal aramadan çok daha verimli hale getirir."


10) Diziler yazılım geliştirmede gerçek dünya problemlerinin çözümünde nasıl bir rol oynar?

Adaydan beklenenler: Görüşmeyi yapan kişi teknik bilgiyi pratik uygulamalara nasıl bağladığınızı anlamak ister.

Örnek cevap:
"Diziler, verimli veri depolama ve alma işlemlerini destekledikleri için yazılım geliştirmede temel öneme sahiptir. Örneğin, önceki görevimde, analitik panoları için önbelleğe alma mekanizmaları ve veri sıralama uygulamaları için dizileri kullandım. Bu, veri erişilebilirliğini iyileştirdi ve sorgu yanıt sürelerini kısalttı."

Bu yazıyı şu şekilde özetleyin: