Ana içeriğe atla
Python
Kariyer Hizmetleri

2026 İçin En İyi 24 Programlama Mülakat Sorusu

İş arayanlar, son sınıf öğrencileri ve veri profesyonelleri için Python örnekleriyle temel programlama mülakat sorularını keşfedin.
Javier Canales Luna's photo
Javier Canales Luna
Güncel · 14 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Ücretsiz Hesabınızı Oluşturun

Alıştırma and program your progress.

Google Ile Devam Edin
Devam ederek Kullanım Şartlarımızı, Gizlilik Politikamızı ve verilerinizin ABD’de saklandığını kabul etmiş olursunuz.

İster yazılım geliştirme ya da veri analizi alanında yeni bir fırsat arıyor olun, ister şirketinizdeki bir açık pozisyon için adayları değerlendirecek işe alım yöneticisi olun, yaygın programlama mülakat sorularını ve cevaplarını bilmek şarttır.

Bu sorulara hazırlanmak, hem işverenler hem de adaylar açısından genellikle zor ve zaman alıcı bir süreçtir. 

Bu yazıda, başlangıç, orta ve ileri seviye uygulayıcılar için 24 temel programlama sorusunu ve cevabını inceleyeceğiz. Bu soru ve cevaplar, mülakata daha iyi hazırlanmanıza ve görüşmeci/görüşülen kişiden ne beklemeniz gerektiğini bilmenize yardımcı olacaktır.

Temel Programlama Mülakat Soruları

En kolay ve en yaygın programlama mülakat sorularından bazılarıyla başlayalım.

1. Programlamada değişken nedir?

Değişkenler, programlamanın temel unsurlarıdır. Değişken özünde veriyi saklayan bir kaptır ve program çalışırken değeri değiştirilebilir. Modern programlama dilleri, belirli veri türleri ve kullanım senaryoları için tasarlanmış çeşitli değişken türlerini destekler. 

Değişkenler hakkında her şeyi öğrenmek isterseniz, Python’a Giriş Kursumuz harika bir başlangıç noktasıdır.

2. Veri türlerini örneklerle açıklayın

Programlamada veri türleri, değişkenlerin saklayabildiği değer türleridir. Her veri türünün ilişkili özellikleri vardır; bu özellikler hangi matematiksel, ilişkisel veya mantıksal işlemlerin yapılabileceğini bilmek için kritiktir.

Örneğin Python’da, tam sayıları saklayan integer’lar ve ondalık noktalı değerleri saklayan float’lar dahil olmak üzere birkaç sayısal veri türü vardır. Ayrıca tek veya çift tırnak içine alınmış karakter dizilerini saklayan string’ler de bulunur.

integer_var = 25
float_var = 10.2
String_var = "Welcome to DataCamp"

En yaygın Python veri türlerini keşfetmek için ayrı makalemizi okuyun.

3. Derlenen ve yorumlanan diller arasındaki farkı açıklayın

Derlenen ve yorumlanan diller arasındaki temel fark, talimatların (algoritmaların) makine koduna (yani ikili koda) nasıl çevrildiğidir. Derlenen diller yürütmeden önce çevrilir; yorumlanan diller ise çalışma zamanında çevrilir. 

Bu, derlenen dilleri otonom araçlarda gerçek zamanlı trafik takibi gibi hız gerektiren karmaşık görevler için daha uygun kılar. Ancak C ve C++ gibi derlenen diller, Python gibi yorumlanan dillere göre genellikle anlaması ve üzerinde çalışması daha zordur.

4. Koşullar ve döngüler nedir?

Yaygın olarak if-else ifadeleri olarak bilinen koşullu ifadeler, belirli koşullara bağlı olarak kod bloklarını çalıştırmak için kullanılır. Bu ifadeler, bir algoritmanın akışını kontrol etmeye yardımcı olur ve farklı durumlarda farklı şekilde davranmasını sağlar. 

Buna karşılık, programlamada döngü, belirli bir koşul sağlanana kadar sürekli tekrarlanan bir kod dizisidir ve saatler sürecek işleri saniyelere indirebilir. En yaygın döngüler for ve while döngüleridir. Bunlar hakkında daha fazla bilgiyi ayrı döngü eğitimimizde bulabilirsiniz.

5. Dizi (array) ile bağlı liste (linked list) arasındaki fark nedir?

