Tổng hợp câu hỏi phỏng vấn PHP level Fresher-Junior-Senior

ITNavi 28 Sep 2023 7078

Bạn đã tự tin về kỹ năng lập trình PHP của mình? Trong “đạo lập trình”, việc trả lời những câu hỏi khó chính là cách tốt nhất để nhà tuyển dụng thử thách kiến thức, kỹ năng và tư duy của bạn. Hãy sẵn sàng với những câu hỏi phỏng vấn PHP từ level fresher, junior, senior đến master cùng các kinh nghiệm phỏng vấn PHP mà ITNavi đã tổng hợp phía dưới đây.

Mục Lục

Câu hỏi phỏng vấn PHP intern, fresher

Nhóm câu hỏi phỏng vấn PHP dưới đây phù hợp với các bạn sinh viên mới ra trường hoặc người bắt đầu công việc về lập trình PHP. Nhóm câu hỏi này chủ yếu về kiến thức cơ bản, khái niệm, cách dùng của các hàm, thuộc tính,... của PHP, nên chỉ cần trả lời ngắn gọn, trọng tâm, vào thẳng vấn đề là đủ.

1. Ngôn ngữ lập trình PHP là gì?

PHP (Hypertext Preprocessor) là ngôn ngữ lập trình mã nguồn mở hay là ngôn ngữ script đa năng, đa mục đích, chủ yếu được dùng để xây dựng website và ứng dụng web. PHP được nhúng vào HTML qua cặp thẻ .

2. Toán tử & và && trong PHP có gì khác nhau?

Toán tử & và && đều được dùng để thực hiện phép toán AND. Trong đó có sự khác nhau:

  • Toán tử & áp dụng để thực hiện AND theo từng bit của số nguyên, không thực hiện việc kiểm tra logic.

Ví dụ: 

$a = 5;    // Binary: 101

$b = 3;    // Binary: 011

 

$result = $a & $b; // Binary: 001 (Decimal: 1)

  • && là toán tử logic, thực hiện phép toán AND áp dụng cho kiểu boolean True và False. 

Ví dụ:

$x = true;

$y = false;

 

if ($x && $y) {

    // Khối mã này sẽ không được thực thi, vì $y là false

} else {

    // Khối mã này sẽ được thực thi

}

3. Empty và isset có giống nhau không?

Empty và Isset không giống nhau, empty bao quát hơn isset. Trong đó:

  • Isset là hàm kiểm tra một biến đã được khai báo và có giá trị hay chưa? Nếu biến có giá trị rỗng sẽ trả về true.
  • Empty là hàm kiểm tra xem một biến hoặc phần tử có giá trị rỗng hay không? Nếu biến hoặc phần tử đã được khai báo và có giá trị khác NULL thì sẽ trả về true.

4. Session trong PHP là gì?

Session là một phiên làm việc của người dùng, được lưu trữ trên server, dùng để lưu trữ dữ liệu sử dụng xuyên suốt quá trình người dùng tương tác với ứng dụng web (ví dụ như đăng nhập, thêm vào giỏ hàng,...)

Cookie là tập tin nhỏ có chứa dữ liệu văn bản được tạo bởi máy chủ web và trình duyệt, được lưu trên máy của người dùng để lưu trữ thông tin tạm thời. Mỗi lần trình duyệt  yêu cầu một trang web từ website này thì Cookie sẽ gửi thông tin về server. 

6. OOP là gì?

OOP (Object-Oriented Programming) hay còn gọi là lập trình hướng đối tượng, là mô hình lập trình phát triển dựa trên đối tượng và tương tác giữa các đối tượng với nhau. OOP được sử dụng trong nhiều ngôn ngữ lập trình phổ biến như PHP, Java, C++, Python,...

7. Hãy nêu 4 tính chất của OOP mà bạn biết?

Với câu hỏi phỏng vấn PHP mang tính chất liệt kê, bạn chỉ cần list ra danh sách trong câu trả lời. Hoặc có thể lấy 1 ví dụ trực quan để mô tả tính chất. Có ví dụ hoặc trải nghiệm thực tế sẽ giúp nhà tuyển dụng đánh giá cao sự hiểu sâu trong kiến thức của bạn.

OOP có 4 đặc tính chính đó là:

  • Tính trừu tượng (abstraction).
  • Tính kế thừa (inheritance).
  • Tính đóng gói (encapsulation).
  • Tính đa hình (polymorphism).

8. Bạn hãy so sánh Abstract và interface trong PHP?

Cả Abstract và interface đều được dùng để định nghĩa tính năng mà class con cần triển khai.

Sự khác nhau cơ bản giữa Abstract và interface đó là ở:

Abstract

Interface

Có thể chứa các phương thức trừu tượng (abstract method) hoặc không trừu tượng (non-abstract method)

Chỉ chứa phương thức trừu tượng (abstract method)

Không hỗ trợ đa kế thừa

Hỗ trợ đa kế thừa

Có thể chứa các biến final, non-final, static, non-static

Chỉ có biến final và static

Có thể implements nhiều interface

Không thể extends lớp abstract

Phạm vi truy cập private, protected,...

Phạm vi truy cập là public

 

9. API là gì?

API (Application Programming Interface - Giao diện lập trình ứng dụng) là cơ chế cho phép thư mục và ứng dụng giao tiếp với nhau bằng một tập hợp, định nghĩa và giao thức chung. 

Một số API phổ biến như Google Maps API, Facebook API, Amazon Web Services (AWS) API,...

10. Hãy cho biết quy tắc đặt tên biến PHP là gì?

  • Biến PHP phải được khai báo bắt đầu bằng ký hiệu $, theo sau là tên biến. Ví dụ: $price=100; trong đó price là một tên biến.
  • Tên biến phải bắt đầu bằng dấu gạch dưới hoặc chữ cái, không được phép bắt đầu bằng chữ số hoặc ký tự đặc biệt.
  • Tên biến có thể chứa ký tự chữ, số hoặc dấu gạch dưới. Nhưng không thể chứa các ký tự như + , – , % , &,... và dấu cách.
  • Tên biến PHP phân biệt chữ hoa và chữ thường. Ví dụ $ADDRESS và $address là hai biến khác nhau.
  • Không dùng các từ khóa có sẵn của PHP như if, else, for, while, function, class,...

11. Mảng là gì? Trong PHP có mấy mảng?

Mảng (array) là một biến chứa được nhiều phần tử để dễ dàng lưu trữ, sắp xếp, xóa bỏ phần tử trong mảng. Mỗi mảng sẽ có 2 thành phần là KEY và VALUE.

Trong PHP, có 3 mảng loại chính:

  • Mảng số nguyên: Có key tự động tạo là chữ số bắt đầu từ 0 và tăng dần, chỉ mục mảng là số nguyên.
  • Mảng kết hợp: Có chỉ số là chuỗi, sử dụng keys để xác định phần tử.
  • Mảng đa chiều: Mảng có chứa ít nhất 1 mảng khác trong nó.

12. Bạn dùng hàm gì để chuyển mảng thành chuỗi? Ngược lại, để tách chuỗi thành mảng bạn sẽ dùng hàm gì?

Với các câu hỏi phỏng vấn PHP về thực hành thì bạn chỉ cần trả lời ngắn gọn như sau:

  • Trong PHP, dùng hàm implode(separator,array) hoặc hàm join($ky_tu,$array) để chuyển mảng thành một chuỗi.
  • Dùng hàm explode(separator,string,[limit]) để chuyển một chuỗi thành mảng.

13. Để kích hoạt thông báo lỗi trong PHP bạn sẽ làm gì?

  • Check trạng thái "display_errors" là "on" trong file PHP.ini hoặc thực hiện khai báo "ini_set('display_errors', 1)" trong script.
  • Sau đó dùng lệnh include “error_reporting(E_ALL)” trong code để hiển thị tất cả các thông báo lỗi trong suốt quá trình thực thi script.

Kích hoạt thông báo lỗi thì tốt cho lập trình viên vì có thể phát hiện dòng code nào đang  lỗi hay đoạn script có chạy đúng không. Nhưng nếu kích hoạt trên môi trường sản phẩm thì sẽ có các rủi ro về bảo mật và hiển thị thông tin lỗi nhạy cảm cho end-users.

14. $message và $$message là gì?

  • $message là một biến thông thường, dùng để lưu trữ dữ liệu của biến, có giá trị và tên cố định. 
  • $$message là một biến tham chiếu, lưu trữ dữ liệu về biến của biến, có thể thay đổi tự động.

Ví dụ:

  • Nếu khai báo biến $message với giá trị "Hello world!", thì biến $$message cũng có giá trị là "Hello world!". 
  • Tuy vậy, nếu thay đổi giá trị của biến $message, thì $$message không thay đổi.

Bạn có thể tham khảo cách trình bày ngắn gọn cho câu hỏi phỏng vấn PHP này qua bảng dưới đây:

Tính năng

$message

$$message

Loại biến

Biến thông thường

Biến tham chiếu

Lưu trữ

Giá trị và tên

Dữ liệu về biến

Thay đổi giá trị

Thay đổi giá trị

Không thay đổi

Các câu hỏi phỏng vấn PHP nâng cao cập nhật

Tổng hợp các câu hỏi phỏng vấn PHP nâng cao, phù hợp với trình độ junior hoặc senior.

1. Hàm mysql_pconnect() có tác dụng gì?

Hàm mysql_pconnect() giúp duy trì kết nối liên tục với cơ sở dữ liệu. Tức là kết nối không đóng kể cả khi tập lệnh PHP kết thúc.

Tuy vậy, chức năng này không được hỗ trợ trong PHP 7.0 trở lên.

2. Làm thế nào để biết số hàng trả về trong tập kết quả truyền vào?

Sử dụng hàm mysqli_num_rows() để được trả về số hàng trong tập kết quả từ một truy vấn chọn.

3. Hàm mysqli_fetch_object() và mysqli_fetch_array() khác nhau thế nào?

  • Hàm mysqli_fetch_object() Sử dụng phương thức get() của đối tượng để thu thập bản ghi khớp đơn đầu tiên.
  • Hàm mysqli_fetch_array() sử dụng chỉ mục của bảng để thu thập tất cả các bản ghi khớp từ bảng trong một array.

4. Làm thế nào để truy cập dữ liệu được gửi qua URL bằng phương thức POST?

Sử dụng mảng $_POST để truy cập dữ liệu được gửi qua URL.

Ví dụ: Bạn có một trường biểu mẫu tên là 'var' trên biểu mẫu. Khi người dùng nhấn vào nút gửi form, khi đó bạn có thể truy cập giá trị như sau:

$_POST["var"];

5. Cách kiểm tra giá trị của một biến đã cho là một số là gì?

Có thể sử dụng hàm chuyên dụng is_numeric() để kiểm tra xem giá trị đó có phải là số hay không.

Hàm unlink() được dành riêng để xử lý hệ thống file. Nó chỉ đơn giản là xóa tập tin được đưa ra dưới dạng entry.

7. Có thể xóa thẻ HTML khỏi data không?

Có thể. Sử dụng hàm Strip_tags() cho phép chúng ta xóa các HTML tag khỏi một chuỗi.

8. Biến static trong hàm dùng để làm gì?

Biến static trong hàm dùng để lưu trữ dữ liệu trong quá trình thực thi hàm. Một biến static chỉ được xác định function lần đầu tiên và giá trị của nó có thể được sửa đổi trong quá trình gọi function như sau:

 

 

Câu hỏi phỏng vấn PHP trình độ từ 5 năm kinh nghiệm

Tổng hợp các câu hỏi phỏng vấn PHP trình độ senior cứng, master phù hợp với những ứng viên có từ 5 năm kinh nghiệm trở lên. Ngoài việc đánh giá chuyên môn, thông qua các câu hỏi, nhà tuyển dụng cũng đánh giá tư duy và phong cách làm việc của ứng viên. Bạn hãy chú ý điều này!

1. Làm thế nào để truyền một biến bằng reference?

Dùng toán tử & ở phía trước tên biến (ví dụ: $var1 = &$var2) để truyền một biến bằng reference.

2. Trong PHP, các đối tượng (object) được truyền theo giá trị hay theo tham chiếu?

Trong PHP, các đối tượng được truyền bằng tham chiếu.

3. Hãy đánh giá xem 1 hoặc 2, cái nào nhanh hơn?

1- Kết hợp hai biến như sau:

$variable1 = 'Hello'; 

 

$variable2 = 'World'; 

 

$variable3 = $variable1.$variable2;

Hoặc

2- $variable3 = "$variable1$variable2";

Câu trả lời là 1. $variable3 sẽ chứa “Hello World”. Code đầu tiên nhanh hơn code thứ hai, đặc biệt đối với các tập dữ liệu lớn.

4. Sự khác nhau giữa $_FILES['userfile']['name'] và $_FILES['userfile']['tmp_name'] là gì?

  • $_FILES['userfile']['name'] là tên gốc của tệp trên máy khách (tệp mà người dùng lựa chọn để tải lên)
  • $_FILES['userfile']['tmp_name'] là tên tệp tạm thời của tệp được tải lên. Các tệp này được lưu trữ trong thư mục tạm thời trên máy chủ.

5. Giải thích cách bạn có thể cập nhật Memcached khi bạn thực hiện thay đổi đối với PHP?

Khi PHP thay đổi, ta có thể cập nhật Memcached bằng cách:

  • Xóa cache chủ động: Có thể dùng hàm memcached_delete() để xóa cache khi thực hiện chèn hoặc cập nhật.
  • Đặt lại bộ nhớ đệm: Đặt lại các giá trị sau khi chèn hoặc cập nhật. Có thể dùng hàm memcached_flush() để thực hiện đặt lại cache.

6. Hãy cho biết liệu có thể chia sẻ một phiên bản Memcache giữa nhiều dự án PHP hay không?

Câu trả lời là có. 

Memcache hoạt động bằng các lưu trữ dữ liệu tạm thời trong RAM của máy chủ và có thể chạy memcache trên một hoặc nhiều máy chủ, cho phép truy cập nhanh chóng.

7. Có thể gửi form bằng button chuyên dụng không?

Dùng chức năng document.form.submit() để gửi form.

Ví dụ:

8. Đa kế thừa có được hỗ trợ PHP không?

Không, PHP chỉ hỗ trợ kế thừa đơn. Tức là một class chỉ có thể được kế thừa từ một class cha duy nhất bằng cách sử dụng từ khóa "extended".

Một số câu hỏi khác có thể gặp khi phỏng vấn PHP

Dưới đây là một số câu hỏi phỏng vấn PHP được mở rộng theo các chủ đề nhỏ. Bạn có thể tham khảo thêm để củng cố kiến thức chuyên sâu, sẵn sàng tinh thần vì có thể sẽ là một trong số các câu hỏi đến từ người phỏng vấn chuyên môn.

Câu hỏi phỏng vấn PHP Laravel

1. Laravel là gì?

Laravel là một framework PHP mã nguồn mở, phát hành theo giấy phép MIT, được sử dụng để phát triển ứng dụng web bằng cách sử dụng kiến trúc MVC (Model-View-Controller).

2. Liệt kê các thư mục quan trọng được sử dụng trong Laravel

Các thư mục được sử dụng trong một ứng dụng Laravel phổ biến là:

 

  • App: Thư mục chứa mã nguồn của ứng dụng, gồm class, mô hình, bộ điều khiển,...
  • Config: Thư mục chứa các tệp cấu hình của ứng dụng như thông tin bộ nhớ cache, kết nối database,...
  • Database: Thư mục chứa các tệp seed, tệp di chuyển,...
  • Public: Thư mục chứa tệp được truy cập công khai như HTML, CSS, JavaScript, hình ảnh,...
  • Resources: Thư mục chứa tệp tài nguyên của ứng dụng.
  • Routes: Thư mục chứa tệp định tuyến của ứng dụng.
  • Storage: Thư mục chứa tệp được ứng dụng tạo ra và quản lý.

3. Làm thế nào để kích hoạt nhật ký truy vấn trong Laravel?

Dùng phương thức EnableQueryLog để kích hoạt nhật ký truy vấn trong Laravel.

4. Laravel hỗ trợ các cơ sở dữ liệu nào?

Laravel hỗ trợ các cơ sở dữ liệu sau:

  • PostgreSQL
  • Máy chủ SQL
  • SQLite
  • MySQL

5. Giới hạn tốc độ API của Laravel là gì?

Đó là một tính năng của Laravel. Nó cung cấp khả năng điều chỉnh, giới hạn tỷ lệ giúp các Laravel developer phát triển ứng dụng an toàn và ngăn chặn các cuộc tấn công DOS.

Một số câu hỏi phỏng vấn PHP khác về Laravel bạn có thể tham khảo và tìm hiểu thêm với các key như:

  • Session trong Laravel là gì?
  • Ajax trong Laravel là gì?
  • Thư mục bootstrap có tác dụng gì?
  • Robot.txt được đặt trong thư mục nào?
  • Giải thích web.PHP route
  • Phân biệt CodeIgniter and Laravel.

Câu hỏi phỏng vấn PHP MySQL

1. Một số kỹ thuật tối ưu hóa các truy vấn SQL để có hiệu suất tốt hơn trong MySQL là gì?

Dưới đây là một số mẹo tối ưu truy vấn SQL:

  • Sử dụng chỉ mục
  • Dùng các toán tử so sánh chính xác như  =, <>, >, <, <=, và >= thay vì dùng các toán tử so sánh không chính xác (LIKE, IN, BETWEEN).
  • Dùng hàm kết hợp: CONCAT(), GROUP_CONCAT(), SUM()
  • Dùng truy vấn subquery
  • Dùng truy vấn join
  • Dùng truy vấn phân tán
  • Dùng các truy vấn cache
  • Dùng truy vấn tối ưu hóa 

2. Bạn xử lý các bản ghi trùng lặp trong MySQL khi chèn dữ liệu vào bảng bằng cách nào?

  • Dùng primary key
  • Dùng ràng buộc UNIQUE
  • Dùng thủ tục lưu trữ
  • Dùng hàm SQL

