跳到主內容

電商開發工程師面試題目

❶ 使用 Docker 建立方式(基本流程)

  1. 安裝 Docker:在本機安裝 Docker 與 Docker Compose。

  2. 建立專案目錄:例如 my-app/

  3. 撰寫 Dockerfile:描述應用的環境(PHP、Composer 等)。

  4. 建立 docker-compose.yml

    • 定義服務(如 PHP、Nginx、MySQL)。

  5. 建置與啟動容器

    bash
    docker-compose up -d --build
  6. 進入容器操作

    bash
    docker exec -it <container_name> bash

❷ 如何 Docker 建立 Laravel 應用(簡易流程)

  1. 建立 Laravel 專案(可先用 Composer 或直接用 Laravel 官方 Docker image)。

  2. 建立 docker-compose.yml

    yaml
    services: app: build: context: . dockerfile: Dockerfile volumes: - .:/var/www ports: - "8000:80" depends_on: - mysql mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: secret MYSQL_DATABASE: laravel
  3. 建立 Dockerfile

    Dockerfile
    FROM php:8.1-fpm RUN docker-php-ext-install pdo pdo_mysql WORKDIR /var/www
  4. 啟動服務並安裝 Laravel:

    bash
    docker-compose up -d docker exec -it <app_container> composer create-project laravel/laravel .

❸ 什麼是 RESTful API?

  • RESTful API 是一種風格,用於設計 HTTP 介面,讓前後端透過 API 溝通。

  • 常用動詞對應資源操作:

    • GET /posts:取得所有貼文

    • POST /posts:新增貼文

    • GET /posts/1:取得貼文1

    • PUT /posts/1:更新貼文1

    • DELETE /posts/1:刪除貼文1


❹ RESTful API 如何在 Laravel 應用?

  1. 建立 Route

    php
    Route::apiResource('posts', PostController::class);
  2. 建立 Controller

    bash
    php artisan make:controller PostController --api
  3. 撰寫邏輯:在 PostController 中實作 index, store, show, update, destroy 等方法。

  4. 回傳 JSON

    php
    return response()->json($data);

❺ Laravel insertcreate 差異與情境?

方法 insert create
類型 Query Builder 方法 Eloquent ORM 方法
傳回值 無傳回值 回傳模型物件
資料驗證 不會驗證填充 (fillable) 會驗證 $fillable$guarded
使用時機 批量插入、大量資料效能優先 常規單筆新增、有模型邏輯需求時
php
// insert DB::table('users')->insert(['name' => 'Tom', 'email' => '[email protected]']); // create User::create(['name' => 'Tom', 'email' => '[email protected]']);

❻ Laravel ORM joinwith 差異與情境?

方法 join with (Eager Loading)
類型 SQL 層級的 join 查詢 ORM 層級的關聯載入
效能 效能高(單次查詢) 較方便、有模型資料結構
用途 沒有定義關聯,需手動 join 已定義 Eloquent 關聯關係時使用
php
// join 範例 User::join('posts', 'users.id', '=', 'posts.user_id')->get(); // with 範例 User::with('posts')->get();

❼ Laravel Unit Test 如何避免測試時寫入資料庫?

  1. 使用 Database Transaction

    php
    use Illuminate\Foundation\Testing\RefreshDatabase; class ExampleTest extends TestCase { use RefreshDatabase; // 每個 test 執行後會 rollback }
  2. 使用 Mock 或 Fake 模型或 Repository

    • 模擬資料邏輯,不實際寫入。

    • 可以搭配 Laravel 的 Mockery 或 PHPUnit mock 工具。


❽ Laravel Queue 建立方式(簡易流程)

  1. 設定 .env(使用 database 或 redis 等):

    ini
    QUEUE_CONNECTION=database
  2. 建立 Queue Table(如使用 database)

    bash
    php artisan queue:table php artisan migrate
  3. 建立 Job 類別

    bash
    php artisan make:job SendEmailJob
  4. 派送 Job

    php
    dispatch(new SendEmailJob($data));
  5. 執行 Queue Worker

    bash
    php artisan queue:work