Diziler ve Bağlı Listeler en önemli veri yapıları arasındadır. Bilgiyi farklı stratejiler kullanarak saklayan yapılardır.

Bir dizi, elemanları bitişik bellek konumlarında saklar; yani her eleman, diğerine bitişik bir bellek konumunda depolanır. Ayrıca bir dizinin boyutu değiştirilemez ve önceden tanımlanır. 

Array

Dizi (Array). Kaynak

Buna karşılık, bağlı listeler aşağıda gösterildiği gibi bir sonraki elemanın bellek adresini saklamak için işaretçiler kullanır.

lnked list

Bağlı liste (Linked list). Kaynak

Genel olarak, elemanlara hızlı erişimin gerektiği ve bellek kaygısının bulunduğu durumlarda diziler tercih edilirken, sık ekleme ve silme işlemlerinin yapıldığı durumlarda bağlı listeler daha iyidir.

6. Özyinelemeyi (recursion) bir örnekle açıklayın

Programlamada özyineleme, bir fonksiyonun kendisini çağırmasıdır. Özyinelemeye güzel bir örnek, bir sayının faktöriyelini hesaplamak üzere tasarlanmış bir fonksiyondur. Faktöriyel’in, negatif olmayan bir n tamsayısı için, n’ye eşit veya n’den küçük tüm pozitif tamsayıların çarpımı olduğunu unutmayın.

def factorial(n): 
    if n < 2: 
        return 1 
    else: 
        return n * factorial(n-1)

factorial(5)
>>> 120

Özyinelemeli fonksiyonlarla ilgileniyor musunuz? Başlamak için Python’da Özyinelemeli Fonksiyonları Anlama Rehberimizi okuyun. 

7. İşaretçiler (pointer) nedir ve nasıl çalışırlar?

İşaretçi, başka bir değişkenin bellek adresini değer olarak saklayan bir değişkendir. Bağlı listeler gibi veri yapılarında yaygın olarak kullanılan işaretçiler, düşük seviyeli bellek erişimi, dinamik bellek ayırma ve daha pek çok işlevselliği mümkün kılar. 

8. Big-O gösterimi nedir ve neden önemlidir?

Big-O gösterimi, algoritmaların karmaşıklığını tanımlamak için kullanılan matematiksel bir gösterimdir. Big O Gösterimi, bir algoritmanın en kötü durum karmaşıklığını ölçer. Tamamlama süresi olan zaman karmaşıklığını ve bir algoritmanın ihtiyaç duyduğu ek bellek alanı olan yer karmaşıklığını dikkate alır. Bu eğitimde Big O gösteriminin temellerini anlatıyoruz.

Orta Düzey Programlama Mülakat Soruları

Bu bölümde, bir miktar deneyime sahip, orta düzey rollere hazırlanan adaylar için yaygın sorulara odaklanıyoruz.

Nesne yönelimli programlama mülakat soruları

9. OOP’nin dört ayağı nedir?

Nesne yönelimli programlama, nesnelere odaklanan bir paradigmadır. OOP aşağıdaki dört ayağa dayanır:

  • Soyutlama (Abstraction). OOP’de soyutlama, kullanıcıdan gereksiz ayrıntıları gizleyerek karmaşıklığın yönetilmesini sağlar. Bu sayede kullanıcı, gizli karmaşıklığın tamamını anlamadan veya düşünmeden, sunulan soyutlamanın üzerine daha karmaşık mantıklar inşa edebilir.
  • Gizleme/Kapsülleme (Encapsulation). Verinizi ve davranışınızı bir sınıf tarafından tanımlanan bir nesnede bir araya getirme işlemine kapsülleme denir.
  • Kalıtım (Inheritance). Bu özellik, üst sınıfların işlevselliğini koruyan yeni sınıfların oluşturulmasına olanak tanır.
  • Çok biçimlilik (Polymorphism). Çok biçimlilik, girdiye bağlı olarak farklı davranışlara sahip farklı yöntemler için aynı ismi kullanmanıza olanak tanıyan bir kavramdır. 

Nesne yönelimli programlamayı öğrenmek için çeşitli kaynaklar vardır; bunlar arasında DataCamp’in Python’da OOP kursu, R’de OOP kursu ve Java’da OOP eğitimi sayılabilir.

10. Sınıf (class) ve nesne (object) arasındaki farkı açıklayın

