0

PHP

1. require() and include()

If the file can't be included:

  • include(): jump to the next step.
  • require(): fatal error.

2. unset() and unlink()

  • unset(): set a variable to undefined.
  • unlink(): delete a file.

3. Type of errors:

  • Notices. Ex: accessing an undefined variable.
  • Warnings. Ex: include() a file does not exist.
  • Fatal. Ex: require() a file does not exist.

4. GET and POST

  • $_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.

- Lấy list ra lần đầu bằng GET => browser sẽ cache lại => nhanh hơn.

- POST luôn chọc vào DB => lâu hơn.

5. Trait, Abstract and Interface

Khi nào dùng A và I? Tuỳ vào nghiệp vụ dự án (ốp thêm repository design pattern) (mai hỏi PTT)

6. Session, Cookie and Local Storage

  • Session: 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.
  • Cookie: 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.
  • Local Storage: https://viblo.asia/p/local-storage-session-storage-va-cookie-ORNZqN3bl0n (lưu dữ liệu trong trình duyệt - 5 MB - không gửi lên server - xoá bằng JavaScript hoặc xoá bộ nhớ của trình duyệt).

Question 1: Giờ mình muốn có bộ đếm thời gian lưu vào localStorage để xử lý vài tác vụ, ví dụ mình cho nó chạy giờ là 1 tiếng trở lại, tới phút thứ 30 mình muốn thực hiện 1 tác vụ nào đó, vấn đề câu hỏi của mình ở đây là nếu người dùng vào browser và xóa localStorage mình đã lưu trước đó thì tác vụ ở phút 30 của mình sẽ bị lỗi, có cách nào khắc phục k ạ, hay mình có thể che dấu localStorage đi k ? Mình nghĩ bạn không nên dùng localStorage để xử lý những event logic, chúng thường dùng để lưu những thứ mà người dùng xóa cũng chẳng ảnh hường gì như lịch sử tìm kiếm, lịch sử mua hàng thôi.

Question 2: 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.

Question 3: session laravel được lưu ở đâu: storage/framework/session Question 4: laravel_session khác gì php_session?

Tóm tắt: https://www.youtube.com/watch?v=XKuCkc-F-nQ&list=PLEKndr7_Yo6lW1E87nu3TIRvlg5gcbKht&index=3

  • Session: vùng nhớ, lưu trên RAM của server, có thể bị mất đi (session-timed-out).
  • Cookies: text, lưu ở client, để biết người dùng là ai.

7. Variable and CONSTANT?

Hằng và biến trong PHP là khái niệm khác nhau:

  • Đầ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.

8. Để 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ì?

Trong PHP cung cấp hàm implode(separator,array) dùng để chuyển mảng thành một chuỗi và hàm explode(separator,string,[limit]) dùng để chuyển một chuỗi thành mảng.

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

Trong PHP cung cấp hàm array_merge($array1, $array2, $array3,…) dùng để nối các mảng thành một mảng duy nhất và hàm array_slice(array,start,[length],[preserve]) dùng để tách mảng thành một mảng nhỏ hơn.

10. Cho biết sự khác nhau giữa serialize và json_encode?

Hai hàm json_encode và serialize trong PHP đều có thể được dùng để chuyển đổi một giá trị kiểu object hoặc array về kiểu string. Tuy nhiên logic chuyển đổi của hai hàm này là không giống nhau. Ngoài ra với cùng một giá trị sử dụng để chuyển đổi thì chuỗi nhận được sau cùng có các định dạng hoàn toàn khác nhau.

Hàm json_encode trả về chuỗi có số lượng ký tự ít hơn so với serialize. Ngoài ra thì chuỗi trả về bởi json_encode được cấu trúc theo kiểu thân thiện với mắt con người hơn là khi dùng serialize.

