
Python, en çok yönlü ve talep gören programlama dillerinden biri olarak teknoloji sektörüne hakimiyetini sürdürüyor. İster teknik bir mülakata hazırlanıyor olun ister kodlama becerilerinizi geliştirmek isteyin, Python'a hakim olmak kritik öneme sahiptir. Mülakatlarda genellikle Python'da zorlukları çözmeniz ve karmaşık işlevleri açıklamanız beklenir.
Bu rehber, en yaygın ve ileri düzey Python mülakat sorularının kapsamlı bir listesini sunar. Bu soruları pratik etmek, veri profesyonellerine, geliştiricilere ve yazılım mühendislerine teknik mülakatlarda başarılı olmak ve kariyerlerinde ilerlemek için gereken becerileri kazandıracaktır.
Özet
- Python temellerine hakim olun: veri tipleri, anlayışlar (comprehensions),
__init__()gibi OOP kavramları ve GIL - Kodlama alıştırmaları yapın: string işleme, dizi algoritmaları ve dinamik programlama problemleri
- Veri bilimi kütüphanelerini bilin: ML mülakatları için NumPy, pandas ve scikit-learn
- Modern Python'u anlayın: async/await, tür ipuçları (type hints), dekoratörler ve bağlam yöneticileri
- AI/ML sorularına hazırlanın: LLM'ler, RAG, prompt engineering ve transformer mimarileri
- FAANG tarzı problemleri çalışın: hisse senedi kâr optimizasyonu, Pisagor üçlüleri ve bozuk para üstü algoritmaları
Temel Python Mülakat Soruları
Bunlar, giriş seviyesi bir Python mülakatında karşılaşabileceğiniz bazı sorulardır.
1. Python nedir ve bazı temel özelliklerini sayınız.
Python, okunması kolay sözdizimi ve geniş uygulama alanlarıyla bilinen, çok yönlü, üst düzey bir programlama dilidir. İşte Python’un bazı temel özellikleri:
- Basit ve Okunabilir Sözdizimi: Python’un sözdizimi net ve anlaşılırdır; bu da onu yeni başlayanlar için erişilebilir, deneyimli geliştiriciler için verimli kılar.
- Yorumlamalı Dil: Python kodu satır satır yürütür; bu da hata ayıklama ve test etmeyi kolaylaştırır.
- Dinamik Tipleme: Python, açık veri tipi bildirimi gerektirmez; bu da daha fazla esneklik sağlar.
- Geniş Kütüphane ve Çerçeve Ekosistemi: NumPy, Pandas ve Django gibi kütüphaneler; veri bilimi, web geliştirme ve daha birçok özel görevde Python’un yeteneklerini genişletir.
- Çapraz Platform Uyumluluğu: Python, Windows, macOS ve Linux dahil farklı işletim sistemlerinde çalışabilir.
2. Python listeleri ve demetleri (tuple) nedir?
Listeler ve demetler, farklı özellik ve kullanım alanlarına sahip temel Python veri yapılarıdır.
Liste:
- Değiştirilebilir (Mutable): Oluşturulduktan sonra öğeleri değiştirilebilir.
- Bellek Kullanımı: Daha fazla bellek tüketir.
- Performans: Demetlere kıyasla yineleme daha yavaştır; ancak ekleme ve silme işlemleri için daha iyidir.
- Metotlar: Değiştirme için çeşitli yerleşik metotlar sunar.
Örnek:
a_list = ["Data", "Camp", "Tutorial"]
a_list.append("Session")
print(a_list) # Output: ['Data', 'Camp', 'Tutorial', 'Session']
Demet (Tuple):
- Değiştirilemez (Immutable): Oluşturulduktan sonra öğeleri değiştirilemez.
- Bellek Kullanımı: Daha az bellek tüketir.
- Performans: Listelere kıyasla yineleme daha hızlıdır; ancak listelerin esnekliğine sahip değildir.
- Metotlar: Sınırlı sayıda yerleşik metoda sahiptir.
Örnek:
a_tuple = ("Data", "Camp", "Tutorial")
print(a_tuple) # Output: ('Data', 'Camp', 'Tutorial')
Daha fazlasını Python Listeleri eğitimimizde öğrenin.
3. Python'da __init__() nedir?
__init__() metodu, nesne yönelimli programlama (OOP) terminolojisinde yapıcı (constructor) olarak bilinir. Bir nesne oluşturulduğunda başlangıç durumunu ayarlamak için kullanılır. Bu metot, bir sınıfın yeni bir örneği oluşturulduğunda otomatik olarak çağrılır.
Amacı:
- Nesne özelliklerine değer atamak.
- Gerekli başlangıç (initialize) işlemlerini yapmak.
Örnek:
book_shop adlı bir sınıf oluşturup yapıcıyı ve book() fonksiyonunu ekledik. Yapıcı, kitap başlığını saklayacak; book() fonksiyonu ise kitabın adını yazdıracaktır.
Kodumuzu test etmek için b nesnesini “Sandman” ile başlattık ve book() fonksiyonunu çalıştırdık.
class book_shop:
# constructor
def __init__(self, title):
self.title = title
# Sample method
def book(self):
print('The title of the book is', self.title)
b = book_shop('Sandman')
b.book()
# The title of the book is Sandman
4. Değiştirilebilir (mutable) ve değiştirilemez (immutable) veri tipleri arasındaki fark nedir?
Değiştirilebilir veri tipleri:
- Tanım: Oluşturulduktan sonra değiştirilebilen veri tipleridir.
- Örnekler: List, Dictionary, Set.
- Özellikler: Öğeler eklenebilir, kaldırılabilir veya değiştirilebilir.
- Kullanım: Sık güncelleme gereken öğe koleksiyonları için uygundur.
Örnek:
# List Example
a_list = [1, 2, 3]
a_list.append(4)
print(a_list) # Output: [1, 2, 3, 4]
# Dictionary Example
a_dict = {'a': 1, 'b': 2}
a_dict['c'] = 3
print(a_dict) # Output: {'a': 1, 'b': 2, 'c': 3}
Değiştirilemez veri tipleri:
- Tanım: Oluşturulduktan sonra değiştirilemeyen veri tipleridir.
- Örnekler: Sayısal (int, float), String, Tuple.
- Özellikler: Öğeler bir kez ayarlandıktan sonra değiştirilemez; değiştiriyormuş gibi görünen işlemler yeni bir nesne oluşturur.
Örnek:
# Numeric Example
a_num = 10
a_num = 20 # Creates a new integer object
print(a_num) # Output: 20
# String Example
a_str = "hello"
a_str = "world" # Creates a new string object
print(a_str) # Output: world
# Tuple Example
a_tuple = (1, 2, 3)
# a_tuple[0] = 4 # This will raise a TypeError
print(a_tuple) # Output: (1, 2, 3)
5. Liste, sözlük ve demet anlayışını (comprehension) bir örnekle açıklayın.
Liste
Liste anlayışı, mevcut bir listenin değerlerine dayalı olarak yeni bir liste oluşturmak için tek satırlık bir sözdizimi sunar. Aynısını bir for döngüsü ile de yapabilirsiniz; ancak bu, birden fazla satır gerektirir ve bazen karmaşıklaşabilir.
Liste anlayışı, mevcut yinelenebilir (iterable) üzerinden liste oluşturmayı kolaylaştırır.
my_list = [i for i in range(1, 10)]
my_list
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
Sözlük
Liste anlayışına benzer şekilde, tek satır kodla mevcut bir tablodan sözlük oluşturabilirsiniz. İşlemi süslü parantez {} ile sarmalamanız gerekir.
# Creating a dictionary using dictionary comprehension
my_dict = {i: i**2 for i in range(1, 10)}
# Output the dictionary
my_dict
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
Demet
Listeler ve sözlüklerin aksine, özel bir “demet anlayışı” yoktur.
Parantez içinde bir anlayış kullandığınızda Python aslında bir üreteç ifadesi (generator expression) oluşturur, demet değil. Demet elde etmek için ya üreteci tuple() ile dönüştürmeli ya da doğrudan demet söz dizimiyle tanımlamalısınız.
# Generator expression (not a tuple)
my_gen = (i for i in range(1, 10))
my_gen
# <generator object <genexpr> ...>
# Converting generator to tuple
my_tuple = tuple(i for i in range(1, 10))
my_tuple
# (1, 2, 3, 4, 5, 6, 7, 8, 9)
# Or simply define a tuple directly
literal_tuple = (1, 2, 3)
literal_tuple
# (1, 2, 3)
Detayları Python Demetleri eğitimimizde öğrenebilirsiniz.
6. Python'da Global Interpreter Lock (GIL) nedir ve neden önemlidir?
Global Interpreter Lock (GIL), CPython’da (referans Python uygulaması) aynı anda yalnızca bir yerel iş parçacığının Python bytecode’u yürütmesini sağlayan bir kilittir (mutex). Referans sayacı gibi dahili veri yapılarını koruyarak bellek yönetimini basitleştirir; ancak CPU ağırlıklı görevlerde gerçek paralelliği kısıtlayarak çoklu iş parçacığını hesaplamalı iş yükleri için daha az etkili hale getirir. Buna karşın, iş parçacıklarının ağ, dosya veya veritabanı işlemlerini beklediği I/O ağırlıklı görevlerde iyi çalışır.
Not: Python 3.13, deneysel GIL'siz bir derleme (PEP 703) sundu ve Python 3.14 belgelenmiş serbest iş parçacığı desteği ekler. Bazı C uzantıları ve kütüphaneler henüz tam uyumlu olmayabilir.
Orta Düzey Python Mülakat Soruları
İşte orta düzey bir Python mülakatında karşılaşabileceğiniz bazı sorular.
7. Python'da yaygın arama ve grafik dolaşma (traversal) algoritmalarını açıklayabilir misiniz?
Python, arama ve grafik dolaşma için güçlü algoritmalara sahiptir ve her biri farklı veri yapılarıyla çalışır, farklı problemleri çözer. Kısaca şöyle açıklayabilirim:
- İkili Arama (Binary Search): Sıralı bir listede bir öğeyi hızlıca bulmanız gerekiyorsa ikili arama idealdir. Arama aralığını hedef bulunana kadar tekrar tekrar ikiye böler.
- AVL Ağacı: AVL ağacı dengeyi korur; ağaçta sık ekleme/silme yapıyorsanız büyük avantaj sağlar. Kendi kendini dengeleyen bu ikili arama ağacı, ağacın aşırı eğilmesini engelleyerek aramaları hızlı tutar.
- Genişlik Öncelikli Arama (BFS): BFS bir grafiği seviye seviye keşfeder. Ağırlıksız bir grafikte en kısa yolu bulmak için özellikle uygundur; her düğümden olası tüm hareketleri derine inmeden önce kontrol eder.
- Derinlik Öncelikli Arama (DFS): DFS ise her dal boyunca mümkün olduğunca derine iner, sonra geri izler. Labirent çözme veya ağaç dolaşma gibi görevlerde etkilidir.
- A* Algoritması: A*, sezgiseller (heuristics) kullanarak en kısa yolu verimli biçimde bulur ve BFS ile DFS’in en iyi yönlerini birleştirir. Haritalar ve oyunlardaki yol bulmada yaygın olarak kullanılır.
8. Python'da KeyError nedir ve nasıl ele alırsınız?
Python’da bir sözlükte var olmayan bir anahtara erişmeye çalıştığınızda KeyError oluşur. Python, baktığınız her anahtarın sözlükte mevcut olmasını bekler; değilse KeyError fırlatır.
Örneğin, öğrenci notlarının bulunduğu bir sözlükte olmayan bir öğrenciye erişmeye çalışırsanız KeyError alırsınız. Bunu ele almanın birkaç yolu vardır:
-
.get() metodunu kullanın: Anahtar bulunmazsa hata atmak yerine
None(veya belirttiğiniz varsayılan değeri) döndürür. -
try-except bloğu kullanın: Kodu
try-exceptiçine alarakKeyError'ı yakalayıp zarifçe ele alabilirsiniz. -
in ile anahtarı kontrol edin: Erişmeden önce
if key in dictionaryile anahtarın var olup olmadığını kontrol edebilirsiniz.
Daha fazlası için kapsamlı eğitimimizi okuyun: Python KeyError İstisnaları ve Nasıl Düzeltilir.
9. Python belleği nasıl yönetir ve çöp toplayıcının (garbage collection) rolü nedir?
Python, tüm nesnelerin ve veri yapıların saklandığı özel bir yığın (heap) kullanarak bellek ayırmayı ve serbest bırakmayı otomatik olarak yönetir. Bellek yönetimi, bellek kullanımını optimize eden Python’un bellek yöneticisi ve kullanılmayan ya da referansı kalmayan nesneleri temizleyen çöp toplayıcı tarafından yürütülür.
Python’daki çöp toplama, referans sayımının yanı sıra döngüsel referansları tespit edip temizlemek için çevrimsel bir çöp toplayıcı kullanır. Bir nesnenin artık referansı kalmadığında çöp toplamaya uygun hale gelir. Python’daki gc modülü, çöp toplayıcıyla doğrudan etkileşime izin verir; çöp toplamayı etkinleştirme/devre dışı bırakma ve elle toplama yapma fonksiyonları sunar.
10. Python'da sığ kopya (shallow copy) ve derin kopya (deep copy) arasındaki fark nedir ve hangisini ne zaman kullanırsınız?
Python’da kopyalama, nesneleri çoğaltmak için kullanılır; ancak iç içe yapıları farklı şekilde ele alır.
-
Sığ Kopya: Yeni bir nesne oluşturur; fakat orijinaldeki nesnelerin referanslarını içerir. Orijinal nesne, başka değiştirilebilir nesneler (ör. iç içe listeler) barındırıyorsa sığ kopya bu iç nesnelerin aynı referanslarını taşır. Bu da bu iç nesnelerde yapılan değişikliklerin orijinal ya da kopyayı etkileyebilmesine yol açar.
copy()metodu veyacopymodülününcopy()fonksiyonuyla oluşturulabilir. -
Derin Kopya: Yeni bir nesne oluşturur ve orijinaldeki tüm nesneleri özyinelemeli (recursively) olarak kopyalar. Böylece iç içe yapılar da çoğaltılır; birindeki değişiklik diğerini etkilemez.
copymodülünündeepcopy()fonksiyonuyla oluşturulur.
Kullanım Örneği: Nesne yalnızca değiştirilemez öğeler içeriyorsa veya iç yapılarındaki değişikliklerin her iki kopyada da yansımasını istiyorsanız sığ kopya uygundur. İç içe ve karmaşık yapılarda tamamen bağımsız bir kopya istiyorsanız derin kopya idealdir. Daha fazlası için Python List Kopyalama: Bilmeniz Gerekenler eğitimimizi okuyun. Bu eğitim, sığ ve derin kopya farkını ayrıntılı açıklar.
11. Python’un collections modülünü yaygın görevleri basitleştirmek için nasıl kullanabilirsiniz?
Python’daki collections modülü, defaultdict, Counter, deque ve OrderedDict gibi özelleşmiş veri yapıları sağlar. Örneğin, Counter bir yinelenebilirdeki öğeleri saymak için idealdir; defaultdict ise açık kontrol yapmadan sözlük değerlerini başlatabilir.
Örnek:
from collections import Counter
data = ['a', 'b', 'c', 'a', 'b', 'a']
count = Counter(data)
print(count) # Output: Counter({'a': 3, 'b': 2, 'c': 1})
İleri Düzey Python Mülakat Soruları
Bu mülakat soruları, daha deneyimli Python uygulayıcılarına yöneliktir.
12. Python'da monkey patching nedir?
Python’da monkey patching, çalışma zamanında kodun davranışını değiştirebilen dinamik bir tekniktir. Kısacası, bir sınıfı veya modülü çalışma zamanında değiştirebilirsiniz.
Örnek:
Bir örnekle monkey patching öğrenelim.
-
patch()fonksiyonuna sahip birmonkeysınıfı oluşturduk. Sınıf dışında bir demonk_pfonksiyonu tanımladık. -
Şimdi
monkey.patch'imonk_p'ye atayarakpatchyerinemonk_pfonksiyonunu koyacağız. -
Son olarak,
monkeysınıfını kullanarak nesne oluşturuppatch()fonksiyonunu çalıştırarak değişikliği test edeceğiz.
patch() is being called yerine monk_p() is being called yazdırıldığını görürsünüz.
class monkey:
def patch(self):
print ("patch() is being called")
def monk_p(self):
print ("monk_p() is being called")
# replacing address of "patch" with "monk_p"
monkey.patch = monk_p
obj = monkey()
obj.patch()
# monk_p() is being called
Dikkat: Bunu ölçülü kullanın; monkey patching kodunuzu okumayı zorlaştırabilir ve sizinle çalışanları veya testleri şaşırtabilir.
13. Python'da “with” deyimi ne için tasarlanmıştır?
with deyimi, istisna yönetimini daha temiz ve basit hale getirmek için kullanılır. Genellikle dosya oluşturma, düzenleme ve kaydetme gibi ortak kaynakların yönetimi için tercih edilir.
Örnek:
Birden çok satırlık open, try, finally ve close yazmak yerine, with deyimiyle bir metin dosyası oluşturup yazabilirsiniz. Basittir.
# using with statement
with open('myfile.txt', 'w') as file:
file.write('DataCamp Black Friday Sale!!!')
14. Python'da try/except yapısında neden else kullanılır?
try: ve except: Python’da istisna yakalama için yaygın olarak bilinir; peki else: ne işe yarar? else:, herhangi bir istisna oluşmadığında tetiklenir.
Örnek:
else: hakkında iki örnekle daha fazlasını öğrenelim.
-
İlk denemede pay (numerator) olarak
2, payda (denominator) olarakdgirdik. Bu hatalıdır veexcept:“Invalid input!” ile tetiklenir. -
İkinci denemede pay olarak
2, payda olarak1girdik ve sonuç2oldu. İstisna oluşmadığı içinelse:tetiklenir veDivision is successful.mesajı yazdırılır.
try:
num1 = int(input('Enter Numerator: '))
num2 = int(input('Enter Denominator: '))
division = num1/num2
print(f'Result is: {division}')
except:
print('Invalid input!')
else:
print('Division is successful.')
## Try 1 ##
# Enter Numerator: 2
# Enter Denominator: d
# Invalid input!
## Try 2 ##
# Enter Numerator: 2
# Enter Denominator: 1
# Result is: 2.0
# Division is successful.
Temel becerileri kazanmak için Python Fundamentals beceri yolunu tamamlayın.
15. Python'da dekoratörler nedir?
Python’daki dekoratörler, mevcut bir nesnenin yapısını değiştirmeden yeni işlevsellik eklemenizi sağlayan bir tasarım kalıbıdır. Genellikle fonksiyon veya metotların davranışını genişletmek için kullanılır. Python dekoratörlerini nasıl kullanacağınızı ayrı bir rehberde okuyabilirsiniz.
Örnek:
import functools
def my_decorator(func):
@functools.wraps(func) # preserves __name__, __doc__, etc.
def wrapper(*args, **kwargs):
print("Something is happening before the function is called.")
result = func(*args, **kwargs)
print("Something is happening after the function is called.")
return result
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
# Output:
# Something is happening before the function is called.
# Hello!
# Something is happening after the function is called.
16. Python'da bağlam yöneticileri (context managers) nedir ve nasıl uygulanırlar?
Bağlam yöneticileri, kaynakları yönetmek ve düzgün şekilde edinilip serbest bırakılmasını sağlamak için kullanılır. En yaygın kullanım, with deyimidir.
Örnek:
class FileManager:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
def __enter__(self):
self.file = open(self.filename, self.mode)
return self.file
def __exit__(self, exc_type, exc_value, traceback):
self.file.close()
with FileManager('test.txt', 'w') as f:
f.write('Hello, world!')
Bu örnekte, FileManager sınıfı bir bağlam yöneticisidir ve with bloğu içinde kullanıldıktan sonra dosyanın düzgün şekilde kapatılmasını garanti eder.
17. Python'da metasıflar (metaclass) nedir ve normal sınıflardan nasıl farklıdır?
Metasıflar, sınıfların sınıfıdır. Sınıfların nasıl davranacağını ve nasıl oluşturulacağını tanımlarlar. Normal sınıflar nesneler oluştururken, metasıflar sınıfları oluşturur. Metasıflar kullanarak sınıf tanımlarını değiştirebilir, kurallar dayatabilir veya sınıf oluşturma sırasında işlevsellik ekleyebilirsiniz.
Örnek:
class Meta(type):
def __new__(cls, name, bases, dct):
print(f"Creating class {name}")
return super().__new__(cls, name, bases, dct)
class MyClass(metaclass=Meta):
pass
# Output: Creating class MyClass
Python Veri Bilimi Mülakat Soruları
Python’un veri bilimi uygulamalarına daha çok odaklananlar için karşılaşabileceğiniz bazı sorular şunlardır.
18. NumPy'nin sıradan Python listelerine göre avantajları nelerdir?
NumPy’nin, sıradan Python listelerine göre çeşitli avantajları vardır:
- Bellek: NumPy dizileri, aynı türdeki öğeleri bitişik bloklarda sakladığı için daha bellek verimlidir. (Kesin bellek kullanımı öğe türüne ve sisteme bağlıdır;
sys.getsizeofveyaarray.nbytesile kontrol edebilirsiniz.) - Hız: NumPy, optimize edilmiş C uygulamaları kullanır; bu nedenle büyük diziler üzerindeki işlemler listelere göre çok daha hızlıdır.
- Çok Yönlülük: NumPy, vektörel işlemleri (ör. toplama, çarpma) destekler ve Python listelerinde bulunmayan birçok yerleşik matematiksel fonksiyon sağlar.
19. merge, join ve concatenate arasındaki fark nedir?
Merge
Benzersiz sütun tanımlayıcıyı kullanarak iki DataFrame veya seri nesnesini birleştirir.
İki DataFrame, her ikisinde de ortak bir sütun ve nasıl birleştirileceğine dair “how” argümanı gerekir. İki DataFrame’i left, right, outer, inner ve cross ile birleştirebilirsiniz. Varsayılan inner join’dir.
pd.merge(df1, df2, how='outer', on='Id')
Join
DataFrame’leri benzersiz indeks kullanarak birleştirir. İsteğe bağlı on argümanı bir sütun veya çoklu sütun adları olabilir. Varsayılan olarak join fonksiyonu left join yapar.
df1.join(df2)
Concatenate
Concatenate, iki veya daha fazla DataFrame’i belirli bir eksen boyunca (satırlar veya sütunlar) birleştirir. on argümanı gerektirmez.
pd.concat(df1,df2)
- join(): İki DataFrame’i indeks üzerinden birleştirir.
- merge(): İki DataFrame’i belirttiğiniz sütun veya sütunlar üzerinden birleştirir.
- concat(): İki veya daha fazla DataFrame’i dikey ya da yatay birleştirir.
20. Eksik değerleri nasıl tespit eder ve ele alırsınız?
Eksik değerleri tespit etme
DataFrame’de eksik değerleri isnull() fonksiyonunu kullanıp ardından sum() uygulayarak tespit edebiliriz. isnull() boolean değer döndürür; sum() ise her sütundaki eksik değer sayısını verir.
Örnekte, listeler sözlüğü oluşturup pandas DataFrame’e dönüştürdük. Sonra isnull().sum() ile her sütundaki eksik değer sayısını aldık.
import pandas as pd
import numpy as np
# dictionary of lists
dict = {'id':[1, 4, np.nan, 9],
'Age': [30, 45, np.nan, np.nan],
'Score':[np.nan, 140, 180, 198]}
# creating a DataFrame
df = pd.DataFrame(dict)
df.isnull().sum()
# id 1
# Age 2
# Score 1
Eksik değerlerle başa çıkma
Python’da eksik değerlerle başa çıkmanın çeşitli yolları vardır.
-
Eğer eksik değer içeriyorsa tüm satırı veya sütunu
dropna()ile düşürün. Bu yöntem önerilmez; çünkü önemli bilgiler kaybolabilir. -
Eksik değerleri sabit bir değer, ortalama, backward fill veya forward fill ile
fillna()fonksiyonunu kullanarak doldurun. -
Eksik değerleri sabit bir String, Integer veya Float ile
replace()fonksiyonunu kullanarak değiştirin. -
Eksik değerleri enterpolasyon yöntemiyle doldurun.
Not: dropna() fonksiyonunu kullanırken daha büyük bir veri kümesiyle çalıştığınızdan emin olun.
# drop missing values
df.dropna(axis = 0, how ='any')
#fillna
df.fillna(method ='bfill')
#replace null values with -999
df.replace(to_replace = np.nan, value = -999)
# Interpolate
df.interpolate(method ='linear', limit_direction ='forward')

