Python Mülakat Soru ve Cevapları

Gökhan YAVAŞ
gokhanyavas
Published in
6 min readDec 28, 2016

Python Geliştiricisi veya Django Geliştiricisi için iş mülakatlarında sorulabilecek en iyi Python mülakat soru ve cevapları.

[highlighted_text ]Python ile Java’yı Karşılaştırın.[/highlighted_text]

KriterJavaPythonKullanım KolaylığıİyiÇok İyiKodlama HızıOrtalamaMükemmelVeri TipleriStatik tiplerDinamik tiplerVeri Bilimi ve Makine UygulamalarıOrtalamaMükemmel
[highlighted_text ]Help() ve dir() fonksiyonlarını açıklayın.[/highlighted_text]

Help() fonksiyonu ile python’da herhangi bir konuda yardıma ihtiyacımız olduğunda bu komut yardımıyla bilgi alabilirsiniz. dir() fonksiyonu ile nesnelerin özellikleri hakkında bilgi edinebiliriz. Kullanım detaylarına buradan ulaşabilirsiniz.

[highlighted_text ]Yardım penceresinden çıkmak için hangi komutu kullanırsınız?[/highlighted_text]

quit komutunu kullanırız. Çünkü bu komut ile yardım penceresi sonlanır ve etkileşimle kabuk görüntülenir.

[highlighted_text ]help() ve dir() komutlarıyla, tüm fonksiyon(built_in) ve değişkenlerin adlarını listeleyebilir miyiz? Cevap hayırsa bunları nasıl listeleriz? [/highlighted_text]

Hayır. Max(), Min(), filter(), vb. gömülü fonksiyonlar belirgin değildir. Standart modülün parçası olarak kullanılabilir. Onları görüntülemek için gömülü fonksiyonların dir() argümanını kullanırız. Gösterilecek gömülü fonksiyonlar, istisnalar ve diğer nesneleri bir liste olarak görmek için dir(__builtins__) şeklinde kullanabiliriz.

[highlighted_text ]Python’nun çalışma prensibini açıklayınız. [/highlighted_text]

Python yorumlamalı bir dildir. Yorumlamalı dillerin kullanım kolaylıklarını barındırmasıyla birlikte, derlemeli dillerinde bazı özelliklerini taşımaktadır. Örneğin yazdığımız programların derlenmesi işleminde öncelikle ara derleme dediğimiz byte code şekline getirilir. Sonrasında bu ara derleme yorumlanır. Şayet daha önce bu kodlar derlenmişse kodlar direk yorumlanır.

[highlighted_text ]zip() fonksiyonunu açıklayın.[/highlighted_text]

İki listenin elemanlarını birleştirmek için kullanırız. Örnek olarak:

list1 = [a, b, c]
list2 = [1, 2, 3]
print(zip(list1,list2))