Lời khuyên ở đây là khi bạn cần chuyển đổi một số lượng lớn các object và việc tiết kiệm dung lượng (của RAM hoặc ổ cứng…) là yếu tố quyết định thì bạn nên sử dụng json_encode.

https://sukhacnhau.com/ngon-ngu-lap-trinh/so-sanh-json_encode-va-serialize-trong-php/

Khi đề cập tới portability ở đây chúng ta muốn xem xét tới khía cạnh việc dữ liệu trả về của hàm json_encode và serialize có thể sử dụng với các ngôn ngữ lập trình khác hay không. Rõ ràng thì json_encode là người thắng cuộc khi so sánh ở điểm này bởi vì dữ liệu trả về của hàm này đi theo format JSON.

JSON là format phổ biến và được hầu hết các ngôn ngữ lập trình hỗ trợ. Do đó nếu bạn cần xử lý kết quả trả về bằng hàm json_encode thì bạn sẽ không gặp nhiều khó khăn. Ví dụ khi sử dụng JavaScript bạn có thể sử dụng hàm JSON.parse() để xử lý chuỗi JSON từ PHP.

Ngược lại serialize trả về kiểu format dữ liệu dành riêng trong PHP. Do đó việc xử lý chuỗi kết quả trả về của hàm này có thể sẽ tốn thêm nhiều bước. Ví dụ trong ngôn ngữ JavaScript không có hàm nào hỗ trợ việc phân tích chuỗi trả về từ hàm serialize.

11. RESTful API là gì?

  • Là một tiêu chuẩn dùng trong việc thiết kế API.
  • 4 phương thức cơ bản: GET, POST, PUT, DELETE.

12. Tối ưu ảnh (Thaohihi)

https://viblo.asia/p/toi-uu-hoa-hinh-anh-cho-trang-web-L4x5xwDalBM

13. Sự khác nhau giữ emty() và isset()

empty() chỉ check biến có giá trị là rỗng hoặc mảng rỗng, còn isset() thì check sự tồn tại của biến, và biến có giá trị null không.

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

15. 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 độ cồng kềnh của code.
  • Giảm dung lượng ảnh, video trên sever.
  • Server 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 server. 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 client 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.

16. Redis và Memcached

https://www.youtube.com/watch?v=noZzKwWVHc0&list=PLEKndr7_Yo6lW1E87nu3TIRvlg5gcbKht&index=6

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

https://careerbuilder.vn/en/talentcommunity/cau-hoi-phong-van-vi-sao-chung-toi-nen-chon-ban.35A50130.html

18. Tại sao anh/chị lại chọn công ty tôi?

  • Em có tìm hiểu qua website công ty và trên Linkedin:
  • Cty làm việc với khách hàng đa quốc gia => hứng thú (http://vmodev.com/job/fullstack-web-developer)
  • Trẻ trung năng động. Tìm hiểu qua clip team building trên linkedin.
  • Qua hai người bạn đã và sẽ join công ty.

19. Namespace?

Giải pháp các class trùng tên nhưng namespace khác nhau.

20. Stateful và Stateless?

  • Stateless là thiết kế không lưu dữ liệu của client trên server. Có nghĩa là sau khi client gửi dữ liệu lên server, server thực thi xong, trả kết quả thì “quan hệ” giữa client và server bị “cắt đứt” – server không lưu bất cứ dữ liệu gì của client.
  • Stateful là một thiết kế ngược lại, chúng ta cần server lưu dữ liệu của client, điều đó đồng nghĩa với việc ràng buộc giữa client và server vẫn được giữ sau mỗi request (yêu cầu) của client. Data được lưu lại phía server có thể làm input parameters cho lần kế tiếp.

21. magic method, static, final trong PHP?

https://viblo.asia/p/php-nhung-dieu-can-biet-MLzGObjnvpq

More:

https://www.topitworks.com/blogs/php-test-va-cau-chuyen-phong-van/ https://www.youtube.com/watch?v=T1CYS6c5eqY


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí