yoklateknik mülakat

Backend Php Exceptions Mülakat Soruları

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

Gerçek simülasyonu dene →

Örnek sorular

Php ExceptionsZorluk 1
try {
    throw new Exception("boom");
} catch (Exception $e) {
    echo "caught: " . $e->getMessage();
}

Ne yazdırılır?
  • acaught: boom
  • bboom
  • cFatal error: uncaught exception
  • dHiçbir şey yazdırılmaz
Açıklama:Fırlatılan Exception'ın mesajı "boom"'dur. catch bloğu Exception ile eşleşir ve sabit önek ile getMessage()'ı birleştirerek "caught: boom" yazdırır.
Php ExceptionsZorluk 1
function run() {
    try {
        echo "A";
    } finally {
        echo "B";
    }
}
run();

Ne yazdırılır?
  • aA
  • bB
  • cAB
  • dBA
Açıklama:Hiçbir exception fırlatılmaz, bu yüzden try bloğu normal çalışır ve "A" yazdırır. finally bloğu her zaman ardından çalışır ve "B" yazdırır. Çıktı "AB"'dir.
Php ExceptionsZorluk 2
PHP 8'de, strict_types=1 ile tanımlanmış bir fonksiyonu yanlış tipte bir argümanla çağırmak TypeError fırlatır. catch (Exception $e) bir TypeError'ı yakalar mı?
  • aEvet, çünkü catch (Exception $e) PHP'nin sunduğu tüm dahili throwable sınıflarıyla eşleşecek şekilde tanımlanmıştır
  • bHayır — TypeError, Exception'dan değil Error'dan türer, bu yüzden catch (Exception $e) bloğu onu yakalamaz
  • cYalnızca PHP 8.0 öncesi sürümlerde, çünkü Error/Exception ayrımı o zamanlar henüz yoktu
  • dYalnızca aynı istek içinde daha önce bir yerde strict_types kapatılmışsa
Açıklama:Error ve Exception, ikisi de Throwable arayüzünü uygulayan ama birbirinden türemeyen ayrı sınıf hiyerarşileridir. TypeError, Error'dan türer, bu yüzden catch (Exception $e) tarafından yakalanmaz; catch (Error $e) ya da catch (Throwable $e) gerekir.
Php ExceptionsZorluk 2
function parse(int $mode) {
    try {
        if ($mode === 1) throw new InvalidArgumentException("bad arg");
        if ($mode === 2) throw new RuntimeException("bad state");
        return "ok";
    } catch (InvalidArgumentException|RuntimeException $e) {
        return "handled: " . $e->getMessage();
    }
}
echo parse(2);

Ne yazdırılır?
  • aok
  • bhandled: bad arg
  • cFatal error: geçersiz multi-catch sözdizimi
  • dhandled: bad state
Açıklama:catch (InvalidArgumentException|RuntimeException $e), PHP 7.1'den beri geçerli olan ve her iki tipi de eşleştiren multi-catch sözdizimidir. $mode = 2 ile RuntimeException("bad state") fırlatılır ve yakalanır, sonuç "handled: bad state" olur.
Php ExceptionsZorluk 1
class NotFoundException extends Exception {}

try {
    throw new NotFoundException("user missing");
} catch (Exception $e) {
    echo get_class($e) . ": " . $e->getMessage();
}

Ne yazdırılır?
  • aNotFoundException: user missing
  • bException: user missing
  • cNotFoundException: missing
  • dHiçbir şey yazdırılmaz, çünkü get_class() yakalanmış bir exception nesnesi üzerinde çağrılamaz
Açıklama:class NotFoundException extends Exception {}, ekstra hiçbir koda ihtiyaç duymadan zaten tamamen geçerli bir özel exception'dır. catch (Exception $e) onunla eşleşir çünkü NotFoundException bir Exception'DIR. get_class($e), catch ifadesinde kullanılan tipi değil, nesnenin gerçek çalışma zamanı sınıfını — NotFoundException'ı — döndürür, bu yüzden çıktı "NotFoundException: user missing" olur.
Php ExceptionsZorluk 2
Bir ekip, çağıranların diğer genel hatalardan ayrı olarak özellikle "kullanıcı bulunamadı" hatasını yakalayabilmesini istiyor.
class UserNotFoundException extends Exception {}

function findUser(int $id): array {
    if ($id === 0) {
        throw new UserNotFoundException("user $id not found");
    }
    return ["id" => $id];
}

try {
    findUser(0);
} catch (UserNotFoundException $e) {
    echo "specific: " . $e->getMessage();
} catch (Exception $e) {
    echo "generic: " . $e->getMessage();
}

Ne yazdırılır?
  • ageneric: user 0 not found
  • bFatal error: catch sırası burada geçersiz
  • cHiçbir şey yazdırılmaz
  • dspecific: user 0 not found
Açıklama:UserNotFoundException, Exception'dan türer, yani basit bir class Name extends Exception {} geçerli bir özel exception'dır. Spesifik catch önce listelendiği ve eşleştiği için, genel catch hiç değerlendirilmeden çalışır.

3300 soruluk Backend bankasında kendini sına.

Mülakata başla