vooclaptrinh.com

Rack đi code

Ôn tập kiến thức PHP với 100 câu hỏi phỏng vấn thường gặp (Phần 1)

Trong series này vooclaptrinh.com sẽ tổng hợp những câu phỏng vấn PHP cơ bản cần biết khi đi phỏng vấn cũng như giúp bạn có thể ôn tập kiến thức PHP từ series này. Hãy thử trả lời các câu hỏi bên dưới và đối chiếu câu trả lời để xem câu trả lời của bạn có khớp với kết quả không nhé.

Quảng cáo

1. Namespace trong PHP là gì?

 Namespace (Không gian tên) trong PHP đúng với tên gọi là một không gian lưu trữ, đóng gói đượ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ừ khóa 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.

Các loại namespace
Các loại namespace
Quảng cáo

2. Từ khóa final trong PHP là gì và khi nào nó được sử dụng?

 Từ khóa final 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 để 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.

Và nếu chỉ một chức năng được đánh dấu là final, thì nó không thể được mở rộng.

Từ khóa cuối cùng được giới thiệu trong phiên bản PHP 5. 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 .

3. Echo và Print trong PHP là gì?

Echo và Print là hai cách cơ bản để nhận đầu ra trong PHP.

Chức năng của echo và print giống hệt nhau trong PHP để có được kết quả đầu ra.

Sự khác biệt giữa echo và print là:

  • echo 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.
  • echo có nhiều đối số trong khi print chỉ chấp nhận một đối số tại một thời điểm.

4. Require, require_once và include trong PHP là gì?

  • Giống nhau: Hàm require() cũng tương tự như include() tức là đọc file bên ngoài và chèn vào vị trí gọi hàm.
  • Khác nhau:
    • include()nếu file gộp không tồn tại thì include() đưa ra báo lỗi và tiếp tục chạy script.
    • require() nếu file không tồn tại thì script sẽ bị dừng ngay lập tức vì nó tạo ra lỗi cấp độ E_COMPILE_ERROR là lỗi biên dịch.
  • Hàm require_once() hoạt động giống với require() với một sự khác biệt là require_once() sẽ kiểm tra xem file đã từng được load vào hay chưa, nếu đã load thì không làm gì nếu chưa load thì sẽ gọi require(), điều này để đảm bảo thư viện hàm không bị mở chèn nhiều lần vào.

5. Hằng trong PHP khác gì so với biến?

  • Đầu tiên khác nhau là cách khai báo:
    • Biến thì chỉ cần dùng ký tự $ để gắn hoặc lấy giá trị.
    • Hằng dùng hàm define() gắn giá trị và dùng constant() để lấy giá trị.
  • Điểm khác biệt lớn nhất là hằng là không thể thay đổi trong suốt quá trình chạy chương trình, biến thì có.
  • Nếu 1 hằng được định nghĩa 2 lần thì chương trình vẫn chạy được bình thường tuy nhiên hằng chỉ có giá trị của lần định nghĩa đầu tiên.

6. Mảng là gì? Có mấy loại mảng?

Mảng là một biến có thể chứa được nhiều phần tử, từ đó ta có thể dễ dàng lưu trữ, xắp xếp, hay xóa bỏ các phần tử trong mảng một cách dễ dàng.

Mảng bao gồm 2 thành 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 các phần tử trong mảng. Mảng(array) có 3 loại chính là:

  • 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ó.

7. Mảng tuần tự là gì? Khác gì với bất tuần tự? Để duyệt mảng ta dùng vòng lặp nào?

Mảng tuần tự là mảng có key là chữ số bắt đầu từ 0 và tăng dần.

Nó khác với mảng bất tuần tự là các phần tử trong nó KEY được sắp xếp tăng dần từ 0 còn mảng bất từ tự thì không.

Để duyệt mảng tả có thể dùng bất cứ vùng lập nào. Tuy nhiên chuẩn nhất là dùng vòng lập foreach, vì vòng lập này được nhà phát triển PHP xây dựng riêng cho việc duyệt mảng, nêu nó dễ sử dụng hơn, tốc độ xử lý của nó nhanh hơn.

  • unset() dùng để set 1 biến thành undenfined.
  • unlink() dùng để xóa một tập tin được lưu trên máy chủ của bạn.

9. Làm sao để lấy Id Address của client trong PHP?

Chúng ta có nhiều cách để lấy Id address của Client nhưng $_SERVER[“REMOTE_ADDR”] là cách đơn  giản nhất.

10. Cho ví dụ về SessionID

Tùy vào thiết kế và môi trường cũng như level của bạn để thấy được session có thể được triển khai bằng file, database hoặc memory (APC, Memcached…).

SESSION ID là một hash string có chiều dài 32 ký tự, ví dụ “q6galil87hnkafa65r7agnrno4”,….

11. 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.

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 ví dụ 1 & 0 thì ra 0.

Phép toán && thì chỉ áp dụng cho kiểu boolean True và False.

