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

ngày 03-02-2021

Với những bạn mới vào nghề lập trình web thì buổi phỏng vấn đầu tiên ắc hẵn sẽ khiến rất nhiều bạn lo lắng, và sự chuẩn bị kiến thức cũng như là những câu hỏi nằm lòng trước khi phỏng vấn sẽ ít nhiều khiến các bạn tự tin hơn trong buổi phỏng vấn, hãy cùng học lập trình web  điểm qua những câu hỏi kiến thức thường gặp trong những buổi phỏng vấn thực tập, fresher php developer nhé.

tham khảo thêm: Các câu hỏi thường thường hay gặp khi phỏng vấn lập trình php phần 2, các câu hỏi phỏng vấn về laravel

Phần 1: Những câu hỏi cơ bản

 

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

2. Cookie và session có gì khác nhau ?

 


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, và 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ũng giống như COOKIE như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 PHP SESSID tương ứng được tạo ra, các PHP SESSID 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.

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

 

Đ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 sẽ bị lỗi "Constant NAME already defined".

4. 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 ví dụ a = 10 = 1010, b = 14 = 1110 nên ta có  a&b = 1010 = 10 . Còn phép toán  && thì chỉ trả về kiểu boolean True và False, 0 và 1.

5. Sự khác nhau giữa == và ===

 

== không so sánh kiểu dữ liệu còn === thì có

6. sự khác nhau giữ emty() và isset()

 

Empty() check biến có giá trị là rỗng hoặc mảng rỗng,null,0. 

Còn isset() thì chỉ check sự tồn tại của biến, và biến có giá trị null không .

Empty bao quát hơn isset

7. Sẽ hỏi những câu hỏi về các hàm có sẵn trong php ví dụ như:

 

Tìm một phần tử tồn tại trong mảng ta dùng hàm gì ? (in_array)

Hàm array_merge() và array_combine() có gì khác nhau ?

Đếm số phần tử trong mảng dùng hàm nào count();

Thêm một hoặc nhiều phần tử vào cuối mảng và trả về số lượng phần tử của mảng ta dùng hàm gì? array_push()

Hàm nào  sẽ chuyển một chuỗi $string thành một mảng các phần tử explode ();

hàm xử lí của php thì rất nhiều, bạn nên tham khảo những hàm của php trên trang chủ của php để tham khảo.

Nếu có câu nào mà bạn 0 ko trả lời dc thì mình khuyên bạn nên trả lời: là những hàm này em cũng ko nhớ, vì nó có rất nhiều, nhưng trong quá trình làm chủ yếu là tư duy logic, đến khi cần hàm nào thì mình lên google search, 

Lời khuyên là đừng cố gắn trả lời những cái mình không biết chắc nhé.

 

Phần 2: Những câu hỏi “Lạ”

 

1. Website và web app có gì giống và khác ?

 

Có thể tạm trả lời như sau: Web app thực chất là web site nhưng được gọi riêng để chỉ những website có những chức năng và ứng dụng riêng biệt

như quản lí bán hàng, quản lí kho...

Còn website là những web có tính tương tác thấp hơn nhiều so với webapp có thể là những trang web tĩnh, không có nhu cầu cập nhật dữ liệu...

9: Biết cắt layout từ photoshop ko, và cắt cho họ xem

 

đây được xem là câu hỏi rất hay gặp ở 1 số công ty, để làm được điều này bạn cần học vững kiến thức về html, css, ngoài ra kĩ năng sử dụng bootstrap tốt sẽ giúp bạn ghi điểm hơn.

10: $$ có nghĩa là gì

 

gắn tên cho biến:

ví dụ $a = "hello";

thì ta có

$$a = $hello

11: Khi tắt cookie trên trình duyệt thì có ảnh hưởng tới session không:

 

không thể sử dụng được cả cookie và session khi tắt cookie, vì bản chất là session khi hoạt động cũng sẽ tạo một cookie trên trình duyệt để lưu dữ liệu, nên khi tắt cookie trên trình duyệt thì session cũng không sử dụng được