Nesne yönelimli programlamada veriler ve yöntemler, sınıfları tarafından tanımlanan nesnelerde düzenlenir. Sınıflar, her nesnenin nasıl davranması gerektiğini belirleyecek şekilde tasarlanır ve ardından nesneler bu sınıf kapsamında oluşturulur. 

Sınıfların ve nesnelerin Python’da nasıl çalıştığına dair daha fazla ayrıntı için eğitimimize göz atın.

11. Çok biçimlilik (polymorphism) nedir ve Java/Python’da nasıl uygulanır?

OOP’de çok biçimlilik, girdiye bağlı olarak farklı davranışlara sahip farklı yöntemler için aynı ismi kullanmanıza olanak tanır. Bu genellikle kalıtımla birlikte kullanılır.

Örneğin, Alanı hesaplayan bir yöntemi olan Şekil (Shape) adında bir üst sınıfımız olduğunu varsayalım. Çember (Circle) ve Kare (Square) adlı iki alt sınıfınız olabilir. Her ikisinde de Alan (Area) adlı bir yöntem olsa da, bu yöntemin tanımı her şekil için farklı olacaktır. Aşağıdaki kod bloğunda farklı şekiller için alan yöntemlerini karşılaştırın.

# Define the parent class Shape
class Shape:
	# Initialize the attributes for the shape
	def __init__(self, name):
    	    self.name = name
	
	# Define a generic method for calculating the area
	def area(self):
    	    print(f"The area of {self.name} is unknown.")
 
# Define the child class Circle that inherits from Shape
class Circle(Shape):
	# Initialize the attributes for the circle
	def __init__(self, name, radius):
    	# Call the parent class constructor
    	    super().__init__(name)
    	    self.radius = radius
	
	# Override the area method for the circle
	def area(self):
    	# Use the formula pi * r^2
    	    area = 3.14 * self.radius ** 2
    	    print(f"The area of {self.name} is {area}.")
 
# Define the child class Square that inherits from Shape
class Square(Shape):
	# Initialize the attributes for the square
	def __init__(self, name, side):
    	# Call the parent class constructor
    	    super().__init__(name)
    	    self.side = side
	
	# Override the area method for the square
	def area(self):
    	# Use the formula s^2
    	    area = self.side ** 2
    	    print(f"The area of {self.name} is {area}.")

12. Kalıtım (inheritance) ve bileşim (composition) arasındaki farkı açıklayın

Kalıtım ve bileşim, OOP’de kodun yeniden kullanılabilirliğini artırmak için kullanılan tekniklerdir. İlki, yeni bir sınıfın mevcut bir sınıftan türetilmesi ve tüm özelliklerini ile yöntemlerini devralması mekanizmasıdır. İkincisi ise temel bir sınıftan miras almak yerine basit parçaları birleştirerek karmaşık nesneler inşa etmeyi içerir.

Genel olarak bileşim, daha fazla esneklik, daha az karmaşıklık ve geliştirilmiş sürdürülebilirlik dahil olmak üzere kalıtıma göre çeşitli avantajlar sunar.

Fonksiyonel programlama mülakat soruları

13. Fonksiyonel programlama nedir?

Bilgisayar biliminde fonksiyonel programlama, programların fonksiyonlar uygulanarak ve birleştirilerek oluşturulduğu bir programlama paradigmasıdır. Bildirimsel programlama paradigmasının bir alt türüdür.

Fonksiyonel programlama, izlenebilirliği ve öngörülebilirliği ile öne çıkar. Bunun nedeni, kullanılan fonksiyonların değiştirilemez (immutable) olmasıdır; yani değiştirilemezler. Fonksiyonlar tanımlanır (genellikle kodun ayrı bir bölümünde veya bazen farklı bir dosyada) ve ihtiyaç duyuldukça kod genelinde kullanılır. Bu özellik, bir kod bölümünde neler olduğunu anlamayı kolaylaştırır; çünkü fonksiyon her yerde aynı şekilde çalışır ve aynı şekilde çağrılır.

Hâlâ fonksiyonel programlama ile OOP arasındaki farklar konusunda kafanız karışıksa, açıklığa kavuşturmak için ayrı rehberimize göz atın.

14. Emredici (imperative) ve bildirimsel (declarative) programlama arasındaki fark nedir?

Programlama paradigmaları açısından, yaygın olarak kullanılan paradigmaların çoğunun dahil olduğu iki geniş kategori vardır: emredici ve bildirimsel programlama. 

Yüksek düzeyde, emredici programlama, programın adım adım izlemesi gereken tam talimatların programcı tarafından belirtildiği paradigmalardan oluşan bir kategoridir. Odak, programın nasıl yürütüleceğindedir. Bu stil, girdilere göre belirli bir yolu izleyen bir akış şemasına benzetilebilir. Çoğu ana akım programlama dili emredici programlamayı kullanır.

Bildirimsel programlama ise programcının programın mantığını tanımladığı, ancak programın izlemesi gereken tam adımlar hakkında ayrıntı vermediği paradigmalardan oluşan bir kategoridir. Odak, programın neyi çalıştırması gerektiğindedir; tam olarak nasıl olduğunda değil. Bu tür programlama daha az yaygındır, ancak kuralların belirlendiği ve çözüme giden kesin yolun bilinmediği durumlarda kullanılabilir. Örneğin Sudoku gibi bir sayı bulmacasını çözmek bu duruma örnek olabilir.

Programlama paradigmaları hakkında konuşacak çok şey var. Bu yüzden Programlama Paradigmalarına Giriş Kursumuzu önermeden geçemeyiz.

15. Saf (pure) fonksiyonlar nedir ve neden önemlidir?

Saf fonksiyonlar, fonksiyonel programlamanın temel bileşenidir. Basitçe, saf bir fonksiyon, girdi değerlerini alıp yalnızca bu girdilere dayanarak çıktı değerleri döndüren bir süreçtir. Saf fonksiyonların "yan etkileri" yoktur; yani programdaki diğer değişkenleri etkilemezler, dosyalara yazmazlar ve bir veritabanında depolanan bilgileri değiştirmezler.

Saf fonksiyonların doğası onları programcıların ideal yardımcısı yapar. Öncelikle hata ayıklamaları çok kolaydır; zira aynı parametre kümesine sahip herhangi bir saf fonksiyon her zaman aynı değeri döndürür. 

Aynı nedenle saf fonksiyonları paralelleştirmek de daha kolaydır; buna karşılık saf olmayan fonksiyonlar, değiştirilebilir değişkenleri farklı bir sırada güncelleme veya okuma nedeniyle farklı çalıştırmalarda farklı sonuçlar almanıza yol açacak şekilde birbiriyle etkileşebilir. 

16. Yüksek mertebeden (higher-order) fonksiyonları bir örnekle açıklayın

Fonksiyonel programlamada, saf fonksiyonların aksine, yüksek mertebeden fonksiyon; bir veya daha fazla fonksiyonu argüman olarak alan (yani kendisi de bir yordam olan bir yordamın parametresi), bir fonksiyon döndüren veya her ikisini birden yapan fonksiyondur. 

Yaygın bir yüksek mertebeden fonksiyon örneği Python’un map() fonksiyonudur. Birçok fonksiyonel programlama dilinde bulunan map(), argüman olarak bir f fonksiyonu ve bir öğe koleksiyonu alır ve fonksiyonu koleksiyondaki her öğeye uygulayarak yeni bir koleksiyon döndürür. Örneğin elinizde bir sayı listesi olduğunu ve bu sayıların float’a çevrilmiş hâliyle yeni bir koleksiyon istediğinizi düşünelim.

numbers = [1,2,3,4]
res = map(float, numbers)
print(list(numbers))
>>> [1.0, 2.0, 3.0, 4.0]

İleri Düzey Programlama Mülakat Soruları

Son olarak, büyük teknoloji şirketlerini hedefleyen deneyimli adaylar için en yaygın sorulardan bazılarına bakalım.

Dinamik programlama mülakat soruları

17. Dinamik programlama nedir ve ne zaman kullanılır?

Dinamik programlama, karmaşık problemleri daha küçük ve örtüşen alt problemlere bölerek çözmek için kullanılan bir yöntemdir. 

Her seferinde baştan başlamak yerine bu küçük parçaların çözümlerini takip edersiniz; bu da aynı hesaplamaları tekrar tekrar yapmanız gerekmediği anlamına gelir. Bu yöntem, iki dizi arasındaki en uzun ortak alt diziyi bulmak veya bir ızgara üzerinde belirli bir noktaya ulaşmak için minimum maliyeti bulmak gibi problemlerde oldukça kullanışlıdır.

18. Önbellekleme (memoization) ve tablolaştırma (tabulation) arasındaki farkı açıklayın

