Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
PHP và Laravel vẫn là lựa chọn quen thuộc của nhiều công ty phần mềm tại Việt Nam, từ website bán hàng đến hệ thống nội bộ. Phỏng vấn vị trí này thường xoay quanh nền tảng PHP, cơ chế của Laravel và cách bạn làm việc với cơ sở dữ liệu. Dưới đây là các câu thường gặp.
== so sánh giá trị sau khi ép kiểu, === so sánh cả kiểu và giá trị. Nên dùng === để tránh bất ngờ, ví dụ 'abc' == 0 có thể cho kết quả khác nhau tùy phiên bản PHP, trong khi === luôn rõ ràng.
Cookie lưu ở trình duyệt, session lưu dữ liệu ở máy chủ và chỉ gửi mã định danh qua cookie. Dữ liệu nhạy cảm không nên để trong cookie.
Request đi vào public/index.php, qua HTTP kernel và các middleware toàn cục, được định tuyến đến controller hoặc closure, controller xử lý rồi trả về response, response đi ngược qua middleware trước khi gửi về trình duyệt.
Middleware là lớp lọc request, ví dụ kiểm tra đăng nhập, phân quyền, ghi log, giới hạn tốc độ gọi. Nó cho phép tách logic chung ra khỏi controller.
class Post extends Model{ public function user() { return $this->belongsTo(User::class); } public function comments() { return $this->hasMany(Comment::class); }}Các quan hệ thường dùng gồm hasOne, hasMany, belongsTo, belongsToMany. Hãy chuẩn bị ví dụ thực tế từ dự án của bạn như bài viết và bình luận, đơn hàng và sản phẩm.
N+1 xảy ra khi bạn lấy danh sách N bản ghi rồi trong vòng lặp truy cập quan hệ của từng bản ghi, khiến phát sinh thêm N truy vấn. Cách khắc phục là tải trước quan hệ bằng eager loading:
// Gây N+1$posts = Post::all();foreach ($posts as $post) { echo $post->user->name;}// Đã tối ưu$posts = Post::with('user')->get();Migration quản lý thay đổi cấu trúc cơ sở dữ liệu theo phiên bản như code. Seeder nạp dữ liệu ban đầu hoặc dữ liệu mẫu. Factory sinh dữ liệu giả cho kiểm thử và phát triển.
$validated = $request->validate([ 'title' => 'required|string|max:255', 'email' => 'required|email|unique:users,email',]);Luôn xác thực ở phía máy chủ dù giao diện đã kiểm tra. Nếu dữ liệu không hợp lệ, Laravel tự chuyển hướng kèm thông báo lỗi hoặc trả JSON với mã 422 cho API.
@csrf trong Blade.$fillable hoặc $guarded để kiểm soát trường được gán hàng loạt.Hãy trả lời theo quy trình thay vì đoán. Bước một, đo đạc: bật log truy vấn hoặc dùng công cụ gỡ lỗi để xem trang gọi bao nhiêu câu SQL và mất bao lâu. Bước hai, kiểm tra N+1 và dùng eager loading. Bước ba, xem lại chỉ mục (index) cho các cột dùng để lọc và sắp xếp. Bước bốn, chỉ lấy những cột cần thiết bằng select, thêm phân trang thay vì tải toàn bộ. Cuối cùng mới cân nhắc cache kết quả hoặc đẩy tác vụ nặng vào hàng đợi.
Tách logic nghiệp vụ ra các lớp service hoặc action, dùng Form Request để xác thực, dùng Resource để định dạng phản hồi API và giữ controller mỏng. Cách này giúp code dễ kiểm thử và tái sử dụng.
Laravel tích hợp sẵn PHPUnit. Bạn viết feature test để gọi endpoint và kiểm tra phản hồi, cơ sở dữ liệu, kết hợp trait RefreshDatabase để mỗi bài test bắt đầu từ trạng thái sạch. Kể được một ví dụ test cho luồng đăng ký hoặc đặt hàng sẽ là điểm cộng lớn.
Người phỏng vấn thường đánh giá cao ứng viên giải thích được vì sao chứ không chỉ cái gì. Hãy chuẩn bị một dự án Laravel nhỏ có quan hệ, xác thực, kiểm thử và triển khai để có nhiều tình huống thực tế để kể.
Nếu bạn đang học Laravel và muốn có lộ trình rõ ràng, hãy xem các khóa backend tại codebem.com.
Nguyễn Đình Cường
0 comment