12: Tại sao chúng tôi phải lựa chọn bạn vào công ty chúng tôi

 

trả lời: vậy công ty các anh có cái gì để tôi phải vào đây xin ứng tuyển... đùa chứ cấu này mình nghĩ là họ đang hỏi về điểm mạnh của bạn đấy, bạn hãy show hết tất cả những điểm tốt của mình ra, những kinh nghiệm mà bạn đã có trong quá trình học tập, cũng như là làm đồ án, nhưng nhớ là chém bão vừa vừa thôi nhé, chứ không là mấy anh phỏng vấn "bay" mất đó

13: Có người yêu chưa, biết nhậu ko, biết chơi đá (banh) không…

 

Phần 3: Những câu hỏi về hướng đối tượng

 

1. Nêu các tính chất của OOP, và giải thích chúng

 

Xem câu trả lời tại link dưới:

https://daylaptrinhphp.com/20-tinh-chat-cua-huong-doi-tuong-trong-lap-trinh-php.html

 

2. Lớp và đối tượng có gì khác nhau

 

Xem câu trả lời tại link dưới

https://daylaptrinhphp.com/23-phan-biet-lop-va-doi-tuong-trong-php.html
 

3: phân biệt abtrast class và interface, khi nào sử dụng chúng

 

Xem câu trả lời tại link dưới

https://daylaptrinhphp.com/31-so-sanh-abstract-class-va-interface.html

 

4. Tính đóng gói trong php là gì, mục đích của chúng để làm gì

 

Tính đóng gói (encapsulation) là "đóng gói" thuộc tính và phương thức của đối tượng (hoặc lớp) thông qua việc giới hạn quyền truy cập (hoặc thay đổi) giá trị của thuộc tính hoặc quyền gọi phương thức. được thể hiện qua các từ khóa

public: Cho phép truy cập (và thay đổi giá trị) của thuộc tính và phương thức ở mọi phạm vi

private: Chỉ cho phép truy cập (hay thay đổi) giá trị của thuộc tính và phương thức ở phạm vi  của lớp đó

protected: Chỉ cho phép truy cập (hay thay đổi) giá trị của thuộc tính và phương thức ở phạm vi của lớp đó và lớp con của nó (lớp kế thừa của chính nó)

Mục đích thực tế:

 Là để phục vụ cho việc đọc mã của người khác được dễ dàng hơn, vì dụ trong 1 lớp, nhìn thấy các phương thức private thì họ sẽ biết ngay là phương thức này dùng để thực thi, tính toán cho các phương thức khác, không được dùng để gọi ra ngoài, nên ko cần quan tâm tới nó, hơn nữa nó ngăn chặn việc truy cập, sửa đổi các hàm private, protect ở ngoài phạm vi lớp theo chủ đích của người lập trình

nói tóm lại là các tính chất của hướng đói tượng nói  chung, và đóng gói nói triêng giúp phục vụ cho việc viết mã được dễ dàng hơn

5. Tính Chất kế thừa là gì, em hiểu thế nào về tính chất kế thừa

 

Để trả lời câu hỏi này thì bạn cần phải hiểu về tính chất kế thừa, bài viết sau đây sẽ là tham khảo cho ban TÍNH CHẤT KẾ THỪA CỦA PHP

 

Phần 4: NHỮNG CÂU HỎI NÂNG CAO

 

1. Để làm ra được một website theo bạn cần có những bước gì ?

 

https://daylaptrinhphp.com/26-quy-trinh-thiet-ke-website-chuyen-nghiep.html


2. Những lỗi bảo mật thường gặp trên website

 

Câu trả lời sẽ được cập nhật vào hôm sau

 

3: khi website bị chậm bạn phải làm gì

 

Tìm Nguyên nhân lỗi do đâu và tùy vào lỗi sẽ có hướng giải quyết khác nhau,

Thường có thể sẽ là do các nguyên nhân chính sau

  • Code không tối ưu, câu truy vấn sql chưa tối ưu => giải pháp, phải kiểm tra xem code chỗ nào chưa tối ưu, tiến hành sữa lỗi và fix lại bug, giảm độ kồng kền của code, giảm dung lượng ảnh, video trên sever
  • Hosting cấu hình thấp, không được tối ưu, quá tải do nhiều người dùng=> nâng cấp cấu hình host. Nhưng khi lượng request lên đến 1-2 triệu thì không thể nâng cấp server được nữa, mà phải thiết kế sao cho nhiều server chạy cùng lúc. Giả sử ta có 10 sever để phục vụ cho người dùng vậy làm sao để có thể điểu khiển nó, để thực hiện điều ấy ta  cần dùng Cân  bằng tải với Load Balancer, Người dùng sẽ không trực tiếp truy cập tới server, mà chỉ truy cập  tới load balancer. LB sẽ điều tiết, cân bằng lượng tải trên 10 server này.

  •  Khoảng cách sever và máy test xa => đăng kí dịch vụ cdn 

  •  Không sử dụng cache cũng khiến website nặng nề

  • Website bị tấn công  DDOS

 

4: Có biết sử dụng framework nào không, họ sẽ hỏi 1 số thứ liên quan tới framework đó

 

xem các câu hỏi phỏng vấn laravel

5: Phân biệt require và include

 

Với hai câu lệnh này về chức năng hoàn toàn tương đồng nhau. Nhưng nó chỉ khác khi thông báo lỗi.
- require sẽ sinh ra lỗi và dừng chạy chương trình
- include sẽ sinh ra cảnh báo và vẫn chạy chương trình


Trong thực tế người ta vẫn hay sử dụng require hơn để đảm bảo tính thông suốt của hệ thống. Khi có lỗi liên quan đến gọi file thì sẽ dừng chương trình và mình cần phải xử lý ngay.

6: Làm thế nào để website có thể phục vụ hàng triệu người dùng

 

Thường thì sẽ nâng cấp sever, băng thông, ram, bộ nhớ... khi lượt truy cập tăng lên nhưng khi lượng request lên đến 1-2 triệu thì không thể nâng cấp server được nữa, mà phải thiết kế sao cho nhiều server chạy cùng lúc.

Giả sử ta có 10 sever để phục vụ cho người dùng vậy làm sao để có thể điểu khiển nó, đẻ thực hiện điều ấy ta cần dùng Cân bằng tải với Load Balancer, Người dùng sẽ không trực tiếp truy cập tới server, mà chỉ truy cập tới load balancer. LB sẽ điều tiết, cân bằng lượng tải trên 10 server này.

Phân tán dữ liệu với Content Delivery Network (CDN): CDN là một mạng lưới các server được phân bố trên nhiều khu vực.Ví dụ bạn có 1 sever để bên mỹ, mỗi lần bạn truy cập qua bên sver đó sẽ rất lâu vì khoản cách xa, nhưng khi sử dụng CDN bạn sẽ kết nối vs sever gần nhất ở VN, tốc độ sẽ nhanh hơn nhiều

Caching: Cache là một kĩ thuật để tăng tốc độ đọc dữ liệu, bằng cách lưu dữ liệu sẵn vào cache server để tăng tốc độ đọc ở những lần sau.

 

Phần 2. Những câu hỏi phỏng vấn LARAVEL thường gặp  (click link để xem)

 

Vì thời gian có hạn nên mình chỉ cập nhật một số câu hỏi quan trọng, nếu có đóng góp ý kiến xin vui lòng liên hệ với chúng tôi tại https://www.facebook.com/daylaptrinhwebthaytich, rất mong nhận được đóng góp của người đọc, còn rất nhiều câu hỏi sẽ được cập nhập vào thời gian tới, về reful api, security, json, xthml... mong các bạn chú ý theo giõi nhé