COOKIE là một tập tin nhỏ được server nhúng vào máy tính của người dùng. Nếu lần đầu tiên trình duyệt truy cập vào website, nó sẽ gửi một COOKIE đến trình duyệt của người dùng. Mỗi khi người dùng tiếp tục yêu cầu một trang web từ website này thì COOKIE với các thông tin thu nhập từ phía người dùng trên website này sẽ được sẽ gửi trả về server của website.

SESSION được hiểu là khoảng thời gian mà người sử dụng giao tiếp với 1 ứng dụng. SESSION được lưu trữ hoàn toàn trên server, do vậy tính bảo mật cao hơn cookie, các website hiện này thường dùng session để lưu thông tin của người dùng khi họ đăng nhập.

Chu kỳ sống của SESSION do webserver qui định, ta có thể điều chỉnh chu kỳ này khi cấu hình webserver, tại server sẽ có 1 PHPSESSID tương ứng được tạo ra, các PHPSESSID sẽ được lưu trong một tập tin văn bản ở tại vị trí được qui định trong file php.ini ở dòng session.save_path.

Đọc thêm về cookie và sesion: https://xuanthulab.net/su-dung-session-va-cookie-trong-php.html

13. Phân biệt $_POST và $_GET trong php?

  • Cả $_GET và $_POST đều được dùng để gửi dữ liệu lên server.
  • $_GET: Gửi dữ liệu lên server thông qua URL, nên thông tin dữ liệu hiển thị lên url vì thế bảo mật kém, dữ liệu gửi lên bị giới hạn 1024 ký tự.
  • $_POST: Gửi dữ liệu lên server dưới dạng ẩn thông qua HTTP Header vì thế nó có tính bảo mật cao hơn so với GET, dữ liệu gửi lên không bị giới hạn.
  • Tuy nhiên tốc độ thực thi xử lý của Post chậm hơn Get.

14. .htaccess trong PHP là gì?

.htaccess là một tệp cấu hình trên máy chủ Apache. Bạn có thể thay đổi cài đặt cấu hình bằng cách sử dụng lệnh trong tệp cấu hình Apache như .htaccess và httpd.conf.

15. Khi nào sử dụng ‘@’?

Lệnh “@” được sử dụng để tránh các vấn đề trong mã của bạn bằng cách đơn giản yêu cầu PHP giải quyết chúng cho bạn.

Những gì bạn sẽ làm chỉ đơn giản là thêm Lệnh “@” ở đầu một dòng mã có thể gây ra thông báo lỗi. Sau khi được thêm vào, “@” sẽ truyền bất kỳ lỗi nào mà dòng mã gây ra cho PHP.

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

Đây là một câu hỏi khá lạ nhưng rất dễ đánh lừa bạn, hãy lưu ý câu trả lời nhé.

Trong PHP, bạn 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).

17. Liệt kê các loại lỗi trong PHP

Có ba loại lỗi chính trong PHP – notices, warnings và fatal.

Thông báo notices là những lỗi thường gặp nhất – chúng không hại cho đoạn mã hoàn hảo bạn tạo ra.

Cảnh báo warnings là lỗi cấp hai, nhưng chúng cũng không ảnh hưởng đến quy trình chạy mã.

Tuy nhiên, các lỗi nghiêm trọng fatal là một câu chuyện khác – một khi xảy ra lỗi nghiêm trọng, quy trình chạy mã của bạn sẽ bị chấm dứt ngay lập tức.

18. Sự khác biệt giữa ‘==’ và ‘===’ là gì?

== (equal) nên được sử dụng khi bạn muốn kiểm tra xem các giá trị của hai toán hạng riêng biệt có bằng nhau hay không. Mặt khác, === (identical) nên được sử dụng khi bạn muốn có một câu trả lời siêu cụ thể – nó kiểm tra không chỉ các giá trị mà cả các loại toán hạng.

19. Để chuyển mảng thành chuỗi ta dùng hàm gì? Để tách chuỗi thành mảng ta dùng hàm gì?

Hàm implode(separator , array) dùng để chuyển mảng thành một chuỗi.

Hàm explode(separator , string, [limit]) dùng để chuyển một chuỗi thành mảng.

Ngoài ra ta có hàm join( $ky_tu , $array ) giống hàm implode.

20. Trong PHP để gộp mảng ta dùng hàm gì? Để tách mảng ta dùng hàm gì?

Hàm array_merge( $array1 , $array2 , $array3,…) dùng để nối các mảng thành một mảng duy nhất.

Hàm array_slice( array , start , [length] , [preserve] ) dùng để tách mảng thành một mảng nhỏ hơn.

Trên đây là 20 câu hỏi cơ bản thường gặp khi phỏng vấn và ôn tập kiến thức PHP. Ngoài ra còn rất nhiều câu hỏi nâng cao khác. Bạn có thể đọc tiếp phần 2 tại đây.

Quảng cáo
Quảng cáo
5 1 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
0
Để lại bình luận ngay nhé!x