Önbellekleme ve tablolaştırma, dinamik programlamada algoritmaların (genellikle özyinelemeli algoritmaların) performansını optimize etmek için kullanılan iki güçlü tekniktir.

Önbellekleme (memoization), pahalı fonksiyon çağrılarının sonuçlarını depolamayı ve aynı girdiler tekrar oluştuğunda depolanan sonuçları döndürmeyi içerir. Bu sayede alt problemler yalnızca bir kez hesaplanır. Önbellekleme, üstten alta (top-down) bir yaklaşımı izler; yani "üst problemden" başlayıp aşağı doğru yineleyerek çok sayıda alt problemi çözer ve önbelleğe alırız.

Buna karşılık, tablolaştırma (tabulation) en küçük alt problemlerin tamamını hesaplamayı ve sonuçları bir tabloda depolamayı içerir. Alttan üste (bottom-up) bir yaklaşım olarak kabul edilir; çünkü en küçük alt problemleri çözerek başlar ve bu alt problemlerin tüm çözümlerine sahip olduktan sonra üst problemin çözümünü hesaplar.

19. Fibonacci dizisini dinamik programlama ile çözün

Fibonacci dizisi şu şekildedir: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 …; dizideki her sayı kendisinden önce gelen iki sayının toplamıdır.

Problemi çözmenin en sezgisel yolu, aşağıda gösterildiği gibi özyinelemedir.

#  a simple recursive program for Fibonacci numbers
def fib(n):
    if n <= 1:
        return n

    return fib(n - 1) + fib(n - 2)

Ancak bu, diziyi bulmanın en verimli yolu değildir. Önceki algoritmanın üstel zaman karmaşıklığı vardır; O(2^N) olarak gösterilir; bu, N arttıkça hesaplama sayısının üstel olarak arttığı anlamına gelir.

Fibonacci dizisi problemine, aşağıdaki gibi küçük alt problemlere bölerek de bakabiliriz:

fib(5) için Fibonacci dizisi. Kaynak

Görüldüğü gibi, kodumuzu n=5 için çalıştıracak olsak fib() fonksiyonu aynı işlemi defalarca hesaplayacak; bu da hesaplama kaynaklarının israfına yol açacaktır. 

Dinamik programlama, Fibonacci dizisinin hesaplanmasını optimize etmek için çeşitli teknikler sunar.

Problemi önbellekleme ile analiz edelim. Daha önce de belirtildiği gibi, bu yöntem pahalı fonksiyon çağrılarının sonuçlarını depolamayı ve aynı girdiler tekrar oluştuğunda depolanan sonuçları döndürmeyi içerir. Aşağıdaki kodla başarılır; burada fibonacci_memo() fonksiyonunun sonuçları bir sözlükte saklanır. Bu optimizasyonla tüm girdilerin hesaplaması yalnızca bir kez yapılır ve zaman karmaşıklığı doğrusal seviyeye, yani O(N)’ye düşer.

cache = {0: 0, 1: 1}

def fibonacci_memo(n):
    if n in cache:  # Base case
        return cache[n]
   # Compute and cache the Fibonacci number
    cache[n] = fibonacci_memo(n - 1) + fibonacci_memo(n - 2)  # Recursive case
    return cache[n]

[fibonacci_memo(n) for n in range(15)]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]

20. En uygun alt yapı (optimal substructure) ve örtüşen alt problemler kavramını açıklayın

Dinamik programlamada alt problemler, orijinal problemin daha küçük sürümleridir. Bir problemin çözümünü bulmak, aynı alt problemi birden çok kez çözmeyi gerektiriyorsa, o problem örtüşen alt problemlere sahiptir; tıpkı yukarıdaki Fibonacci dizisinin hesaplanmasında olduğu gibi.

Öte yandan, verilen problemin en uygun çözümü, alt problemlerinin en uygun çözümlerinden oluşturulabiliyorsa, o problemin en uygun alt yapıya sahip olduğu kabul edilir.

Programlama teknik mülakat soruları

21. Karma tablolar (hash table) nasıl çalışır?

Hashmap’ler (hashtable olarak da bilinir), karmalamanın en yaygın uygulamalarından biridir. Hashmap’ler anahtar-değer çiftlerini (ör. çalışan ID’si ve çalışan adı) dizin üzerinden erişilebilen bir listede saklar. Hashmap’i, veriyi ilişkisel şekilde depolamak için karmalama tekniklerinden yararlanan bir veri yapısı olarak tanımlayabiliriz.

