Logo

101 câu hỏi phỏng vấn PHP có hướng dẫn trả lời chi tiết

Lượt xem: 1748
Ngày đăng: 17/03/2024

Tổng hợp những câu hỏi phỏng vấn PHP thường gặp ✓ Câu hỏi phỏng vấn PHP nâng cao, cơ bản, câu hỏi phỏng vấn Laravel, OOP PHP ✓ Các câu hỏi phỏng vấn lập trình viên PHP hay có gợi ý trả lời tham khảo

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

➽➽➽ Có thể bạn quan tâm: 1001 câu hỏi phỏng vấn thường gặp và cách trả lời hay nhất thuyết phục nhà tuyển dụng

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

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

Laravel framework là gì? Phiên bản mới nhất của Laravel là bao nhiêu?

Laravel framework là một framework PHP miễn phí và rất phổ biến. Nó sẽ giúp người dùng tiết kiệm thời gian về chi phí, cải thiện chất lượng code. Phiên bản mới nhất là Laravel 8, được phát hành vào ngày 8/9/2020.

Trong Laravel thì Middleware là gì?

Middleware như một cánh cửa trung gian giữa Router và controller. Middleware là một loại cơ chế lọc HTTP request. Ví dụ: Nếu người dùng không được xác thực và nó đang cố truy cập vào admin Middleware sẽ chuyển hướng người dùng đó đến trang đăng nhập; hoặc thực hiện một thực thi lệnh nào đó trước khi người dùng truy cập vào controller...

Một số  cách dùng middleware:

  • Middleware globle được sử dụng trong mọi request
  • Middleware được sử dụng cho router hoặc nhóm router
  • Middleware được sử dụng trong controller

Có mấy cách query trong laravel? Bạn hay sử dụng cách nào? Vì sao?

Có 2 cách truy vấn trong laravel, đó là Eloquent và Query builder. Eloquent  và Query builder đều là công cụ truy vấn của laravel giúp cho coder dễ dàng thao tác với database.

  • Eloquent: các thao tác với database đều cần thông qua model, và hỗ trợ rất nhiều hàm làm cho việc truy vấn đơn giản hơn, hỗ trợ những relationship giúp cho code dễ đọc và đẹp hơn.
  • Query buider: thao tác với database thông qua lớp DB. Nó có thể được sử dụng để thực thi hầu hết những thao tác về database trong ứng dụng.

So sánh:

  • Query builder và Eloquent đều sử dụng: 'PDO parameter binding' nên sẽ giúp chúng ta tránh được lỗi sql injection.
  • Có thể dùng tất cả hàm của query buider trong eloquent, nhưng không thể làm ngược lại.
  • Eloquent không thể thực hiện được những truy vấn quá phức tạp.

Tùy vào câu truy vấn mà ta có thể lựa chọn cách dùng eloquent hay query builder. Tôi thì hay sử dụng eloquent nhưng lai query buider, tức là vẫn dùng model để thao tác với database. Nhưng câu truy vấn thì vẫn sử dụng hàm của eloquent và query builder, với những câu truy vấn phức tạp cần chèn SQL thuần thì cần sử dụng hàm DB::raw()

Trong Laravel thì Migration là gì và được sử dụng như thế nào?

Migration là một kiểu kiểm soát phiên bản cho cơ sở dữ liệu. Nó cho phép sửa đổi, chia sẻ hồ sơ dữ liệu dễ dàng. Một file migration sẽ chứa 2 methods up và down(). Hàm up sẽ dùng thêm 1 bảng, cột, indexes. Hàm dow sẽ sử dụng để đảo ngược (reverse) các hành động thực hiện bởi hàm up().

Service container là gì?

Service container là một khái niệm nằm trong tần Architecture Concepts (kiến trúc) của laravel, hỗ trợ sử dụng dependecy injection dễ hàng hơn, và có thể sử dụng được ở tất cả các class chỉ cần 1 lần khai báo duy nhất mà không cần phải thực hiện khai báo nhiều lần.

Service Provider là gì?

