yoklateknik mülakat

Backend Python Typing Oop Mülakat Soruları

75 doğrulanmış Backend Python Typing Oop mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Python Typing OopZorluk 1
def add(x: int, y: int) -> int:
    return x + y

result = add("3", "4")

Bu kod çalıştığında ne olur?
  • aSorunsuz çalışır; result "34" string'i olur
  • bFonksiyon tanımlanır tanımlanmaz TypeError fırlatır
  • cFonksiyon çağrıldığında TypeError fırlatır
  • dSorunsuz çalışır; result 7 tamsayısı olur
Açıklama:Tip ipuçları mypy gibi araçlar için salt danışma amaçlı metadata'dır; yorumlayıcı bunları çalışma zamanında hiç kontrol etmez. "3" + "4" düz string birleştirmesidir, dolayısıyla result "34" olur.
Python Typing OopZorluk 1
typing modülünün semantiğine göre bir değişkendeki Optional[int] annotation'ı ne anlama gelir?
  • aDeğer her zaman int olmalıdır ve mypy bunu çalışma zamanında zorlar
  • bDeğer ya int'tir ya da None'dır, Union[int, None] için kısayoldur
  • cDeğişkeni fonksiyon imzasında bildirmek başlı başına isteğe bağlıdır
  • dDeğer yalnızca bir sınıf attribute'u olarak kullanılabilen generic bir tiptir
Açıklama:Optional[X], typing modülü tarafından Union[X, None] için bir takma ad olarak tanımlanır — değer X olabilir ya da None olabilir, başka bir anlamı yoktur.
Python Typing OopZorluk 1
from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

p1 = Point(1, 2)
p2 = Point(1, 2)
print(p1 == p2)
print(p1)

Ekrana ne basılır?
  • aÖnce False, sonra <__main__.Point object at 0x...>
  • bÖnce True, sonra alanları gizleyen bir Point nesnesi
  • cÖnce True, sonra Point(x=1, y=2)
  • dÖnce False, sonra Point(x=1, y=2)
Açıklama:@dataclass, __init__i, alan alan karşılaştıran bir __eq__i ve okunaklı bir __repr__i otomatik üretir. p1 ve p2'nin alanları eşit olduğu için == True olur, p1'in yazdırılması da Point(x=1, y=2) gösterir.
Python Typing OopZorluk 1
class Circle:
    def __init__(self, radius):
        self._radius = radius

    @property
    def area(self):
        return 3.14159 * self._radius ** 2

c = Circle(2)
print(c.area)

Ekrana ne basılır ve area'ya nasıl erişilir?
  • aTypeError verir, çünkü area c.area() olarak çağrılmalıdır
  • b3.14159, __init__'te atanmış düz bir attribute gibi
  • cAttributeError verir, çünkü area hiç ayarlanmamıştır
  • d12.56636, @property sayesinde her erişimde yeniden hesaplanır
Açıklama:@property, bir metodu parantez olmadan bir attribute gibi erişilen bir şeye dönüştürür. c.area'ya her erişimde 3.14159 2 * 2 = 12.56636 yeniden hesaplanır.
Python Typing OopZorluk 1
Bir Python sınıfında, doğrudan sınıf gövdesinde tanımlanan bir sınıf değişkeni ile __init__ içinde self ile atanan bir instance değişkeni arasındaki temel fark nedir?
  • aSınıf değişkenleri yalnızca tamsayı tutabilir, instance değişkenleri tutamaz
  • bBir sınıf değişkeni, bir instance onu gölgelemedikçe tüm instance'lar arasında paylaşılır
  • cInstance değişkenleri import zamanında, sınıf değişkenleri çağrı zamanında çalışır
  • dPython'da ikisi arasında gerçek bir fark yoktur
Açıklama:Bir sınıf değişkeni sınıf nesnesinin kendisinde yaşar ve onu gölgelemeyen her instance tarafından aynı şekilde bulunur; bir instance değişkeni ise instance başına saklanır ve asla paylaşılmaz.
Python Typing OopZorluk 1
def add_item(item, basket=[]):
    basket.append(item)
    return basket

print(add_item("apple"))
print(add_item("banana"))

İkinci çağrıda ne basılır?
  • a["banana"], her çağrıda taze ve boş bir liste
  • bTypeError verir, çünkü default argümanlar mutable olamaz
  • c["apple", "banana"], varsayılan liste yeniden kullanılır
  • d["banana", "apple"], çağrılar ters sırada çalışır
Açıklama:Default argüman değerleri fonksiyon tanımlandığında yalnızca bir kez değerlendirilir ve basket'i atlayan her çağrıda aynı liste nesnesi yeniden kullanılır — bu yüzden öğeler çağrılar arasında birikir.

3300 soruluk Backend bankasında kendini sına.

Mülakata başla