[highlighted_text ]pass nedir?[/highlighted_text]
Pass deyimi görmezden gel, işlem yapma, pas geç anlamındadır. Örneği buradan inceleyebilirsiniz.[highlighted_text ]Web Scraping (Veri Çekme) Nedir? Python'da bunu nasıl yaparız?[/highlighted_text]Çeşitli yazılım ve metodlar ile web sitelerinden içerik kopyalama işlemine web scraping denir. İlgili web sayfası requests modülü ile parse edilir. Web Scraping yapmak için birkaç modül vardır bunlar: urllib2, scrapy, pyquery, BeautifulSoap, vb.[highlighted_text ]Modül nedir?[/highlighted_text]Bir takım işlevi yerine getirebilmemizi sağlayan, fonksiyonları ve nitelikleri içinde barındıran araçlara modül denir. Daha detaylı bilgiye buradan ulaşabilirsiniz.[highlighted_text ]with kullanımını açıklayınız?[/highlighted_text]Python'da genellikle with ifadesi bir dosyayı açmak, dosyadaki verileri işlemek için ayrıca bir close() metodu çağırmadan dosyayı kapatmak için kullanılır. Örnek:with open('veriler.txt', 'w') as veriler:[highlighted_text ]Python'da kullanılan tüm dosya işleme modlarını açıklayınız.[/highlighted_text]Python, üç moddan birinde dosyaları açmanıza izin verir. Onlar:
Sırasıyla "r", "w", "rw", "a" harfleri belirterek sırasıyla salt okunur mod, salt yazma modu, okuma-yazma modu ve ek modu. Bir metin dosyası yukarıda belirtilen modlardan herhangi birinde "t" seçeneği ile birlikte açılabilir. "r", "w", "rw" ve "a", böylece önceki modlar "rt", "wt", "rwt" ve "at" haline gelir. İkili (Binary) dosya, yukarıdaki modların "r", "w", "rw" ve "a" ile birlikte "b" seçeneğini belirleyerek yukarıdaki modları "rb", "wb", "rwb", "ab" kombinasyonlarından oluşur.
[highlighted_text ]Bir metin dosyasını açmanın ve içeriğini görüntülemenin en kısa yolunu açıklayın.[/highlighted_text]with kullanarak yapabiliriz.with open("file-name", "r") as fp:
fileData = fp.read()
[highlighted_text ]Bir sözlük ne zaman bir liste yerine kullanılır?[/highlighted_text]Sözlükler ve Listeler. Genel olarak sözlük nesnesinde arama işlemi, bir liste nesnesi aramaktan daha hızlıdır.[highlighted_text ]enumerate() fonksiyonu nedir?[/highlighted_text]Bu fonksiyon ile nesneleri numaralandırabiliriz. Bu fonksiyonla ilgili detaylı bilgi burada.[highlighted_text ]Python'da pattern matching(desen eşleştirme) nasıl yapılır?[/highlighted_text]Düzenli ifadeler (Regular Expressions/REs/ regex), belirli bir dizenin, belirli bölümlerini eşleştirebilecek ifadeleri belirlememizi sağlar. Örneğin, tek bir karakteri veya bir rakamı, bir telefon numarasını veya bir e-posta adresini vb. Eşleştirmek için normal bir ifade tanımlayabiliriz. Regex işlemleri için re modülünü kullanırız.[highlighted_text ]Belirli bir metin dizesindeki bir kalıbın eşleşmelerini eşleştirmek ve aramak için birkaç yöntemi belirtin?[/highlighted_text]Desen eşleştirmek için re modülünde 4 farklı yöntem bulunur. Bunlar: match(), search(), matches findall(), finditer() 'dir.[highlighted_text ]split(), sub(), subn() metotlarını açıklayınız.[/highlighted_text]split(): Karakter dizilerini belli noktalardan bölmek için kullanılır.sub(): Karakter dizilerini değiştirmek için kullanılır. replace() metoduna çok benzer.subn(): Bu metod, bir metin içinde yapılan değişiklik sayısını göstermek için kullanılır.[highlighted_text ]JSON nedir? JSON verilerini Python verilerine nasıl dönüştürebiliriz?[/highlighted_text]JSON (JavaScript Object Notation) hafif bir veri değişim formatıdır. NoSQL'de saklamak için popüler bir veri formatıdır. JSON iki yapı üzerine kurulmuştur:
  • İsim/değer çifti koleksiyonu.
  • Sıralı değer listesi.
Python JSON ayrıştırıcılarını desteklediğinden, JSON tabanlı veri aslında Python'da bir sözlük olarak temsil edilmektedir. JSON modülünün load() işlevini kullanarak json verilerini python'a dönüştürebilirsiniz[highlighted_text ]İstatiksel, sayısal ve bilimsel hesaplamalar için birkaç Python Modül örneği veriniz? [/highlighted_text]NumPy ve SciPy kütüphaneleri örnek verilebilir. Detaylı bilgiye burada.[highlighted_text ]Tkinter Nedir? [/highlighted_text]Tkinter, Python ile varsayılan olarak gelen görsel arayüz (GUI) kütüphanesidir.[highlighted_text]Özel Nesnelerin inşasında ve başlatılmasında kullanılan Python'un 3 sihirli yöntemini isimlendirin ve açıklayın.[/highlighted_text]Python'un özel nesnelerin oluşturulması ve başlatılması için kullanılan sihirli yöntemleri şunlardır:
  • __init()__
  • __new()__
  • __del()__
