Khi bước vào phỏng vấn vị trí Fresher, điểm khác biệt giữa ứng viên được nhận và ứng viên bị từ chối thường nằm ở độ sâu của nền tảng chứ không phải số lượng framework biết dùng. Hãy cùng mổ xẻ những khái niệm cốt lõi mà các Tech Lead hay soi kỹ nhất để tự tin chinh phục nhà tuyển dụng.
1. OOP (Lập trình hướng đối tượng) và 4 trụ cột trong thực tế
Hầu như mọi buổi phỏng vấn Fresher đều xoay quanh OOP. Nhà tuyển dụng không muốn nghe định nghĩa thuộc lòng kiểu sách giáo khoa, họ muốn bạn giải thích chúng thông qua một ví dụ thực tế trong code.
Ví dụ, khi thiết kế một hệ thống quản lý nhân sự, tính kế thừa (Inheritance) giúp bạn tái sử dụng code cho Employee và Manager, trong khi tính đa hình (Polymorphism) cho phép gọi phương thức calculateSalary() một cách linh hoạt cho từng đối tượng cụ thể mà không cần câu lệnh điều kiện if-else phức tạp.
- Encapsulation (Tính đóng gói): Giấu trạng thái nội tại, chỉ cho phép tương tác qua public methods.
- Inheritance (Tính kế thừa): Tái sử dụng mã nguồn và thiết lập quan hệ phân cấp đối tượng.
- Polymorphism (Tính đa hình): Giao diện chung nhưng hành vi thực thi khác nhau tùy theo từng đối tượng.
- Abstraction (Tính trừu tượng): Ẩn đi chi tiết cài đặt phức tạp, chỉ hiển thị các tính năng cốt lõi.
2. Độ phức tạp thuật toán (Big O Notation) trong code hàng ngày
Nhiều bạn nghĩ Big O chỉ dùng cho các kỳ thi thuật toán, nhưng thực tế nó quyết định việc ứng dụng của bạn có bị sập khi có 100.000 user truy cập cùng lúc hay không.
Khi phỏng vấn, nếu bạn dùng vòng lặp lồng nhau (nested loops) để tìm kiếm dữ liệu trên một mảng lớn, bạn đang tạo ra độ phức tạp O(n^2). Nhà tuyển dụng sẽ kỳ vọng bạn nhận ra điểm nghẽn này và đề xuất giải pháp tối ưu bằng cách dùng Hash Map (Dictionary) để giảm xuống O(1).
- O(1) - Constant Time: Truy xuất trực tiếp qua index hoặc hash key, không đổi theo kích thước dữ liệu.
- O(n) - Linear Time: Duyệt qua toàn bộ danh sách (ví dụ: dùng vòng lặp for đơn).
- O(n log n) - Log-linear Time: Thường gặp ở các thuật toán sắp xếp hiệu quả như Merge Sort hoặc Quick Sort.
- O(n^2) - Quadratic Time: Vòng lặp lồng nhau, cần hạn chế tối đa với tập dữ liệu lớn.
3. HTTP Protocol và cách Web Client giao tiếp với Server
Hiểu cách web hoạt động là bắt buộc với mọi lập trình viên, dù bạn làm Frontend hay Backend. Nhà tuyển dụng thường hỏi sâu về các HTTP Methods và Status Codes để kiểm tra tư duy thiết kế API của bạn.
Ví dụ, bạn cần nắm rõ sự khác biệt giữa GET (lấy dữ liệu, không làm thay đổi trạng thái server, có thể cache) và POST (gửi dữ liệu để tạo mới). Đồng thời, việc phân biệt mã trạng thái như 200 OK, 201 Created, 400 Bad Request, 401 Unauthorized, và 500 Internal Server Error là kiến thức sống còn.
- GET / POST / PUT / DELETE: Các phương thức chuẩn cho thiết kế RESTful API.
- Status 2xx (Thành công): 200 OK, 201 Created.
- Status 4xx (Lỗi phía client): 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found.
- Status 5xx (Lỗi phía server): 500 Internal Server Error, 502 Bad Gateway.
4. Quản lý mã nguồn với Git và quy trình làm việc nhóm
Biết gõ các lệnh cơ bản như git add hay git commit là chưa đủ đối với một Fresher chuyên nghiệp. Các kỹ sư phỏng vấn sẽ đặt câu hỏi tình huống để xem bạn xử lý xung đột (merge conflict) hoặc quản lý nhánh (branching strategy) ra sao.
Hãy chuẩn bị tinh thần giải thích cách bạn dùng git rebase khác gì với git merge, hoặc cách xử lý khi commit nhầm code lên nhánh chính (main/master). Việc nắm vững Git flow giúp nhà tuyển dụng yên tâm rằng bạn có thể hòa nhập nhanh chóng vào đội ngũ phát triển sản phẩm thực tế.
- Git Branching: Phân nhánh tính năng (feature branch) thay vì code trực tiếp trên nhánh chính.
- Merge Conflict: Kỹ năng đọc conflict marker và phối hợp với đồng đội để giải quyết.
- Git Commit Convention: Viết thông điệp commit rõ ràng, có cấu trúc giúp lịch sử code dễ đọc.
Ghi nhớ nhanh
- Tập trung hiểu sâu bản chất kỹ thuật thay vì học vẹt định nghĩa sách giáo khoa.
- Luôn chuẩn bị ví dụ thực tế từ các project cá nhân hoặc đồ án tốt nghiệp để minh họa khi được hỏi.
- Nắm chắc các kiến thức nền tảng như OOP, Big O, HTTP và Git vì chúng áp dụng cho mọi ngôn ngữ lập trình.
- Tự tin thể hiện tư duy giải quyết vấn đề khi đối mặt với các câu hỏi tình huống từ nhà tuyển dụng.