Associate Data Scientist in Python kariyer yolunu tamamlayarak profesyonel bir veri bilimci olun. Python kütüphaneleriyle tüm temel veri bilimi konularını öğrenmeniz için 25 kurs ve altı proje içerir.
21. Görselleştirme için hangi Python kütüphanelerini kullandınız?
Veri görselleştirme, veri analizinin en önemli parçasıdır. Verilerinizi eylem halinde görürsünüz ve gizli kalıpları bulmanıza yardımcı olur.
En popüler Python veri görselleştirme kütüphaneleri şunlardır:
- Matplotlib
- Seaborn
- Plotly
- Bokeh
Python’da genellikle tüm türde veri görselleştirmeleri için Matplotlib ve seaborn kullanırız. Birkaç satırla saçılım grafiği, çizgi grafiği, kutu grafiği, çubuk grafiği ve daha fazlasını üretebilirsiniz.
Etkileşimli ve daha karmaşık uygulamalar için Plotly kullanırız. Birkaç satır kodla renkli etkileşimli grafikler oluşturabilirsiniz. Yakınlaştırma, animasyon ve kontrol işlevleri ekleyebilirsiniz. Plotly 40’tan fazla benzersiz grafik türü sağlar; hatta web uygulaması veya pano oluşturmak için de kullanılabilir.
Bokeh, büyük veri kümelerinde yüksek düzeyde etkileşimli ve ayrıntılı grafikler için kullanılır.
22. Bir veri kümesini Python’da nasıl normalize eder veya standartlaştırırsınız?
Normalizasyon, veriyi genellikle [0, 1] olmak üzere belirli bir aralığa ölçekler; standartlaştırma ise ortalaması 0, standart sapması 1 olacak şekilde dönüştürür. Her iki teknik de makine öğrenimi modelleri için veriyi hazırlamakta esastır.
Örnek:
from sklearn.preprocessing import MinMaxScaler, StandardScaler
import numpy as np
data = np.array([[1, 2], [3, 4], [5, 6]])
# Normalize
normalizer = MinMaxScaler()
normalized = normalizer.fit_transform(data)
print(normalized)
# Standardize
scaler = StandardScaler()
standardized = scaler.fit_transform(data)
print(standardized)
Python Kodlama Mülakat Soruları
Yakında bir Python kodlama mülakatınız varsa, bu tür sorulara hazırlanmak mülakatçıyı etkilemenize yardımcı olabilir.
23. Python'da string içindeki boşlukları verilen bir karakterle nasıl değiştirirsiniz?
Bu basit bir string işleme sorusudur. Boşluğu belirli bir karakterle değiştirmelisiniz.
Örnek 1: Kullanıcı l vey u metni ve o karakterini verdi; çıktı loveyou olacaktır.
Örnek 2: Kullanıcı D t C mpBl ckFrid yS le metni ve a karakterini verdi; çıktı DataCampBlackFridaySale olacaktır.
En basit yol, yerleşik str.replace() metodunu kullanarak boşlukları doğrudan verilen karakterle değiştirmektir.
def str_replace(text, ch):
return text.replace(" ", ch)
text = "D t C mpBl ckFrid yS le"
ch = "a"
str_replace(text, ch)
# 'DataCampBlackFridaySale'
24. Pozitif bir tamsayı num verildiğinde, eğer num tam kare ise True değilse False döndüren bir fonksiyon yazın.
Görece basit bir çözümü vardır. Sayının tam kare kökü olup olmadığını şu şekilde kontrol edebilirsiniz:
- Kesin tam sayı karekök için
math.isqrt(num)kullanın. - Bunu karesini alıp orijinal sayıya eşit olup olmadığını kontrol edin.
- Sonucu boolean olarak döndürün.
Test 1
valid_square() fonksiyonuna 10 sayısını verdik:
- Tam sayı karekökü 3’tür.
- 3’ün karesi 9’dur.
- 9, sayıya eşit olmadığından fonksiyon False döndürür.
Test 2
valid_square() fonksiyonuna 36 sayısını verdik:
- Tam sayı karekökü 6’dır.
- 6’nın karesi 36’dır.
- 36 sayıya eşit olduğundan fonksiyon True döndürür.
import math
def valid_square(num):
if num < 0:
return False
square = math.isqrt(num)
return square * square == num
valid_square(10)
# False
valid_square(36)
# True
25. Bir tamsayı n verildiğinde, n faktöriyel n!'de sondaki sıfırların sayısını döndürün.
Bu soruyu geçmek için önce n faktöriyeli (n!) hesaplamalı, sonra da sondaki sıfırları saymalısınız.
Faktöriyel bulma
İlk adımda, while döngüsüyle n faktöriyeli üzerinden yineleyecek ve n, 1’e eşit olduğunda duracağız.
Sondaki sıfırları hesaplama
İkinci adımda, toplam sıfırları değil sondaki sıfırları hesaplayacağız. Arada büyük fark vardır.
7! = 5040
Yedi faktöriyelde toplam iki sıfır vardır; ancak yalnızca bir tane sondaki sıfır bulunduğundan çözümümüz 1 döndürmelidir.
- Faktöriyel sayısını string’e dönüştürün.
- Tersten okuyup bir döngü uygulayın.
- Sayı 0 ise sonuca +1 ekleyin; değilse döngüyü kırın.
- Sonucu döndürün.
Çözüm zarif ama dikkat gerektirir.
def factorial_trailing_zeros(n):
fact = n
while n > 1:
fact *= n - 1
n -= 1
result = 0
for i in str(fact)[::-1]:
if i == "0":
result += 1
else:
break
return result
factorial_trailing_zeros(10)
# 2
factorial_trailing_zeros(18)
# 3
Bir sonraki Python kodlama mülakatınıza hazırlanmak için kodlama mülakatı soruları pratiği kursunu alın.
26. String, sözlükteki (dictionary) kelimelere bölünebilir mi?
Büyük bir string ve bir kelime sözlüğü verilir. Girdi string’i sözlükteki kelimeler kullanılarak bölümlere ayrılabiliyor mu, bunu bulmalısınız.

Görsel: Yazar
Çözüm oldukça basittir. Büyük string’i her noktadan bölümlere ayırıp, sözlükteki kelimelere ayrılabilir olup olmadığını kontrol etmelisiniz.
- Büyük string’in uzunluğu kadar döngü çalıştırın.
- İki alt string oluşturacağız.
- İlk alt string, büyük string’de her noktayı
s[0:i]ile kontrol eder. - İlk alt string sözlükte değilse False döndürür.
- İlk alt string sözlükteyse,
s[i:]ile ikinci alt string oluşturulur. - İkinci alt string sözlükteyse veya uzunluğu sıfırsa True döndürün.
can_segment_str()fonksiyonunu ikinci alt string ile özyinelemeli çağırın; bölünebiliyorsa True döndürün. - Daha uzun string’ler için çözümü verimli kılmak adına önbellekleme (memoization) ekleyin; böylece alt string’ler tekrar tekrar hesaplanmaz.
def can_segment_str(s, dictionary, memo=None):
if memo is None:
memo = {}
if s in memo:
return memo[s]
if not s:
return True
for i in range(1, len(s) + 1):
first_str = s[0:i]
if first_str in dictionary:
second_str = s[i:]
if (
not second_str
or second_str in dictionary
or can_segment_str(second_str, dictionary, memo)
):
memo[s] = True
return True
memo[s] = False
return False
s = "datacamp"
dictionary = ["data", "camp", "cam", "lack"]
can_segment_str(s, dictionary)
# True
27. Sıralı bir diziden yinelenenleri kaldırabilir misiniz?
Artan düzende sıralı bir tamsayı dizisi verildiğinde, her benzersiz öğe yalnızca bir kez görünecek şekilde yinelenenleri kaldırın. Bu problem için Python listelerinin uzunluğu yerinde (in-place) değişmediğinden, sonuçları aynı dizinin ilk k pozisyonuna yerleştirin ve k’yı (yeni uzunluk) döndürün. Çağrıdan sonra yalnızca ilk k öğe geçerlidir; k ötesindeki öğeler eski (geçersiz)dir.