Yani inşa, ilklendirme ve sonladırmadır. Buradaki new ve del nesneleri nadiren kullanılmaktadır. Detaylı Anlatım.[highlighted_text]Python nesneye yönelik midir? Nesne yönelimli programlama nedir?[/highlighted_text]Evet. OOP, sınıflar ve nesneler olarak adlandırılan sınıfların örneklerini temel alan programlama paradigmasıdır. OOP'nun özellikleri:Encapsulation, Data Abstraction, Inheritance, Polymorphism. Detaylı bilgiye buradan ulaşın.[highlighted_text]Sınıf Nedir? Python'da nasıl yaratabilirsiniz?[/highlighted_text]Sınıflar, nesne üretmemizi sağlayan veri tipleridir. Detaylı bilgi burada.class Personel:
'Personel Sınıfımız'
personel_isimi = "Gokhan Yavas"
personel_unvani = "Python Developer"
personel_maasi = 5000
print(personel_isimi, personel_unvani, personel_maasi, sep=",")
[highlighted_text]İstisna İşlemleri Nedir? Python'da bunu nasıl yaparız?[/highlighted_text]
İstisna İşlemleri, sözdizimi hatalarından dolayı veri tipleri uyuşmaması nedeniyle, kodların ve komut dosyalarının çalışma zamanında bir hata alındığında G/Ç işlemini yapmasını engellemektedir. Detaylı anlatım.[highlighted_text]Bir örnekle Python'da Miras Almayı (Inheritance) açıklayın.[/highlighted_text]Miras alma yazılan kodların tekrar kullanılmasını sağlayan OOP özelliğidir.class Ebeveyn:
"""ebeveyn sinifimiz"""
def annenin_goz_rengi(self):
return 'mavi'
def babanin_sac_rengi(self):
return 'sari'
class Cocuk(Ebeveyn): #Cocuk sinifi Ebeveyn Sinifindan miras aldi
"""cocuk sinifimiz"""
def __init__(self, adi=''):
self.adi = adi
def benzerlik(self):
print(self.adi,"nin sac rengi muhtemelen", self.babanin_sac_rengi(), "olacak.")
[highlighted_text]Multithreading nedir?[/highlighted_text]
Birden fazla iş parçacığı çağırarak eşzamanlı olarak aynı anda birkaç farklı programı çalıştırmak demektir.[highlighted_text]Örnek değişkenlerin, Sınıf değişkenlerinden farkı nedir?[/highlighted_text]Örnek değişkenleri: bir nesnedeki yerel değerlere sahip değişkenler. Aynı sınıfın iki nesnesi, değişkenleri için farklı değerler korur. Bu değişkenlere "object-name.instancevariable-name" ile erişilir.
Sınıf değişkenleri: bunlar sınıf değişkenleridir. Aynı sınıfın tüm nesneleri "Sınıf değişkenleri" nin değerini paylaşır. Sınıf isimleriyle tek başına "class-name.classvariable-name" olarak erişilirler. Bir nesnedeki bir sınıf değişkeninin değerini değiştirirseniz, yeni değeri aynı sınıfın diğer tüm nesneleri arasında görülebilir. Java dünyasında statik olarak bildirilen bir değişken sınıf değişkenidir.
[highlighted_text]Python’a özgü hata göstermeye yarayan deyimleri açıklayın?[/highlighted_text]Raise deyimi ile Python'a özgü hata gösterebiliriz. Detaya buradan uluşabilirsiniz.
[highlighted_text]@property nedir?[/highlighted_text]
Property, özellik, nitelik anlamlarına gelmektedir. Property dekoratörünün yaptığı en temel iş, bir metodu, nitelik gibi kullanılabilir hale getirmektir. Detay[highlighted_text]"* .py" ve "* .pyc" dosyası arasında farkı açıklayın?[/highlighted_text]Hem .py hem de .pyc dosyaları bayt kodunu tutar. ". Pyc" Python dosyasının derlenmiş bir versiyonudur. Bu dosya, performansı artırmak için Python tarafından otomatik olarak oluşturulur. .Pyc dosyası, platformdan bağımsız olan ve .pyc biçimini destekleyen herhangi bir işletim sisteminde yürütülebilen bayt koduna sahip. Not: Program, .pyc veya .py dosyasından okunduğunda hız farkı yoktur; Tek fark yükleme süresi.[highlighted_text]Python kodu aracılığıyla MySQL veritabanındaki bir tablodan veri nasıl alınır? Açıklayınız?[/highlighted_text]
  • MySQLdb modülünü import edelim.
  • import MySQLdb
  • Veritabanıyla bağlantı kuralım:
  • db = MySQLdb.connect(“host”=”local host”,
    “database-user”=”user-name”, “password”=”password”,
    “database-name”=”database”)
  • Kurulan bağlantıyı cursor değişkeni üzerinde başlatalım:
  • c1 = db.cursor ()
  • Gereken sorguyu yazarak bilgileri getirelim:
  • s = “Select * from salary”
  • Verileri fetch() kullanarak yazdıralım:
  • data = c1.fetch(s)
  • Veritabanı bağlantısını kapatalım:
  • Db.close()