Service provider là trung tâm của laravel. Tất cả quá trình khởi động, thực thi code của core laravel, những ứng dụng của bạn hoặc ứng dụng bên thứ ba đều phải thông qua Service Provider. Tất cả các service provider được đăng kí trong app/config/app.php, Khi cài bất kì ứng dụng nào thông qua composer, các bạn cũng để phải đăng kí các service provider.

Queue trong laravel là gì?

Queue cho phép đưa những công việc đòi hỏi thời gian nhiều lên hàng đợi, giúp tránh phát sinh lỗi và thiếu sót các tác vụ cần thực hiện. Ví dụ: khi export 1 file exel có dung dượng lớn, vấn đề xảy ra là khi client sent request tới sever, và đợi sever phản hồi, nếu như file exel đó quá nặng đòi hỏi thời gian chờ quá lâu thì lúc đó sẽ xảy ra lỗi connection time out, hay giả sử client request email quá nhiều, sẽ dẫn đến tình trạng nghẽn sever email... Queue ra đời để giải quyết các vấn đề đó.

Facade là gì?

Facade là kiểu design của laravel cho phép truy cập đến các hàm bên trong các service được khai báo trong Service Container bằng cách gọi các hàm static. Ví dụ Auth::user(), Auth::check();

Ta có thể tạo facade mới bằng cách tạo một sevirce provider mới và bỏ vào config.

Thế nào là Lumen?

Lumen là giải pháp tối ưu để phát triển microservices và fast API dựa trên Laravel. Dự án này được tạo ra bởi Taylor Otwell. Nó được làm nên cho microservice nhưng không nhiều với các ứng dụng giao tiếp người dùng. Bạn cần phải sử dụng lệnh này để cài lumen composer global require.

Artisan là gì?

Artisan là kiểu "command line interface" sử dụng trong Laravel. Nó cung cấp rất nhiều lệnh để phát triển ứng dụng. Có một số lệnh Artisan phổ biến như: PHP artisan list, PHP artisan --version, PHP artisan help, PHP artisan make:controller, PHP artisan make:model, PHP artisan make:migration, PHP artisan make:middleware, PHP artisan make:auth, PHP artisan make:mail, PHP artisan make:provider

Laravel sử dụng template engine gì?

Laravel sẽ sử dụng Blade Template Engine. Đây là một templating engine đơn giản, mạnh mẽ được cung cấp bởi Laravel.

Nêu các khái niệm cơ bản trong laravel?

Blade Templating, Routing, Eloquent ORM, Middleware, Artisan(Command-Line Interface), Security, In built Packages, Caching, Service Providers, Facades, Service Container

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

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

Lập trình hướng đối tượng (OOP) là gì? Tại sao sử dụng OOP mà không phải lập trình khác?

OOP là phương pháp lập trình quy tất cả về một đối tượng. Ngôn ngữ lập trình hướng đối tượng (OOP) sẽ có các tính chất hướng đối tượng như sau:

  • Trừu tượng hóa (Abstraction)
  • Đóng gói (Encapsulation)
  • Kế thừa (Inheritance)
  • Đa hình (Polymorphism)
  • ...

PHP là phần mềm mã mở được tất cả người sử dụng trên thế giới phát triển, mỗi người phát triển một hướng, nên OOP được sử dụng để tập hợp tất cả quy về một mối. Điểm mạnh của OOP là kế thừa, cho phép ta sử dụng những gì đã có trước đó và phát triển thêm dựa trên những cái đã có sẵn.

PHP là ngôn ngữ hướng đối tượng như thế nào?

PHP chủ yếu dựa trên ngôn ngữ lập trình C++, mà C++ là ngôn ngữ lập trình hướng đối tượng.

Một lớp PHP chứa các thuộc tính và phương thức được sử dụng để tạo một đối tượng của lớp đó và mỗi đối tượng sẽ có các thuộc tính và giá trị riêng.

Constructor và Destructor trong PHP là gì?

Constructor hay còn gọi là Hàm tạo trong PHP được sử dụng để tạo một đối tượng thuộc kiểu lớp của nó, được sử dụng để khởi tạo các thuộc tính của đối tượng bằng cách sử dụng một phương thức có tên là _construct().

Hàm tạo trong PHP có thể bị overload bằng cách gọi cùng tên phương thức nhưng truyền đối số khác nhau trong cùng một khai báo lớp.

Destructor hay còn gọi là Hàm hủy trong PHP được sử dụng để gọi khi vòng đời của đối tượng sẽ kết thúc để giải phóng bộ nhớ bị chiếm giữ hoặc để thu gom rác giống nhau.

Hàm hủy có thể được gọi bằng phương thức _destruct().

Namespace trong PHP là gì?

Một namespace trong PHP được sử dụng để đóng gói các mục tương tự như trừu tượng hóa trong các khái niệm lập trình hướng đối tượng. Namespace được sử dụng để thiết lập mối quan hệ giữa các lớp, hàm và hằng. Một namespace có thể được xác định bằng cách sử dụng từ keyword namespace được dành riêng cho PHP để sử dụng nội bộ để tránh xung đột với các định danh do người dùng tạo ra.

Từ khóa final là gì? Chúng được sử dụng như thế nào trong PHP?

Từ khóa final được giới thiệu trong phiên bản PHP 5. Từ khóa final (có nghĩa là cuối cùng) trong PHP được sử dụng để đánh dấu một lớp hoặc một hàm là cuối cùng. Nếu một lớp được đánh dấu là final, nó không thể được mở rộng (extends) để sử dụng các thuộc tính hoặc phương thức của nó. Nó ngăn chặn các lớp con của nó ghi đè một phương thức. Nếu chỉ có một hàm được đánh dấu là final, thì nó không thể được mở rộng. Một khai báo final có thể được thực hiện bằng cách thêm tiền tố vào tên lớp hoặc tên hàm với từ khóa final.

Bạn hiểu như thế nào về echo và print trong PHP?

Echo và Print là hai cách cơ bản để nhận output trong PHP. Chức năng của echo và print về cơ bản là giống hệt nhau, ngoại trừ:

  • echo không không trả về bất kỳ giá trị nào trong khi print trả về giá trị 1 có thể được sử dụng trong các biểu thức khác.
  • echo có thể có nhiều đối số trong khi print chỉ có thể chấp nhận 1 đối số tại cùng một thời điểm.

Require và Include trong PHP là gì?

Các câu lệnh require và include trong PHP có sẵn từ các phiên bản PHP 4 trở lên gần như giống hệt nhau. Chỉ một số khác biệt:

  • Câu lệnh include sẽ bao gồm các tệp đã chỉ định và đánh giá nó.
  • require cũng có tính năng tương tự nhưng nó tạo ra lỗi nghiêm trọng khi lỗi với lỗi cấp độ E_COMPILE_ERROR là lỗi biên dịch. Trong trường hợp này, nó dừng việc thực thi tập lệnh và tạm dừng dòng thời gian chạy chương trình. Các tệp sẽ được include dựa trên đường dẫn tệp được đưa ra trong tập lệnh.

Clone là gì? Sử dụng clone như thế nào?

Clone là nhân bản một đối tượng đã có sẵn (không phải khởi tạo đối tượng mới). Sử dụng clone khi ta không muốn nó làm thay đổi giá trị của lớp ban đầu. 

Interface trong PHP là gì?

Interface là một cách để cung cấp việc thực hiện các chức năng khác nhau theo yêu cầu của người dùng. Interface cũng có thể được hiểu như là bản thiết kế của các cấu trúc cần thiết. Một interface có thể được sử dụng và triển khai theo nhiều cách bên trong lớp triển khai.

Phân biệt sự giống nhau và khác nhau của Interface và Abstract?

  • Giống nhau: đều dùng để quản lý dự án.
  • Khác nhau: Abstract mang tính đơn hình, chỉ kế thừa được 1 lớp (bản chất là 1 lớp). Còn Interface mang tính đa hình, có thể sử dụng 1 hay nhiều giao diện.

Những câu hỏi phỏng vấn PHP cơ bản

Những câu hỏi phỏng vấn PHP cơ bản - ViecLamVui

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

Ngôn ngữ PHP là một đoạn mã lệnh hay ngôn ngữ lập trình kịch bản được dùng để phát triển ứng dụng viết cho máy chủ. Ngôn ngữ này được chạy ở server, sinh ra mã html trên client. Nhờ vào đó, PHP tạo ra được các ứng dụng website, website có thể chạy trên máy chủ.