Görsel: LeetCode
Örnek 1: girdi dizisi [1,1,2,2]; fonksiyon 2 döndürmelidir.
Örnek 2: girdi dizisi [1,1,2,3,3]; fonksiyon 3 döndürmelidir.
Çözüm:
- 1. indexten sona kadar döngü çalıştırın. Mevcut öğeyi önceki benzersiz öğeyle karşılaştırın; farklıysa, onu
insertIndexkonumuna yazın veinsertIndex’i artırın.insertIndex’i döndürün. - k olarak
insertIndex’i döndürün.
Bu soru, nasıl yapacağınızı bildiğinizde oldukça basittir. İfade üzerine biraz düşünerek kolayca bir çözüm üretebilirsiniz.
def removeDuplicates(array):
size = len(array)
if size == 0:
return 0
insertIndex = 1
for i in range(1, size):
if array[i - 1] != array[i]:
array[insertIndex] = array[i]
insertIndex += 1
return insertIndex
array_1 = [1, 2, 2, 3, 3, 4]
k1 = removeDuplicates(array_1)
# 4; array_1[:k1] -> [1, 2, 3, 4]
array_2 = [1, 1, 3, 4, 5, 6, 6]
k2 = removeDuplicates(array_2)
# 5; array_2[:k2] -> [1, 3, 4, 5, 6]
28. Dizide eksik sayıyı bulabilir misiniz?
1’den n’e kadar olan pozitif tamsayıların listesi verilmiştir. 1’den n’e kadar tüm sayılar vardır; sadece x eksiktir ve x’i bulmalısınız.
Örnek:
|
4 |
5 |
3 |
2 |
8 |
1 |
6 |
- n = 8
- eksik sayı = 7
Bu, basit bir matematik problemidir.
- Listedeki tüm öğelerin toplamını bulun.
- Aritmetik dizi toplamı formülüyle ilk n sayının beklenen toplamını bulun.
- Beklenen toplam ile öğelerin toplamı arasındaki farkı döndürün.
def find_missing(input_list):
sum_of_elements = sum(input_list)
# There is exactly 1 number missing
n = len(input_list) + 1
actual_sum = (n * ( n + 1 ) ) / 2
return int(actual_sum - sum_of_elements)
list_1 = [1,5,6,3,4]
find_missing(list_1)
# 2
29. Verilen bir string'in palindrom olup olmadığını belirleyen bir Python fonksiyonu yazın.
Bir string, ileri ve geri aynı okunuyorsa palindromdur.
Örnek:
def is_palindrome(s):
s = ''.join(e for e in s if e.isalnum()).lower() # Remove non-alphanumeric and convert to lowercase
return s == s[::-1]
print(is_palindrome("A man, a plan, a canal: Panama")) # Output: True
print(is_palindrome("hello")) # Output: False
Facebook, Amazon, Apple, Netflix ve Google İçin Python Mülakat Soruları
Aşağıda, Meta, Amazon, Google gibi en gözde pozisyonlarda karşılaşabileceğiniz bazı soruları derledik.
Facebook/Meta Python mülakat soruları
Meta’da karşılaşacağınız sorular büyük ölçüde role bağlıdır. Yine de şunlar beklenebilir:
30. Maksimum tekli al-sat kârını bulabilir misiniz?
Hisse senedi fiyatlarının listesi verilmiştir; en yüksek kârı elde etmek için alış ve satış fiyatını döndürmelisiniz.
Not: Tek bir al/sat ile maksimum kârı elde etmeliyiz; kâr edemiyorsak zararı minimize etmeliyiz.
Örnek 1: stock_price = [8, 4, 12, 9, 20, 1], alış = 4, satış = 20. Kârı maksimize eder.
Örnek 2: stock_price = [8, 6, 5, 4, 3, 2, 1], alış = 6, satış = 5. Zararı minimize eder.
Çözüm:
- Genel kârı, mevcut alış (listenin ikinci öğesi) ile genel satış (listenin ilk öğesi) arasındaki farktan hesaplayacağız.
- Döngüyü 1’den listenin uzunluğuna kadar çalıştıracağız.
- Döngü içinde, mevcut alış değeriyle liste öğeleri arasından mevcut kârı hesaplayacağız.
- Mevcut kâr, genel kârdan büyükse genel kârı mevcut kârla, genel satışı da listedeki i. öğeyle güncelleyeceğiz.
- Mevcut alış, listedeki mevcut öğeden büyükse mevcut alış değerini bu öğeyle değiştireceğiz.
- Sonunda genel alış ve satış değerini döndüreceğiz. Genel alış değerini, genel satıştan genel kârı çıkararak bulacağız.
Soru biraz yanıltıcı olabilir; kendi özgün algoritmanızla da çözebilirsiniz.
def buy_sell_stock_prices(stock_prices):
current_buy = stock_prices[0]
global_sell = stock_prices[1]
global_profit = global_sell - current_buy
for i in range(1, len(stock_prices)):
current_profit = stock_prices[i] - current_buy
if current_profit > global_profit:
global_profit = current_profit
global_sell = stock_prices[i]
if current_buy > stock_prices[i]:
current_buy = stock_prices[i]
return global_sell - global_profit, global_sell
stock_prices_1 = [10,9,16,17,19,23]
buy_sell_stock_prices(stock_prices_1)
# (9, 23)
stock_prices_2 = [8, 6, 5, 4, 3, 2, 1]
buy_sell_stock_prices(stock_prices_2)
# (6, 5)
Amazon Python mülakat soruları
Amazon’daki Python mülakatları oldukça çeşitlenebilir; ancak şunlar sorulabilir:
31. Bir dizide Pisagor üçlüsü bulabilir misiniz?
a2 + b2 = c2 koşulunu sağlayan bir Pisagor üçlüsü varsa True döndüren bir fonksiyon yazın.
Örnek:
|
Girdi |
Çıktı |
|
[3, 1, 4, 6, 5] |
True |
|
[10, 4, 6, 12, 5] |
False |
Çözüm:
-
Dizideki tüm öğelerin karesini alın.
-
Diziyi artan düzende sıralayın.
-
İki döngü çalıştırın. Dış döngü, dizinin son indeksinden 1’e doğru; iç döngü ise (
outer_loop_index - 1)’den başa doğru ilerler. -
Dış ve iç döngü indeksleri arasındaki öğeleri depolamak için bir
set()oluşturun. -
Kümeye ekli bir sayının
(array[outerLoopIndex] – array[innerLoopIndex])’e eşit olup olmadığını kontrol edin. VarsaTrue, yoksaFalsedöndürün.
def checkTriplet(array):
n = len(array)
for i in range(n):
array[i] = array[i]**2
array.sort()
for i in range(n - 1, 1, -1):
s = set()
for j in range(i - 1, -1, -1):
if (array[i] - array[j]) in s:
return True
s.add(array[j])
return False
arr = [3, 2, 4, 6, 5]
checkTriplet(arr)
# True
32. Bozuk paralar ve toplam tutarla kaç farklı şekilde para üstü verilebilir?
Para birimi değerleri listesi ve toplam tutarı alan ve kaç farklı şekilde para üstü verilebileceğini döndüren bir fonksiyon oluşturmalıyız.
Örnekte, [1, 2, 5] para değerlerini ve 5 toplam tutarını verdik. Sonuç olarak dört farklı yol elde ederiz.

Görsel: Yazar
Çözüm:
-
amount + 1boyutunda bir liste oluşturacağız. Sıfır tutar için çözümü saklamak adına ek alan gerekir. - Çözüm listesini
solution[0] = 1 ile başlatacağız. - İki döngü çalıştıracağız. Dış döngü para değerleri üzerinde yineleyecek; iç döngü mevcut para değerinden başlayıp
amount + 1’e kadar gidecek. - Farklı para değerlerinin sonuçları solution dizisinde depolanır.
solution[i] = solution[i] + solution[i - den].
Süreç, para değerleri listesindeki tüm öğeler için tekrarlanır ve çözüm listesinin son öğesinde sonuç yer alır.
def solve_coin_change(denominations, amount):
solution = [0] * (amount + 1)
solution[0] = 1
for den in denominations:
for i in range(den, amount + 1):
solution[i] += solution[i - den]
return solution[amount]
denominations = [1, 2, 5]
amount = 5
solve_coin_change(denominations, amount)
# 4
Google Python mülakat soruları
Diğer şirketlerde olduğu gibi Google Python mülakat soruları da role ve deneyim seviyesine bağlıdır. Ancak yaygın bazı sorular şunlardır:
33. Python'da lambda fonksiyonu, yineleyici (iterator) ve üreteç (generator) tanımlayın.
Lambda fonksiyonu, anonim fonksiyon olarak da bilinir. Herhangi bir sayıda parametre alabilir; ancak tek bir ifadeyi değerlendirip döndürür.
Yineleyici, listeler, sözlükler, demetler ve kümeler gibi yinelenebilir nesneler üzerinde yineleme yapabildiğimiz bir nesnedir.
Üreteç, normal bir fonksiyona benzer; ancak return yerine yield ile değer üretir. Fonksiyon gövdesi yield içeriyorsa otomatik olarak üreteç olur.
Python yineleyicileri ve üreteçleri hakkında daha fazlasını tam rehberimizde okuyun.
34. Bir dizi arr[] verildiğinde, arr[j] > arr[i] olacak şekilde maksimum j – i değerini bulun
Bu soru oldukça basittir; ancak dikkat ister. Pozitif tamsayılardan oluşan bir dizi verilir. array[j] > array[i] olacak şekilde j - i farkının maksimumunu bulmalıyız.
Örnekler:
- Girdi: [20, 70, 40, 50, 12, 38, 98], Çıktı: 6 (j = 6, i = 0)
- Girdi: [10, 3, 2, 4, 5, 6, 7, 8, 18, 0], Çıktı: 8 ( j = 8, i = 0)
Çözüm:
- Dizinin uzunluğunu hesaplayın ve maksimum farkı -1 ile başlatın.
- İki döngü çalıştırın. Dış döngü soldan öğeleri seçer; iç döngü sağdan başlayarak seçilen öğeyle karşılaştırır.
- İç döngüyü, öğe seçilen öğeden büyük olduğunda durdurun ve j - i ile maksimum farkı güncellemeye devam edin.
def max_index_diff(array):
n = len(array)
max_diff = -1
for i in range(0, n):
j = n - 1
while(j > i):
if array[j] > array[i] and max_diff < (j - i):
max_diff = j - i
j -= 1
return max_diff
array_1 = [20,70,40,50,12,38,98]
max_index_diff(array_1)
# 6
35. Python'da üçlü (ternary) operatörleri nasıl kullanırsınız?
Üçlü operatörler, koşullu ifadeler olarak da bilinir. Koşulların True/False olmasına göre ifadeyi değerlendirirler.
Çok satırlı if-else yazmak yerine tek satırda koşullu ifade yazabilirsiniz. Bu, daha temiz ve derli toplu kod yazmanızı sağlar.
Örneğin, iç içe if-else ifadelerini aşağıda gösterildiği gibi tek satıra dönüştürebiliriz.
If-else ifadesi
score = 75
if score < 70:
if score < 50:
print('Fail')
else:
print('Merit')
else:
print('Distinction')
# Distinction
İç içe Ternary Operatörü
print('Fail' if score < 50 else 'Merit' if score < 70 else 'Distinction')
# Distinction
36. Python'da bir LRU Cache'i nasıl uygularsınız?
Python, LRU (En Son En Az Kullanılan) önbelleğini uygulamak için yerleşik functools.lru_cache dekoratörünü sağlar. Alternatif olarak collections’taki OrderedDict ile manuel olarak da oluşturabilirsiniz.
functools kullanarak örnek:
from functools import lru_cache
@lru_cache(maxsize=3)
def add(a, b):
return a + b
print(add(1, 2)) # Calculates and caches result
print(add(1, 2)) # Retrieves result from cache
Python Yapay Zekâ ve Makine Öğrenimi Mülakat Soruları
Yapay zekâ ve büyük dil modellerinin (LLM) hızla yükselişiyle, Python mülakatlarında modern AI/ML kavramlarına dair sorular giderek artıyor. 2026 için hazırlanmanız gereken kilit sorular aşağıdadır.
37. Büyük Dil Modeli (LLM) nedir ve Python'da nasıl kullanırsınız?
Büyük Dil Modeli (LLM), insan benzeri metni anlamak ve üretmek üzere devasa metin veri kümeleri üzerinde eğitilmiş bir derin öğrenme modelidir. Popüler LLM’ler arasında GPT-5, Claude, Llama ve Gemini bulunur. Python’da LLM’lerle API’ler aracılığıyla etkileşim kurabilir veya yerel olarak çalıştırabilirsiniz.
OpenAI API kullanarak örnek:
from openai import OpenAI
client = OpenAI(api_key="your-api-key")
response = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain Python decorators in simple terms."}
]
)
print(response.choices[0].message.content)
Daha fazlası için LangChain ile LLM Uygulamaları Nasıl Kurulur eğitimimize bakın.
38. RAG (Retrieval-Augmented Generation) nedir ve neden önemlidir?
RAG, üretken yapay zekâyı alma (retrieval) sistemleriyle birleştirerek daha doğru ve temellendirilmiş yanıtlar üretir. Sadece LLM’nin eğitim verilerine dayanmak yerine, bir bilgi tabanından ilgili belgeleri getirir ve üretim için bağlam olarak kullanır.
Bir RAG sisteminin temel bileşenleri:
- Belge Deposu: Gömülü belgeleri saklayan bir vektör veritabanı (Pinecone, Chroma veya FAISS gibi)
- Retriever: Sorgu benzerliğine göre ilgili belgeleri bulur
- Üretici: Getirilen bağlamı kullanarak yanıt üreten bir LLM
Örnek RAG iş akışı:
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQA
# Create vector store from documents
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(documents, embeddings)
# Create RAG chain
llm = ChatOpenAI(model="gpt-4")
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever()
)
# Query the system
result = qa_chain.invoke("What are Python best practices?")
print(result)
İleri teknikler için RAG Performansı Nasıl İyileştirilir rehberimizi okuyun.
39. AI uygulamaları için Python’da async/await'i nasıl kullanırsınız?
Birden fazla API çağrısı yapan veya eşzamanlı istekleri yöneten AI uygulamalarında eşzamansız programlama esastır. Python’un asyncio modülü, engellemesiz I/O işlemlerini etkinleştirir.
Örnek: Eşzamanlı LLM API çağrıları:
import asyncio
from openai import AsyncOpenAI
client = AsyncOpenAI()
async def get_completion(prompt: str) -> str:
response = await client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
async def process_multiple_prompts(prompts: list[str]) -> list[str]:
tasks = [get_completion(prompt) for prompt in prompts]
return await asyncio.gather(*tasks)
# Run concurrent requests
prompts = ["Explain Python lists", "Explain Python dicts", "Explain Python sets"]
results = asyncio.run(process_multiple_prompts(prompts))
for result in results:
print(result)
Daha fazla bilgi için Python Async Programlama Rehberi’ne dalın.
40. Gömlemeler (embeddings) nedir ve makine öğreniminde nasıl kullanılır?
Gömlemeler, verinin (metin, görsel vb.) anlamsal içeriğini yakalayan yoğun vektör temsilleridir. Benzer öğelerin gömlemeleri de benzerdir; bu sayede anlamsal arama, kümeleme ve öneri sistemleri gibi görevler mümkün olur.
Örnek: Metin gömlemesi oluşturma:
from sentence_transformers import SentenceTransformer
import numpy as np
# Load embedding model
model = SentenceTransformer('all-MiniLM-L6-v2')
# Create embeddings
sentences = [
"Python is a programming language",
"JavaScript is used for web development",
"Python is great for data science"
]
embeddings = model.encode(sentences)
# Calculate similarity
def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
# Python sentences are more similar to each other
print(f"Similarity 0-2: {cosine_similarity(embeddings[0], embeddings[2]):.3f}") # Higher
print(f"Similarity 0-1: {cosine_similarity(embeddings[0], embeddings[1]):.3f}") # Lower
41. Python'da bir AI ajanını nasıl kurarsınız?
AI ajanları, ortamlarını algılayabilen, karar verebilen ve hedeflere ulaşmak için eylem alabilen otonom sistemlerdir. Modern AI ajanları genellikle LLM’leri araçlar ve bellekle birleştirir.
Bir AI ajanının temel bileşenleri:
- LLM Çekirdeği: Girdileri işleyip eylemlere karar veren akıl yürütme motoru
- Araçlar: Ajanın çağırabileceği fonksiyonlar (web araması, kod çalıştırma, API’ler)
- Bellek: Kısa vadeli (sohbet) ve uzun vadeli (vektör deposu) bellek
- Planlama: Karmaşık görevleri alt görevlere ayırma
LangChain kullanarak örnek:
from langchain.agents import create_openai_functions_agent, AgentExecutor
from langchain.chat_models import ChatOpenAI
from langchain.tools import Tool
from langchain import hub
# Define tools
def search_database(query: str) -> str:
return f"Results for: {query}"
tools = [
Tool(
name="DatabaseSearch",
func=search_database,
description="Search the company database for information"
)
]
# Create agent
llm = ChatOpenAI(model="gpt-4")
prompt = hub.pull("hwchase17/openai-functions-agent")
agent = create_openai_functions_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)
# Run agent
result = agent_executor.invoke({"input": "Find sales data for Q4"})
print(result["output"])
Daha fazlası için LangChain Ajanları Oluşturma eğitimimize göz atın.
Ekibinizi Python ile Geliştirmek
Python mülakat hazırlığı iş arayanlar ve işe alım yöneticileri için önemli olsa da, işletmelerin ekipleri için sürekli Python eğitimi yatırımı yapması da aynı derecede önemlidir. Otomasyonun, veri analizinin ve yazılım geliştirmenin belirleyici olduğu bir çağda, çalışanlarınızın güçlü Python becerilerine sahip olmasını sağlamak şirketinizin başarısı için dönüştürücü olabilir.
Tüm ekibinizin Python konusunda yetkin olmasını isteyen bir ekip lideri veya işletme sahibiyseniz, DataCamp for Business temel seviyeden ileri konseptlere kadar çalışanlarınızın Python becerilerinde ustalaşmasına yardımcı olacak, özel olarak tasarlanmış eğitim programları sunar. Şunları sağlayabiliriz:
- Hedefe yönelik öğrenme yolları: Ekibinizin mevcut beceri düzeyine ve iş ihtiyaçlarına göre özelleştirilebilir.
- Uygulamalı pratik: Öğrenmeyi pekiştiren ve kalıcılığı artıran gerçek dünya projeleri ve kodlama alıştırmaları.
- İlerleme takibi: Ekibinizin ilerlemesini izleyip değerlendirmenize, öğrenme hedeflerine ulaştıklarından emin olmanıza yardımcı olan araçlar.
DataCamp gibi platformlar üzerinden Python beceri geliştirmeye yatırım yapmak, ekibinizin yetkinliklerini artırmakla kalmaz; işletmenize stratejik avantaj da sağlar; yenilik yapmanıza, rekabetçi kalmanıza ve etkili sonuçlar üretmenize yardımcı olur. Ekibimizle iletişime geçin ve bugün bir demo isteyin.
Son Düşünceler
Python mülakat sorularına hakim olmak, teknik mülakatlarda başarılı olmayı hedefleyen herkes için—ister veri profesyoneli, ister geliştirici, ister yazılım mühendisi olsun—kritiktir. Bu rehber, temel düzeyden ileri seviyeye kadar yaygın Python mülakat sorularını, kodlama zorluklarını ve büyük teknoloji şirketlerinden spesifik soruları özetledi.
Bu soruları pratiğe döküp çözümlerini anlayarak, problem çözme becerilerinizi ve teknik bilginizi önemli ölçüde geliştirebilir, mülakatların teknik ve kodlama aşamalarını geçmeye iyi hazırlanmış olursunuz.
En iyi Python sertifikalarını takip etmek ve kurslar ile projeler üzerinden sürekli öğrenmeye devam etmek, uzmanlığınızı ve teknoloji sektöründeki kariyer olanaklarınızı daha da güçlendirecektir. Becerilerinizi tazelemeniz gerekiyorsa Associate Data Scientist in Python kariyer yolumuzu tamamladığınızdan emin olun.
AI ve makine öğrenimi rolleri için hazırlananlar, Python Makine Öğrenimi Eğitimimizde scikit-learn ve diğer temel kütüphanelerle uygulamalı pratik bulabilir.
Python Mülakat SSS
Bir Python mülakatına nasıl hazırlanırım?
Python sözdizimini, fonksiyonları, sınıfları, veri tiplerini, algoritmaları, veri yapılarını ve istisna yönetimini gözden geçirmelisiniz. Ayrıca teknik eğitimler okumalı, örnek projeleri incelemeli, cheat sheet’lere ve deneme sorularına bakmalı, kodlama alıştırmaları çözmelisiniz.
Yerleşik Python işlevselliği hakkında genel sorulara, role özgü sorulara (data engineer, data scientist, backend developer) ve süreli kod tabanlı sorulara hazırlanmalısınız. makine öğrenimi Python sorularını ve istatistik Python mülakat sorularını DataCamp ile pratik edebilirsiniz.
Bir Python kodlama mülakatında nasıl öne çıkarım?
Üretime hazır, temiz kod yazabildiğinizi göstermeniz; role özgü Python kütüphanelerini, araçlarını ve algoritmalarını anlamanız; karmaşık problemlere özgün çözümler üretebilmeniz gerekir. Bunların hepsini kodlama alıştırmaları yaparak veya açık kaynak projelerde çalışarak başarabilirsiniz.
Ayrıca GitHub ve kişisel web sitenizde Python tabanlı projelerden oluşan bir portföy oluşturarak öne çıkabilirsiniz.
Python'da Lambda nedir?
Lambda fonksiyonu, isimsiz (anonim) fonksiyon olarak da bilinir; adı olmayan bir Python fonksiyonudur. Herhangi bir sayıda argüman alabilir; ancak yalnızca tek bir ifadeyi değerlendirip döndürür.
Sözdizimi:
lambda arguments : expression
Örnek:
lambda_add = lambda a : a + 10
print(lambda_add (7))
# 17Python'un beş ana kullanım alanı nedir?
- Web siteleri ve yazılımlar geliştirme
- Betik yazma ve yardımcı yazılımlar
- Masaüstü uygulamaları
- Veri analizi
- Makine öğrenimi
map for döngüsünden daha hızlı mı?
“map”, bir fonksiyonu bir yinelenebilirdeki her öğeye uyguluyorsanız “for döngüsü”nden daha hızlıdır.
Python mülakatlarına hazırlık için ÜCRETSİZ kaynaklar var mı?
Evet! Bir üniversite öğretim görevlisi veya öğrencisiyseniz, tüm kurs kataloğumuza ÜCRETSİZ erişmek için DataCamp Classrooms’u kullanabilirsiniz.
2026'daki AI/ML mülakatları için hangi Python konularına odaklanmalıyım?
2026’daki AI/ML mülakatları için şu konulara odaklanın: LLM kavramları (transformer’lar, dikkat mekanizmaları, ince ayar vs. isteme, prompting), RAG (Retrieval-Augmented Generation) sistemleri, vektör veritabanları ve gömlemeler, API çağrıları için Python async programlama ve LangChain, Hugging Face, PyTorch gibi çerçeveler. Ayrıca prompt engineering tekniklerini ve ML modellerinin nasıl değerlendirileceğini anlamalısınız.
