Skip to content

Instantly share code, notes, and snippets.

@mahammad
Created August 16, 2025 14:23
Show Gist options
  • Select an option

  • Save mahammad/5481e6877e2041ee3025c3ae25da41b2 to your computer and use it in GitHub Desktop.

Select an option

Save mahammad/5481e6877e2041ee3025c3ae25da41b2 to your computer and use it in GitHub Desktop.

Revisions

  1. mahammad created this gist Aug 16, 2025.
    168 changes: 168 additions & 0 deletions laravel_backend_interview_middle.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,168 @@
    # 📌 Laravel Middle Backend Müsahibə Mövzuları və Cavabları

    ---

    ## 1. **Laravel Request Lifecycle**

    **Sual:** Laravel-də request gəldikdə ilk hansı fayl işləyir?
    **Cavab:**
    `public/index.php` faylı ilk işləyir. Buradan `bootstrap/app.php` çağrılır və application bootstrap olunur. Sonra kernel (`App\Http\Kernel`) işləyir, middleware-lər işə düşür, routing icra olunur və controller cavabı response-a çevrilərək geri qaytarılır.

    ---

    ## 2. **Routing və Controller**

    **Sual:** Route model binding necə işləyir?
    **Cavab:**
    Model binding route parametrlərini avtomatik olaraq model instansiyasına çevirir.

    ```php
    Route::get('/users/{user}', function(User $user) {
    return $user;
    });
    ```

    Burada `{user}` ID-si avtomatik olaraq `User` modelindən tapılır. Əgər tapılmazsa `404` qaytarır.

    ---

    ## 3. **Eloquent ORM və Relationships**

    **Sual:** `hasManyThrough` münasibəti nədir?
    **Cavab:**
    `hasManyThrough` əlaqəsi vasitəsilə bir model başqa bir modelə aralıq model üzərindən qoşulur.
    Məsələn: **Country → User → Post**

    ```php
    class Country extends Model {
    public function posts() {
    return $this->hasManyThrough(Post::class, User::class);
    }
    }
    ```

    Bu, ölkənin bütün postlarını istifadəçilər vasitəsilə gətirir.

    ---

    ## 4. **Authentication və Authorization**

    **Sual:** Gate və Policy fərqi nədir?
    **Cavab:**

    * **Gate** – sadə closure əsaslı permission yoxlamasıdır (`Gate::define`).
    * **Policy** – müəyyən bir model üçün CRUD səlahiyyətlərini idarə edən class-dır. Məsələn, `PostPolicy` ilə yalnız yazının müəllifi onu silə bilər.

    ---

    ## 5. **Validation və Form Request**

    **Sual:** Form Request istifadə etməyin üstünlükləri nədir?
    **Cavab:**

    * Validation qaydaları controller-dən ayrılır → daha təmiz kod.
    * `authorize()` metodu ilə icazə yoxlamaları edilir.
    * Avtomatik olaraq `$errors` dəyişənində səhvlər gəlir.

    ---

    ## 6. **Caching və Performance**

    **Sual:** Cache-də “tag” nə işə yarayır?
    **Cavab:**
    Cache tag-lar eyni kateqoriyaya aid olan cache-ləri bir yerdə idarə etməyə imkan verir.

    ```php
    Cache::tags(['products'])->put('p1', $product, 3600);
    Cache::tags(['products'])->flush(); // bütün məhsul cache-lərini silir
    ```

    ---

    ## 7. **Queues və Jobs**

    **Sual:** Laravel job uğursuz olduqda nə baş verir?
    **Cavab:**
    Job retry sayı bitdikdə o **failed\_jobs** cədvəlində saxlanılır. `php artisan queue:failed` ilə baxmaq, `queue:retry {id}` ilə yenidən işə salmaq olar.

    ---

    ## 8. **API Development**

    **Sual:** Laravel Sanctum nə üçündür?
    **Cavab:**
    Sanctum API-lər üçün **SPA authentication****token-based API authentication** təklif edir. Passport-dan fərqi odur ki, daha yüngül və sadədir.

    ---

    ## 9. **Testing**

    **Sual:** Database testlərini necə izolyasiya edirsiniz?
    **Cavab:**

    * `RefreshDatabase` trait istifadə olunur → hər testdən əvvəl migrate və rollback.
    * Yaxud in-memory SQLite istifadə edilir.

    ```php
    use RefreshDatabase;
    ```

    ---

    ## 10. **Repository və Service Layer**

    **Sual:** Repository pattern nə üçündür?
    **Cavab:**
    Repository model ilə business logic arasındakı asılılığı azaldır. Məsələn, Eloquent-dən MySQL-dən MongoDB-yə keçmək istəsək, yalnız repository dəyişir, controller eyni qalır.

    ---

    ## 11. **Observer və Events**

    **Sual:** Observer nədir?
    **Cavab:**
    Observer model hadisələrini (creating, updating, deleting və s.) dinləyən class-dır. Məsələn, `UserObserver` istifadəçi yaradıldıqda avtomatik mail göndərə bilər.

    ---

    ## 12. **Scheduler və Cron Jobs**

    **Sual:** Laravel Scheduler necə işləyir?
    **Cavab:**
    `schedule:run` komandası hər dəqiqə `cron` ilə çağırılır. İstədiyin əmrləri `app/Console/Kernel.php`-də təyin edirsən:

    ```php
    protected function schedule(Schedule $schedule) {
    $schedule->command('emails:send')->dailyAt('10:00');
    }
    ```

    ---

    ## 13. **Migration-lar və Rollback**

    **Sual:** Rollback hansı hallarda problem yarada bilər?
    **Cavab:**
    Əgər cədvəldə data varsa və migration dəyişiklikləri data ilə uyğun gəlmirsə (məs: sütun silmək), rollback zamanı data itirilə bilər.

    ---

    ## 14. **Security**

    **Sual:** CSRF qorunması necə işləyir?
    **Cavab:**
    Hər form Laravel tərəfindən avtomatik `_token` input ilə gəlir. `VerifyCsrfToken` middleware bu tokeni session ilə müqayisə edir. Uyğun gəlməzsə request reject edilir.

    ---

    ## 15. **Optimization**

    **Sual:** `php artisan optimize` nələri edir?
    **Cavab:**

    * Config cache (`config:cache`)
    * Route cache (`route:cache`)
    * Event cache (`event:cache`)
    * View cache (`view:cache`)

    Bunlar production performansı artırır.