Test sorularını aşağıda görebilirsiniz.
Teknik görüşme hakkında yine bazı yorumlarım olacak.
Teknik görüşmede birkaç basic python sorusu soruldu. Context manager nedir diye bir soru soruldu (yine basic python ama ayrıca bahsetmek istedim). Açıkçası o an hiç aklıma gelmedi. Aslında pythonda “with” keywordünün ne yaptığını, ne işe yaradığını, hangi durumlarda kullanıldığını biliyordum ayrıca context manager ve “with” arasındaki bağlantıyı da biliyordum (“with” keywordü, direkt olarak context manager olarak mı geçiyor yoksa context manager’a erişmek için kullanılan bir aracı mı bilmiyorum o sebeple nasıl bir cümle kurmam gerektiğine karar veremedim fakat derdimi anladığınızı umuyorum) fakat o an ne yazık ki aklıma gelmedi, sonrasında küçük bir ipucu alabilir miyim dediğimde “daha önce pythonda hiç dosya açtın mı? mesela bir text dosyası.” gibi bir ipucu verdi. Bu ipucuyla zaten direkt with keywordü yanıtını verdim ancak soruyu duyar duymaz direkt yanıtlamam bekleniyordu sanırım. buradan bir kırmızı almışım ne yazık ki. Ayrıca bir kırmızı da basit bir python kodundan aldım (list veri tipi ve list’in mutable olmasıyla alakalı bir koddu).
Ayrıca teknik mülakat genel olarak DRF(Django Rest Framework) üzerinden gitti. Ben daha çok FastAPI ile çalıştığımdan bazı giriş seviyesi DRF sorularına cevap veremedim ne yazık ki.
Umarım deneyimlerim birilerine yardımcı olur, en azından belki faydası dokunur.
Gelecekteki mülakatlarda görüşmek üzere, ayrıca sorularınız varsa memnuniyetle yanıtlarım.
1) Aşağıdaki veri tiplerinden mutable olanları işaretleyiniz.
* bool
* int
* float
* list
* tuple
* str
* set
* dict
2) Aşağıdaki ifadelerden hangisi/hangileri doğrudur?
* foreign key bağlantısı olan verileri çekmek için foreign key bağlantısı kullanırım.
* ManyToMany ilişki bağlantısı olan ve reverse ilişkisi olan verileri çekmek için prefetch_related kullanırım.
* select_related kullanımın toplamda 3 tane sorgu atılır.
* OnetoMany için prefetch_related kullanamayız.
* prefetch_related tabloları veritabanı seviyesinde birleştirir.
3) Aşağıdaki ifadelerden hangisi doğrudur ?
* Product.objects.filter(id=1).exists()
* Product.objects.get(id=1).exists()
* Subquery innerjoin den daha performanslıdır.
* Distinct satırlarda tekrarlanan veriyi tekilleştirir.
* Order by ilgili tabloları büyüklük sıralamasına göre bağlar.
* Where koşulu FROM dan önce yazılır.
* Join kullanılan sorguda order by kullanılmaz.
4)
class Carnivore:
def diet(self):
return "meat"
class Herbivore:
def diet(self):
return "plants"
class Lion(Carnivore, Herbivore):
pass
lion = Lion()
print(lion.diet())
Yukarıdaki kod çalıştırıldığında ne çıktı verir?
* Kalıtım sırası belirtilmediği için çıktının ne olacağı öngörülemez.
* plants
* Birden fazla classtan inheritence yapılamayacağı için hata verir.
* Ekrana "meat plants" yazar
* Ekrana "meatplants" yazar
* meat
* Lion classında diet methodu olmadığı için hata verir
6) Aşağıdakilerden hangileri doğrudur ?
* Birimler arasındaki ilişkilerin test edildiği test tipine unit test denir.
* unit testler proje dışına açık testlerdir.
* Pipeline da unit testler çalıştırılamaz integration testler çalıştırılır.
* Unit testlerde mock kütüphaneleri kullanılır.
* Unit testlerde mock kütüphaneleri kullanmak zorunludur.
* Setup methodu testlerde before each olarak çalışır.
7) Doğrusal veri yapılarından olan queue, ve stack ve linked list yapılarıyla ilgili ifadelerden hangisi
doğrudur?
* Queue yapısında depolanan veriye LIFO (Last in first out) prensibiyle erişim sağlanır.
* Stack yapısında depolanan veriye FIFO (First in first out) prensibiyle erişim sağlanır.
* Queue yapısındaki verilere sadece uç kısmından erişim sağlanabilir.
* Stack yapısındaki veri enqueue ile çıkarabiliriz.
* Çift yönlü listelerde düğüm içerisinde 2 değişken tutulmaktadır.
8)
try:
result = 1 / 0
except ZeroDivisionError:
result = 0
print(result)
Yukarıdaki kodun çıktısı nedir?
* Raises an error because the try block is empty
* Prints 0
* Raises a ZeroDivisionError
* Prints 1
9)
a,b = 3,[4,5]
def foo(x:int, y:list):
x += 3
y.append(6)
return x,y
foo(a,b)
foo(a,b)
print(a,b)
Yukarıdaki kodun çıktısı nedir?
* 3
* 3[4, 5]
* Hata verir
* 3[4, 5, 6, 6]
10)
s1 = "aAbBcCDeE"
var = "c"
while var in s1:
s1 = s1[:-1]
print(var, end="-")
Yukarıdaki kodun çıktısı nedir?
* c-c-c-c-c-
* c-c-c
* c-c-c-c-
* c-c-c-
Düzenleme:
Ayrıca bu görüşmeden birkaç hafta önce başka bir firmayla daha görüşme yaptım. Bu görüşmenin öncesinde herhangi bir test yapılmadı. Direkt olarak teknik görüşmeye alındım (ne kadar teknik olduğu tartışılır). Direkt olarak “Python ile veri şifreleme konusunda bir bilgin var mı?” sorusu soruldu. “Kullandığınız kütüphaneye bağlı aslında, hangi kütüphaneyi kullanıyorsunuz bunun için?” diye sordum. Görüşmeyi yaptığım kişi hangi kütüphaneyi kullandıklarını bilmiyordu. Birkaç kütüphane saydım ama hiçbiri kendisine tanıdık gelmedi (sanırım bir startup’tı ve CEO ile konuştum, bu kısımdan tam emin değilim), durum böyle olunca ben biraz soğudum açıkçası, benim için bir red flag oldu. Bunun üzerine görüşme sonunda olumsuz değerlendirmelere dönüş yapılmadığını, sadece olumlulara dönüş yapıldığını söylediler. Bu ikinci ve en büyük red flag oldu. Bu cümleden sonra “Şu an zaten çalışıyorum, işe alınmasam da benim için çok büyük bir problem değil ancak sizle görüşen ve işsiz olan bir çok kişi olabilir, bu kişiler heyecanla sizden dönüş bekliyor olabilir. Olumsuz dönüş tek bir hazır e-mail’e bakar aslında çok zor bir şey de değil. Bu sebeple olumlu da olsa bana dönüş yapmamanızı rica ediyorum” minvalinde bir şey söyledim. Daha önce bahsettiğim 2 firma da gayet güzel bir şekilde ilgilendiler, olumsuz da olsa hiç çekinmeden aradılar, e-mail ile bilgilendirdiler ancak bu firmanın bu tutumu pek hoşuma gitmedi. Kısaca bundan da bahsedeyim dedim.