3. Bạn sẽ sao lưu và khôi phục CSDL MySQL như thế nào? Bạn thích những công cụ và phương pháp nào để sao lưu cơ sở dữ liệu?

Một số phương pháp thường áp dụng để sao lưu và khôi phục cơ sở dữ liệu MySQL đó là:

  •  Lệnh mysqldump: mysqldump -u username -p database_name > backup.sql
  • Công cụ PHPMyAdmin
  • Tạo và kiểm tra bản sao lưu thường xuyên

Với câu hỏi phỏng vấn PHP về quan điểm cá nhân khi sử dụng công cụ, ví dụ như câu hỏi này, bạn có thể chọn ra một công cụ bạn cảm thấy tự tin nhất để trình bày các ưu điểm. Và đừng quên cho thêm kinh nghiệm sử dụng của bạn với công cụ đó. Điểm cộng chính là ở chỗ này.

4. Index SQL là gì?

Index là phương pháp tăng hiệu suất truy vấn của cơ sở dữ liệu, cho phép truy xuất các bản ghi từ bảng với tốc độ nhanh hơn. Một index sẽ tạo ra 1 entry cho mỗi giá trị.

5. Có các loại index nào?

Có 3 loại index:

  • Unique Index
  • Clustered Index
  • NonClustered Index

Một số câu hỏi phỏng vấn PHP nhóm SQL khác bạn có thể tìm hiểu dưới đây: 

  • Cursor SQL là gì?
  • Subquery là gì?
  • Các loại subquery
  • Hãy nêu điểm khác biệt của DELETE và TRUNCATE
  • Biến local và global trong SQL là gì?

Câu hỏi phỏng vấn OOP PHP

1. Bạn có thể lấy ví dụ về khái niệm OOP trong PHP không?

Tất nhiên là có. Dưới đây là một ví dụ về OOP trong PHP:

// Định nghĩa một lớp (class) Animal

class Animal {

    // Thuộc tính (property)

    public $name;

    

    // Phương thức (method)

    public function speak() {

        echo "This animal speaks.";

    }

}

 

// Tạo một đối tượng (object) từ lớp Animal

$cat = new Animal();

 

// Đặt giá trị cho thuộc tính "name" của đối tượng

$cat->name = "Cat";

 

// Gọi phương thức "speak" của đối tượng

$cat->speak(); // Output: "This animal speaks."

 

2. Access modifiers là gì?

Access modifiers xác định phạm vi của phương thức, biến có thể được truy cập từ các đối tượng hoặc class khác nhau. Có 5 loại công cụ access modifiers dưới đây:

  • Private
  • Protected
  • Public
  • Friend
  • Protected Friend

3. Những toán tử không thể bị overload là gì?

Dưới đây là một số toán tử không thể bị quá tải:

  • Scope Resolution (::)
  • Member Selection (.)
  • Member selection thông qua con trỏ tới function (.*)

 Ngoài những câu hỏi phía trên, ITNavi cũng tổng hợp một số câu hỏi phỏng vấn PHP OOP mang tính chuyên sâu hơn phía dưới đây:

  • Ý nghĩa của từ khóa "final" trong PHP
  • Namespace trong PHP là gì?
  • Cách hoạt động của các phương thức Magic __construct, __destruct, __get, và __set
  • Dependency Injection (DI) trong OOP là gì?

Tìm việc lập trình PHP fresher/junior/senior ở đâu?

Bạn còn đang băn khoăn không biết nên tìm công việc lập trình PHP ở đâu để có nhiều cơ hội ứng tuyển vào các công ty uy tín thì ITNavi chính là lựa chọn hoàn hảo dành cho bạn.

Tìm việc nhanh chóng, dễ dàng apply, công việc phù hợp với danh sách 2000+ việc làm lập trình PHP, SQL, Laravel,... từ các công ty, tập đoàn công nghệ hàng đầu được cập nhật liên tục trên ITNavi.

 

Trên đây là một số câu hỏi phỏng vấn PHP bạn có thể tham khảo. Tùy vào level cũng như đặc thù của từng doanh nghiệp mà sẽ có những câu hỏi khác nhau. Bạn cần nắm vững kiến thức và giữ sự tự tin để buổi phỏng vấn diễn ra suôn sẻ nhất.

 

ITNavi - Nền tảng kết nối việc làm IT

Nguồn: Tổng hợp câu hỏi phỏng vấn PHP level Fresher-Junior-Senior

Bài viết liên quan

NEWSLETTER

Nhập địa chỉ email của bạn dưới đây để đăng ký nhận tin mới nhất

KẾT NỐI VÀ THEO DÕI