Mảng là gì? Có những loại mảng nào trong PHP?

Mảng là một biến có thể chứa nhiều phần tử từ đó có thể dễ dàng lưu trữ, sắp xếp hay xoá bỏ các phần tử trong mảng một cách dễ dàng. Mảng bao gồm 2 phần là key và value. Key dùng để truy cập vào phần tử của mảng, qua đó ta có thể gán giá trị hoặc lấy giá trị của phần tử trong mảng. 

Trong lập trình PHP mảng có 3 loại chính:

  • Mảng tuần tự: là mảng có key tự động tạo là chữ số tăng dần bắt đầu từ 0.
  • Mảng không tuần tự: là mảng có key mà bạn phải tự định nghĩa bằng các ký tự chữ hoặc số và key không được sắp xếp bất kỳ thứ tự nào.
  • Mảng đa chiều: là mảng có chứa ít nhất một mảng khác trong nó.

Session là gì?

Session hiểu đơn giản là một phiên làm việc của người dùng. Nó được dùng để lưu trữ thông tin được sử dụng xuyên suốt trong nhiều trang web. Không giống như cookie, Session được lưu trên server.

Cookie là gì?

Cookie là một tập tin nhỏ được lưu trên máy người dùng để lưu thông tin tạm thời. Mỗi khi máy tính yêu cầu một trang web, trình duyệt sẽ gửi kèm cookie.

Đối tượng là gì?

Đối tượng(Object) là những sự vật, sự việc có tính chất, đặc tính giống nhau mà ta gom góp lại thành một đối tượng giống ở trong thực tế cuộc sống. Khi lập trình OOP chúng ta sẽ định nghĩa các lớp (class) để thể hiện các đặc điểm chung của đối tượng. Đối tượng trong OOP gồm 2 thành phần chính:

  • Thuộc tính (Attribute): Những thông tin, đặc điểm của đối tượng
  • Phương thức (Method): Những hành vi mà đối tượng có thể thực hiện.

Class là gì?

Class (Lớp) là trừu tượng hóa của đối tượng. Những đối tượng có đặc điểm chung sẽ được gộp chung thành một lớp. Lớp cũng sẽ bao gồm 2 thông tin là đặc tính và phương thức.

Ví dụ: Ta có lớp Animal với

  • Thuộc tính: màu sắc, cân nặng ...
  • Phương thức: run(), eat() 

==> Các đối tượng của nó có thể là: Chim, Lợn, Gà....

Sự khác nhau của toán tử & và && trong PHP là gì?

Toán tử & và && trong PHP đều là phép toán AND. Tuy nhiên toán tử một dấu & áp dụng theo kiểu bit, nói dễ hiểu hơn một dấu & là phép AND thao tác trên các bit. Phép toán && chỉ áp dụng cho kiểu boolean True và False. 

$a++ và ++$a khác nhau ở điểm nào?

Cả hai đều được dùng để tăng thêm một số đơn vị cho biết số, nhưng điểm khác biệt ở  $a++ được thực sau khi nó được gọi, còn ++$a được thực thi ngay khi nó được gọi.

Hàm include() and require() khác nhau ở đâu?

Cả hai đều đọc một file cụ thể. Nhưng trong hàm require() thì process sẽ văng ra cùng với 1 fatal error nếu xảy ra vấn đề trong quá trình đọc file và ngăn chặn sự thực thi của script, trong khi đó hàm include() vẫn sẽ pass và chuyển sang step tiếp theo trong quá trình thực thi.

Sự khác nhau giữa biến và hằng? Nếu hằng được định nghĩa 2 lần thì sẽ như thế nào?

Sự khác nhau giữa biến và hằng là biến có thể thay đổi được, hằng thì không.

Hằng bản chất là một loại biến nhưng không thay đổi được giá trị. Hằng định nghĩa 2 lần vẫn giữ nguyên giá trị ban đầu khai báo.

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

Câu hỏi phỏng vấn PHP nâng cao - ViecLamVui

Memcache và Memcached trong PHP là gì? Có thể chia sẻ một phiên bản Memcache duy nhất giữa một số dự án PHP không?

