Chuyên mục
Câu hỏi tuyển dụng PHP

Bộ câu hỏi phỏng vấn PHP (phần 1)

Phỏng vấn là một trong những khâu quan trọng và cần chuẩn bị kỹ càng nhất khi đi xin việc. Đặc biệt, với các ngành đặc thù và cần chuyên môn cao như lập trình viên, buổi phỏng vấn sẽ đóng vai trò quyết định 80% tỷ lệ “đậu” vị trí đó.
Do đó, để giúp các bạn lập trình viên củng cố niềm tin và chuẩn bị sẵn “tư trang chiến đấu” trong cuộc phỏng vấn khốc liệt này, Uptodream xin gửi tặng bạn bộ câu hỏi phỏng vấn lập trình viên PHP mà nhà tuyển dụng thường sử dụng.

Q1: Khi nào sử dụng ini_set()?

Đặt giá trị của tùy chọn cấu hình đã cho. Tùy chọn cấu hình sẽ giữ giá trị mới này trong quá trình thực thi tập lệnh và sẽ được khôi phục ở phần cuối của tập lệnh.

ini_set(string $option, string|int|float|bool|null $value): string|false

Ví dụ

<?php echo ini_get('display_errors');
if (!ini_get('display_errors')) {
ini_set('display_errors''1'); }

echo ini_get('display_errors'); ?>

Q2: $GLOBALS nghĩa là gì?

$globals là một biến siêu toàn cục trong PHP được sữ dụng để truy cập các biến toàn cục bất kỳ đâu trong tập lệnh PHP

Q3: Làm thế nào bạn có thể chuyển một biến theo tham chiếu?

Biến $b lúc này được gọi là biến tham chiếu của $a, còn gọi là (alias), khi $b và $a trỏ về cùng một địa chỉ bộ nhớ trên máy. Lúc này, $a hoặc $b thay đổi giá trị thì biến còn lại cũng sẽ thay đổi theo.

<?php $a   = 10; $b   = &$a; echo 
"a=$a; b = $b"
//input result a=10;b=10
$b   = 5;
echo  "a=$a; b = $b"
//input result a=5;b=5
$a   = 10;
echo  "a=$a; b = $b"
//input result a=10;b=10

Q4: Sự khác nhau giữa == và === là gì

Biến $b lúc này được gọi là biến tham chiếu của $a, còn gọi là (alias), khi $b và $a trỏ về cùng một địa chỉ bộ nhớ trên máy. Lúc này, $a hoặc $b thay đổi giá trị thì biến còn lại cũng sẽ thay đổi theo.

<?php
$a   = 10;
$b   = &$a;


echo  “a=$a; b = $b”
//input result a=10;b=10
$b   = 5;
echo  “a=$a; b = $b”
//input result a=5;b=5
$a   = 10;

echo  “a=$a; b = $b”
//input result a=10;b=10

Q5: Sự khác biệt giữa isset và empty

– Isset() là hàm dùng để kiểm tra xem một biến đã có giá trị hay chưa ? . Nếu có thì sẽ trả về giá trị là TRUE và ngược lại sẽ trả về giá trị là FALSE. – Empty() là hàm dùng để kiểm tra xem một biến có giá trị “rỗng” hay không ? . Nếu có thì sẽ trả về giá trị là TRUE và ngược lại sẽ trả về giá trị là FALSE.

Q6: Khi nào dùng require với include

Trong lập trình PHP có 2 hàm dễ gây nhầm lẫn khi sử dụng đó là require() và include() chúng đều có chức năng là import tập tin khác vào file hiện tại.
Require sẽ tạo ra cảnh báo lỗi và dừng chương trình ngay lập tức.
Hàm Include() sẽ tạo ra cảnh báo nhưng chương trình vẫn tiếp tục chạy.

Q7: Sự khác biệt giữa const với define?

Define là hàm của PHP dùng để khai báo, định nghĩa cho một hằng số Const là từ khoá cũng giống như hàm define dùm để khai báo một hằng số