Hashmap’lerin ardındaki fikir, girdileri (anahtar/değer çiftleri) bir kova (bucket) dizisine dağıtmaktır. Bir anahtar verildiğinde, bir karmalama fonksiyonu, girdinin bulunabileceği yeri işaret eden benzersiz bir indeks hesaplar. Orijinal anahtar yerine bir indeks kullanılması, hashmap’leri veri ekleme, silme ve arama dahil olmak üzere çeşitli veri işlemleri için özellikle uygun hâle getirir.

Karma tablolara örnek olarak Python sözlükleri verilebilir. Bu güçlü veri yapıları hakkında daha fazla bilgi için Python Hashmap’lerine Rehber yazımıza göz atın.

22. Çoklu iş parçacığında (multithreading) kilitlenme (deadlock) nedir?

İş parçacığı (threading), sürecinizin farklı bölümlerinin eşzamanlı olarak çalışmasına olanak tanır. Bu farklı bölümler genellikle bağımsızdır ve aynı sürece ait ayrı yürütme birimleridir. Süreç, eşzamanlı çalıştırılabilen bireysel birimlere sahip çalışan bir programdan ibarettir.

Kilitlenme, birden fazla iş parçacığının, diğer iş parçacıklarının elindeki kaynakları beklerken süresiz olarak bloke olmasıyla gerçekleşir. Bu durum, hiçbir ilgili iş parçacığının ilerleyemediği kırılmaz bir bağımlılık döngüsüne yol açar.

İş parçacıkları ve veri analizi için neden önemli oldukları hakkında daha fazla bilgi edinmek için DataCamp’in Python iş parçacığı eğitimini okuyun. 

23. Genişlik öncelikli arama (BFS) ile derinlik öncelikli arama (DFS) arasındaki fark nedir?

Genişlik öncelikli arama (BFS) ve derinlik öncelikli arama (DFS), bir grafiği veya ağacı keşfetmek için tasarlanmış iki dolaşım algoritmasıdır.

BFS, bir grafı düzey düzey keşfeder; mevcut derinlikteki tüm düğümleri ziyaret ettikten sonra bir sonrakine geçer. Buna karşılık, DFS geri izleyip alternatif dalları incelemeden önce tek bir dalı olabildiğince derinlemesine keşfetmeyi önceliklendirir.

BFS, ağırlıksız bir grafikte en kısa yolu bulmak amaçlandığında özellikle faydalıdır. Ancak geniş graflarda her düzeydeki tüm düğümlerin izlenmesi gerektiğinden çok bellek kullanabilir. BFS, sosyal ağ analizi veya basit yönlendirme problemleri için mükemmel bir seçimdir.

DFS ise, bulmacaları çözmek veya bir grafta döngüler bulmak gibi tüm olası yolları veya çözümleri keşfetmek amaçlandığında kullanışlıdır. BFS’nin aksine, DFS en kısa yolu garanti etmez. Ancak yalnızca mevcut yolu takip ettiği için daha bellek verimlidir.

Bu algoritmalar hakkında daha fazla bilgiyi Genişlik Öncelikli Arama Rehberi ve Derinlik Öncelikli Arama Rehberi yazılarımızda bulabilirsiniz.

24. Quicksort ve mergesort’un zaman karmaşıklığı nedir?

Birleştirme sıralaması (Merge sort) , girdi dizisini yinelemeli olarak daha küçük alt dizilere bölüp bu alt dizileri sıralayarak ve ardından birleştirerek sıralı çıktıyı elde eder. O(N log(N)) olarak gösterilen lineerlogaritmik zaman karmaşıklığına sahiptir. 

Big O gösteriminde lineerlogaritmik zaman, davranış olarak doğrusal zamana benzer; yani girdi verisi miktarı iki katına çıkarsa, merge sort’un veriyi işlemesi için gereken süre de kabaca iki katına çıkar.

Hızlı sıralama (quick sort) algoritması, listeden pivot adı verilen bir değer seçerek bölme tekniğini kullanır. Pivot’tan küçük tüm öğeler pivotun solunda, büyük öğeler ise sağında kalır. Pivotun solundaki ve sağındaki öğeler üzerinde quick sort yinelemeli olarak çağrılır. 

Quick sort, pivot seçiminin sürekli olarak dengesiz bölmelere yol açtığı en kötü durumda, O(N^2) olarak gösterilen karesel zaman karmaşıklığına sahiptir.

Sonuç

Bu yazıda, temel, orta ve ileri konuları kapsayan birçok programlama mülakat sorusunu ele aldık. Diziler ve bağlı listeler gibi veri yapılarına dair temel kavramları anlamaktan, OOP, fonksiyonel programlama ve dinamik programlama disiplinlerindeki daha karmaşık tekniklere inmeye kadar, potansiyel işverenlerin sorabileceği kilit alanları inceledik.

Mülakatınız için daha fazla programlama eğitimi gerekiyorsa ya da veri ve yapay zekâ alanındaki diğer rollerin mülakat sorularıyla ilgileniyorsanız, aşağıdaki kaynaklara göz atın:

Programming Interview Question FAQs

Programlama mülakatlarına pratik yapmanın önemi nedir?

İster yazılım geliştirme ya da veri analizi alanında yeni bir fırsat arıyor olun, ister şirketinizdeki bir açık pozisyon için adayı sorgulayacak bir işe alım yöneticisi olun, yaygın programlama mülakat sorularını ve cevaplarını bilmek şarttır. Görüştüğünüz role uygun olacak şekilde bilgi yelpazenizi ortaya koyabilmek istersiniz.

Programlama mülakat soruları zor mudur?

Programlama mülakatlarının zorluk derecesini tahmin etmek zordur. Görüşmecinin teknik bilgisi, rolün niteliği ve kıdem seviyesi gibi birçok değişken, karmaşıklığı etkileyebilir. Ancak, hazırlıklı olmak en iyi fikirdir.

Programlama mülakat sorularına en iyi şekilde nasıl hazırlanılır?

Programlama mülakatlarına hazırlanmak için bazı ipuçları: 

  • Temel kavramlarınızı tazeleyin 
  • Önceki deneyimlerinizi derleyin ve etkileyici hikâyeler oluşturun 
  • Kodlama ve problem çözme pratiği yapın 
  • Gerçek projelerle pratik yapın 
  • Mülakat sorularını etraflıca çalışın 

İşe alım uzmanları için programlama mülakat sorularını öğrenmek neden önemlidir?

Bir programlama mülakatının amacı adayın teknik becerilerini, problem çözme yeteneklerini ve yaratıcılığını değerlendirmektir. Bu becerileri değerlendirmek ve adaydan en iyi verimi alabilmek için görüşmecilerin de programlama kavramlarına aşina olması gerekir.


Javier Canales Luna's photo
Author
Javier Canales Luna
LinkedIn

Serbest çalışan bir veri analistiyim; dünya genelinde şirketler ve kuruluşlarla veri bilimi projelerinde iş birliği yapıyorum. Ayrıca 2+ yıllık deneyime sahip bir veri bilimi eğitmeniyim. Düzenli olarak İngilizce ve İspanyolca veri bilimiyle ilgili makaleler yazıyorum; bunların bir kısmı DataCamp, Towards Data Science ve Analytics Vidhya gibi köklü internet sitelerinde yayımlandı. Siyaset bilimi ve hukuk geçmişine sahip bir veri bilimci olarak amacım, kamu politikası, hukuk ve teknolojinin kesişiminde çalışmak; fikirlerin gücünden yararlanarak özellikle iklim krizi olmak üzere acil sorunların üstesinden gelmemize yardımcı olabilecek yenilikçi çözümler ve anlatılar geliştirmek. Kendimi otodidakt bir kişi, sürekli öğrenen ve disiplinlerarasılığın güçlü bir savunucusu olarak görüyorum. Yeni şeyler öğrenmek için asla geç değildir.

Konular
Python
Kariyer Hizmetleri

En İyi DataCamp Kursları

Kurs

Python'da Nesne Yönelimli Programlama

4 sa
105.8K
Sınıf oluşturmayı ve miras ile çok biçimlilikten yararlanarak kodu yeniden kullanmayı ve optimize etmeyi öğrenin.
Ayrıntıları GörüntüleKursa Başla

Ücretsiz Hesabınızı Oluşturun

Alıştırma and program your progress.

Google Ile Devam Edin
Devam ederek Kullanım Şartlarımızı, Gizlilik Politikamızı ve verilerinizin ABD’de saklandığını kabul etmiş olursunuz.
Devamını Gör
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını Gör