Memcached là một daemon bộ nhớ đệm hiệu quả được thiết kế đặc biệt để giảm tải cơ sở dữ liệu trong các ứng dụng web động. Mô-đun Memcache cung cấp giao diện thủ tục và hướng đối tượng tiện dụng cho Memcached.

Memcache là không gian lưu trữ bộ nhớ và có thể chạy Memcache trên một hoặc nhiều máy chủ. Do đó, có thể chia sẻ một phiên bản Memcache giữa nhiều dự án.

Có thể cấu hình một ứng dụng khách để nói chuyện với một tập hợp các trường hợp riêng biệt. Do đó, việc chạy hai tiến trình Memcache khác nhau trên cùng một máy chủ cũng được phép. Mặc dù chạy trên cùng một máy chủ, cả hai quá trình Memcache như vậy vẫn độc lập, trừ khi có một phân vùng dữ liệu.

Việc so sánh các đối tượng được thực hiện trong PHP như thế nào?

Toán tử '==' được sử dụng để kiểm tra xem hai đối tượng có phải là cá thể bằng cách sử dụng cùng một lớp và có cùng thuộc tính cũng như giá trị bằng nhau hay không. Để kiểm tra xem hai đối tượng có tham chiếu đến cùng một thể hiện của cùng một lớp hay không, toán tử nhận dạng '===' được sử dụng.

Làm thế nào để thực hiện typecasting trong PHP

Tên của kiểu đầu ra cần được chỉ định trong dấu ngoặc đơn trước biến sẽ được ép kiểu. Một số ví dụ:

  • (array) - chuyển thành mảng
  • (bool), (boolean) - chuyển thành Boolean
  • (double), (float), (real) - phôi nổi
  • (int), (integer) - chuyển thành số nguyên
  • (đối tượng) - phôi thành đối tượng
  • (string) - chuyển thành chuỗi

Các cách khác nhau để xử lý tập kết quả của Mysql trong PHP là gì?

Có 4 cách để xử lý kết quả của Mysql trong PHP

  • mysqli_fetch_array
  • mysqli_fetch_assoc
  • mysqli_fetch_object
  • mysqli_fetch_row

Traits trong PHP là gì?

Cơ chế này cho phép tạo ra các loại code có thể tái sử dụng khi không có hỗ trợ đa kế thừa. Một đặc điểm không thể được tạo ra một mình.

Tại sao PHP và JavaScript không thể tương tác trực tiếp với nhau? Bạn có thể đưa ra giải pháp không?

Không thể tương tác trực tiếp giữa JS và PHP vì trong khi cái trước là ngôn ngữ phía máy khách, thì cái sau là ngôn ngữ phía máy chủ. Tương tác gián tiếp giữa hai ngôn ngữ lập trình hàng đầu có thể xảy ra bằng cách sử dụng các biến trao đổi.

Việc trao đổi biến số này có thể xảy ra do hai lý do:

  • PHP có thể tạo ra mã JavaScript để trình duyệt thực thi
  • Có thể chuyển một biến cụ thể trở lại PHP thông qua URL. Vì PHP luôn được thực thi trước JavaScript nên các biến JS phải được chuyển qua biểu mẫu hoặc URL. Để chuyển các biến, GET và POST được sử dụng. Tương tự, để truy xuất biến đã truyền, $ _GET và $ _POST được sử dụng.

Làm cách nào bạn có thể cập nhật Memcached khi các thay đổi được thực hiện đối với PHP?

Có hai cách cập nhật Memcached khi các thay đổi được thực hiện đối với mã PHP:

  • Chủ động xóa bộ nhớ cache - Điều này có nghĩa là xóa bộ nhớ 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 thực hiện chèn hoặc cập nhật.

Các câu hỏi phỏng vấn lập trình viên PHP thường gặp

Các câu hỏi phỏng vấn lập trình viên PHP - ViecLamVui

Có bao nhiêu loại lỗi sai trong PHP? Bạn hãy kể tên

Có 3 loại lỗi trong PHP như sau:

  • Thông báo (Notices): Đây là những lỗi không nghiêm trọng. Những lỗi này không được hiển thị cho người dùng.
  • Cảnh báo (Warnings): Đây là những lỗi nghiêm trọng hơn, nhưng chúng không dẫn đến việc chấm dứt tập lệnh. Theo mặc định, những lỗi này được hiển thị cho người dùng.
  • Lỗi nghiêm trọng (Fatal Errors): Đây là những lỗi nghiêm trọng nhất. Những lỗi này có thể gây ra do việc chấm dứt tập lệnh ngay lập tức.

PHP là thừa kế đa hay đơn?

Trong PHP, chỉ có thể mở rộng một lớp tạo thành một lớp đơn khác. Điều này có nghĩa là PHP mang tính kế thừa duy nhất (single inheritance).

“Image” được sử dụng trong PHP như thế nào?

Để sử dụng chức năng hình ảnh trong PHP thì cần tải xuống thư viện GD Library – một công cụ vẽ đồ họa cho phép thay đổi thông tin dữ liệu của hình ảnh.

Thẻ phổ biến nhất để nhúng PHP vào HTML là gì?

Thẻ phổ biến nhất là:

<?php ……… ?>

Kết nối cơ sở dữ liệu MySQL database vào PHP như thế nào?

Kết nối cơ sở dữ liệu MySQL database vào PHP thực hiện như sau:

connection mysql_connect(pepper, Daniel, 12345, Applesauce, client_flag);

Ở đây, “pepper” là chủ nhà trong khi tên Daniel là tên người dùng và các số 1 đến 5 là một ví dụ về mật khẩu. “Applesauce” là tên của cơ sở dữ liệu mà bạn đang cố gắng kết nối.

Bạn có thể tạo ra bao nhiêu đối tượng trong PHP?

Có thể tạo ra vô hạn đối tượng trong PHP. Tuy nhiên, muốn bắt đầu tạo các đối tượng trong PHP, trước tiên cần xác định lớp của chúng. Sau khi thực hiện xong, ta có thể tạo một số lượng không giới hạn các đối tượng trong lớp đó.

PHP có phải là ngôn ngữ lập trình hướng đối tượng không?

OOP viết tắt của “object-oriented programming” (lập trình hướng đối tượng), nó là một loại ngôn ngữ lập trình tập trung vào đối tượng của nhiệm vụ, với tất cả các tài nguyên, chức năng nhằm tạo ra và phát triển hơn nữa. PHP 5 được coi là một ngôn ngữ OOP tuyệt vời - nó sở hữu rất nhiều tính năng mà OOP đại diện.

Ai là cha đẻ của PHP?

Rasmus Lerdorf là cha đẻ của PHP; còn Andi Gutmans và Zeev Suraski là những người tạo nên sự phát triển của Zend Engine PHP. Rasmus Lerdorf đã phát triển PHP vào năm 1994 khi đang làm việc tại Netscape Communications Corporation, và ông vẫn tiếp tục làm việc với dự án này cho đến nay.

Giải thích sự khác nhau giữa PHP4 và PHP5?

PHP4 được phát hành vào ngày 22 tháng 5 năm 2000, không hỗ trợ khái niệm oops và sử dụng Zend Engine 1.

PHP5 được phát hành vào ngày 13 tháng 7 năm 2004, hỗ trợ khái niệm oops và sử dụng Zend Engine 2.

1001 CÂU HỎI PHỎNG VẤN

Tổng hợp những câu hỏi phỏng vấn PHP thường gặp ✓ Câu hỏi phỏng vấn PHP nâng cao, cơ bản, câu hỏi phỏng vấn Laravel, OOP PHP ✓ Các câu hỏi phỏng vấn lập trình viên PHP hay có gợi ý trả lời tham khảo

Trên đây là 101 câu hỏi phỏng vấn PHP thường gặp và gợi ý trả lời, ViecLamVui - chuyên trang tìm việc làm nhanh miễn phí - gửi đến bạn. Hy vọng tài liệu trên có thể hỗ trợ các bạn thật hiệu quả.

#CauHoiPhongVanPHP #ViecLamVui

Bạn có thể đăng tin tuyển dụng miễn phí, tìm việc làm miễn phí các vị trí công việcViệc Làm IT. Bài viết thuộc danh mụcBlog Việc Làm IT trên ViecLamVui