Sự khác biệt:
  1. Tên hằng số thi không cần bắt đầu bằng ký tự đô la $ như biến.
  2. Hằng số không thể sử dụng phép gán giá trị như biến (=), giá trị của nó phải được xác định duy nhất tại hàm define.
  3. Hằng số có thể truy cập bất cứ ở đâu mà không giới hạn phạm vị như biến.
  4. Ngay sau khi giá trị hằng thiết lập, nó không bị thay đổi hay định nghĩa lại nữa.

Q8: Sự khác biệt khi dùng $this với self

các hàm và biến tĩnh được liên kết với chính định nghĩa class. Tất cả các thể hiện của một class đều có chung một biến tĩnh. Trong ngữ cảnh của một method (function ) của một class, các variables và hàm tĩnh được truy cập bằng cách sử dụng self::. Các phương thức và biến khác được sử dụng trong ngữ cảnh của một đối tượng (một thể hiện) của một class, sử dụng $this.

Q9: Sự khác biệt giữa die() và exit() trong function PHP là gi?

exit() và die() cùng thoát function. Tuy nhiên có sự khác biệt nhỏ là cú pháp trả về.

Q10: Kể tên một số hằng trong PHP?

  1. _LINE_ – Nó đại diện cho số dòng hiện tại của tệp.
  2. _FILE_ – Nó đại diện cho đường dẫn đầy đủ và tên tệp của tệp. Nếu được sử dụng bên trong một tệp bao gồm, tên của tệp được bao gồm sẽ được trả về.
  3. _FUNCTION_ – Nó đại diện cho tên hàm.
  4. _CLASS_ – Nó trả về tên lớp như nó đã được khai báo.
  5. _METHOD_ – Nó đại diện cho tên phương thức của lớp.

Q11: PHP xử lý đa luồng hoặc đơn luồng?

Về bản chất, PHP không phải là một đơn luồng. Tuy nhiên, trường hợp cài đặt phổ biến nhất của PHP trên hệ thống unix là thiết lập một đơn luồng, cũng như cài đặt Apache phổ biến nhất là nginx không có kiến trúc dựa trên luồng nào. Trong thiết lập Windows phổ biến nhất và một số thiết lập unix nâng cao hơn, PHP có thể và vận hành nhiều luồng thông dịch trong một quy trình. PHP như một trình thông dịch đã hỗ trợ đa luồng kể từ năm 2000.

Q12: Lưu trữ data dạng JSON hoặc serialized array trong PHP là gì?

Chuỗi JSON cũng dễ đọc / ghi / sửa đổi bằng tay hơn một chuỗi được tuần tự hóa.
Serialize() sẽ mã hóa giá trị biến truyền vào thành một chuỗi đặc biệt, hàm trả về kết quả là chuỗi được mã hóa.

Q13: Những giải thích lỗi trong PHP là gi?

  1. Parse error or Syntax Error
  2. Warning Errors
  3. Notice Error
  4. Fatal Error

Q14: Sự khác biệt giữa var_dump() với print_r()?

Hàm var_dump() trong PHP sẽ in ra thông tin của biến gồm kiểu dữ liệu của biến và giá trị.
Hàm print_r() trong PHPsẽ in biến ra thông tin của biến truyền vào một cách dễ hiểu đối với người sử dụng

Q15: Bạn hiểu như thế nào về __destruct trong class?

Hàm extract() trong PHP được sử dụng để nhập các biến từ một mảng vào trong bảng biểu tượng hiện tại (current symbol table). Nó nhận một mảng liên hợp array và coi các key như là các tên biến và các value là các giá trị biến. Với mỗi cặp key/value nó sẽ tạo một biến trong bảng biểu tượng hiện tại, theo các tham số extract_type và prefix.

extract(array &$array, int $flags = EXTR_OVERWRITE, string $prefix = “”): int

Ví dụ

<?php
/* Suppose that $var_array is an array returned from wddx_deserialize */
$size "large";
$var_array = array("color" => "blue", "size"  => "medium", "shape" => "sphere"); extract($var_arrayEXTR_PREFIX_SAME"wddx");

echo "$color$size$shape$wddx_size\n";
  ?>
blue, large, sphere, medium

Một bình luận trong “Bộ câu hỏi phỏng vấn PHP (phần 1)”

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *