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.
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
ArrayListin Java,vectorin 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:
- başlat
minhem demaxilk elemanla. - Diziyi dolaşın ve her bir öğeyi karşılaştırın.
- Güncelle
minormaxbuna 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:
- İki işaretçiyi başlat:
start = 0hem deend = n - 1. - Öğeleri değiştir
arr[start]hem dearr[end]. - artım
startve azalmaendtanış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:
- başlat
firsthem desecondasINT_MIN. - Diziyi dolaş.
- 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:
- Geçici Dizi Kullanımı: İlk k elemanı kopyalayın ve diğerlerini kaydırdıktan sonra bunları sona ekleyin.
- kullanma Reversal Algoritması: Reverse Dizinin üç bölümü – birinci bölüm, ikinci bölüm, ardından dizinin tamamı.
- 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:
- başlat
max_current = max_global = arr[0]. - Öğeler arasında yineleme yapın.
- Güncelle
max_current = max(arr[i], arr[i] + max_current). - 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:
- Her iki dizinin de geçerli son elemanından başla.
- Karşılaştırın ve büyük olanı birleşik alanın sonuna taşıyın.
- 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:
- İlk toplamın hesaplanması
kelemanları. - Pencereyi birer birer kaydırın.
- 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:
- Dizinin toplamını hesapla.
- Sol toplamı geç ve koru.
- 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:
- Koordinat Listesi (COO): (Satır, sütun, değer) depola.
- Sıkıştırılmış Seyrek Satır (CSR): Üç dizi:
values,col_index,row_pointer. - 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:
- Çift ve tek dizileri ayırın.
- Çift veya tek sayıyla başlayarak dönüşümlü olarak birleştirin.
- 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:
- başlat
max_ending_here = min_ending_here = arr[0]. - Her ikisini de geçerli öğeye göre yineleyin ve güncelleyin.
- 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):
- Yineleme sırasında çalışan toplamı koruyun.
- Her önek toplamı için, şunu kontrol edin:
(current_sum - target)hash haritasında mevcuttur. - 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:
- Dört sınırı tanımlayın:
top,bottom,left, veright. - Soldan → sağa, yukarıdan → aşağıya, sağdan → sola ve aşağıdan → yukarıya doğru hareket edin.
- 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ı:
- başlat
candidatehem decount = 0. - 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.
- Eğer sayım = 0 ise, ayarla
- 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:
- Sıralama: Sıralama ve erişim
k-1nci indeks (O(n log n)). - Min/Maks Yığın: Sık sorgular için verimlidir (O(n log k)).
- 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):
- Dizinin tüm elemanlarını ve 1…n'yi XOR'la.
- Sonuç, eksik ve tekrar eden sayıların XOR'unu verir.
- 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:
- Daha küçük dizilerde ikili aramayı kullanın.
- Bölüm sınırlarını karşılaştırın.
- 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:
- Normal maksimum alt dizi toplamını kullanarak bulun Kadane Algoritması.
- Minimum alt dizi toplamını bulun.
- 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:
- Orta = (düşük + yüksek) / 2'yi bulun.
- Kontrol eğer
arr[mid] == target. - 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:
- başlat
dp[i] = arr[i]. - Her biri için
i, önceki öğeleri kontrol edinj < i:- If
arr[j] < arr[i], Daha sonradp[i] = max(dp[i], arr[i] + dp[j]).
- If
- 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):
- başlat
left,right,left_max,right_max. - İş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):
- Önek toplamlarını depolamak için bir karma haritası başlatın.
- 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:
- Satır ve sütun toplamlarını önceden hesapla.
- 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:
- Toplam tutarı hesapla.
- Tek ise → False döndür.
- Alt kümenin olup olmadığını kontrol etmek için DP tablosu oluşturun
sum/2bulunmaktadı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:
- Matrisi transpoze et.
- 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ı."