[highlighted_text]ODBC hakkında bilgi verin?[/highlighted_text]ODBC(Open Database Connectivity), birbirinden farklı veritabanlarına (MySQL, Oracle, MSSQL vb.) standart metotlarla bağlantı yapmanızı sağlar. Bir nevi veritabanları ve uygulamalar arasında bir köprü görevi görürler. Python için 3 ODBC modülü vardır:
  • PythonWin ODBC modülü
  • mxODBC
  • pyodbc
[highlighted_text]Python sınıfında korumalı bir üyeyi nasıl tanımlarsınız?[/highlighted_text]Python'daki bir sınıfın tüm üyeleri varsayılan olarak herkese açıktır. Bir sınıfın üyesine önek olarak '_' ekleyerek, korumalı bir üye oluşturmuş oluruz. Detaylı anlatım.[highlighted_text]Append() ve extend() yöntemlerini açıklayın?[/highlighted_text]append(): Bir listeye öge eklemek için kullanıyoruz. Örneğin:liste = ["python", "java", "sql"]
liste.append("js")
extend(): Listeleri genişletmek için kullanırız. Örneğin:list1 = [1, 3, 5]
list2 = [7, 9, 11]
list1.extend(list2)#append kullanirsak Cikti:[1, 3, 5,[7, 9, 11]]
print(list1)
Cıktı: [1, 3, 5,7, 9, 11]
[highlighted_text]Web uygulamaları geliştirmek için kullanılan birkaç Python kütüphanesini açıklayın?[/highlighted_text]Python'da web uygulamaları geliştirmek için kullanılan birçok kütüphane mevcuttur. Bunlardan bazıları:
  • Django: Python Programlama diliyle yazılmış MTV mimari deseni kullanılan, yüksek seviyeli web kütüphanesidir.
  • Flask: Güçlü ve kolay öğrenilebilen bir kütüphanedir. Hafif uygulamalar ve projeler için uygundur.
  • CherryPy: Nesne Yönelimli Programlama’ya dayalı web geliştirme ortamıdır.
  • Web2Py: Web uygulamaları geliştirmek için kullanılan tüm web kütüphanelerinin en basitidir.
[highlighted_text]Python'da bir dosyanın varlığını nasıl kontrol ederiz?[/highlighted_text]os.path.exists(): Bir dosya veya dizinin var olup olmadığını kontrol eder. Örneğin:import os
os.path.exists('/Users/gokhanyavas/Desktop/times.txt')
os.path.isfile(): Kendisine parametre olarak verilen öğenin bir dosya olup olmadığını sorgular. Örnek:os.path.isfile('/Users/gokhanyavas/Desktop/times.txt')Eğer parametre doğru ise True değeri, eğer dizin ise False değeri döndürür.os.path.isdir(): Kendisine verilen parametrenin bir dizin olup olmadığını sorgular. Örnek:os.path.isdir('/Users/gokhanyavas/Desktop/')os.path.getsize(): Verilen dosyanın boyutunu döndürür.os.path.getmtime(): - verilen yolun zaman bilgisini döndürür.

--

--