Dưới đây là tổng hợp những câu hỏi phỏng vấn Web developer cho đối tượng Fresher.
Web application là một ứng dụng phần mềm lưu trữ trên remote server, được client truy cập thông qua mạng network và hiển thị giao diện trên các browser. Những thông tin được hiển thị trên giao diện của trình duyệt được sử dụng bởi HTML/CSS/Javascript.
Web service là một hệ thống phần mềm được thiết kế để hỗ trợ việc tương tác giữa các application thông qua network.
Giả sử bạn có một dịch vụ nhắn tin SMS (SmsService) và bạn muốn cung cấp cho các đơn vị X, đơn vị Y cùng sử dụng. Lúc này bạn cung cấp một cơ chế giúp SmsService của bạn và ApplicationX, ApplicationY có thể giao tiếp được với nhau, và SmsService của bạn được gọi là Web servivce
| Web Service | Web Application |
|---|---|
| Cả 2 đều là ứng dụng phần mềm build dựa trên nền tảng web, hoạt động theo mô hình Client-Server với mục đích cung cấp dịch vụ cho Client | |
| Không cần giao diện | Phải có giao diện |
| Client là các web/mobile application hoặc web service khác | Client là người dùng, sử dụng và thao tác dựa vào giao diện hiển thị trên browser. |
Response là data thể hiện dưới dạng JSON hoặc XML |
Response là data là giao diện thể hiện thông qua HTML/CSS |
Điều này có nghĩa là tất cả các HTTP Request được gửi lên là độc lập không liên quan đến các HTTP Request trước đó vì server không lưu trữ thông tin state của Client.
Khi một số web applications cần tracking thông tin user có thể dùng 1 số cách sau:
MVC (Model-View-Controller) là một mô hình thiết kế phần mềm thường được sử dụng để triển khai ứng dụng với mục đích tách biệt user interface và business logic.
Model: Define data ứng dụng sẽ lưu trữ.View: Xử lý layout và hiển thị giao diện + model data.Controller: Tiếp nhận request và thực hiện logic update model/view để response về cho user
SPA (Single Page Application) là web application được triển khai bằng cách chỉ tải 1 web page duy nhất lúc đầu. Sau đó nội dung của page sẽ được cập nhật bằng cách sử dụng Javascript gọi đến Server API lấy data và re-render.
Điều này giúp người dùng có thể liên tục sử dụng mà không cần tải lại toàn bộ page như cách truyển thống, giúp gia tăng hiệu suất và trải nghiệm người dùng cũng như giảm tải cho server. Tuy nhiên nhược điếm phải đánh đổi là SEO sẽ khó hơn.
REST (Representational State Transfer) là một software architectural style nó định nghĩa một tập hợp các constraint và properties được sử dụng cho mục đích tạo web service.
Trong khi đó, RESTful là một thuật ngữ nói về những web service được xây dựng tuân thủ REST architectural style.
CORS (Cross-Origin Resource Sharing) là cơ chế cho phép một web page trên brower có thể request đến một server có nguồn gốc(origins) khác với web page đó. Origins ở đây bao gồm: domain, scheme, port.
Mặc định, browser sẽ hạn chế cross-origin requests. Có nghĩa là web page có domain là domain-a.com không thế gọi đến domain-b.com, hoặc cùng domain và khác port cũng không thể được. Lý do cho sự hạn chế này là để ngăn chặn việc request lấy trộm thông tin từ web khác.
Nếu bạn muốn cho phép web khác có thể request đến web của mình thì có thể add thêm Access-Control-Allow-Origin vào response header, với giá trị * thì cho phép request đến từ bất kỳ đâu hoặc chỉ định cụ thể danh sách các giá trị origins có thể request.
Với cơ chế CORS, khi một web page request đến một server có orgins khác thì browser sẽ gửi 1 HTTP Request đến server đó để check server đang allow hay disallow request từ web page này. Nó còn được gọi là preflight request. Nếu server response là allow với preflight request thì browser sẽ gửi actual request đến server.
Có nhiều bạn FE developer khi call API sử dụng postman thì không bị lỗi CORS nhưng khi call API từ client side thì lại bị lỗi. Điều này đã giải thích ở bên trên, nguyên nhân là khi web page được run trên browser thì mặc định sẽ bị hạn chế khi phát sinh cross-origin requests. Khi gặp lỗi này thì hãy contact đến BE developer để các bạn đó config allow CORS vào response header.
| Components | Description |
|---|---|
| Request URL (Endpoint) | Định danh unique address trên internet |
| HTTP Method | GET, POST, PUT, DELETE... |
| Request Header | Bao gồm các thông tin metadata mô tả chi tiết cho request. Ví dụ như: content type, message format, cache settings, etc. |
| Request Body (Payload) | Các thông tin cần gửi từ client lên server |
| Components | Description |
|---|---|
| Response Status Code |
|
| Response Header | Bao gồm các thông tin metadata mô tả chi tiết cho response. Ví dụ như: content length, content type, response date... |
| Response Body | Các thông tin cần gửi từ server xuống client |
| Cookie | Session |
|---|---|
| Cookie value được lưu trong client browser | Session value được lưu trên server |
| Tối đa lưu trữ được 4096 bytes | Dung lượng tối đa có thể lưu trữ phụ thuộc vào server tuy nhiên lớn hơn cookie nhiều lần |
| Chỉ store text data | Có thể store text và object data |
| Truy cập cookie data không phụ thuộc vào session | Truy cập session data sẽ phụ thuộc vào cookie data của user gửi lên |
| Cookie sẽ mất khi user delete hoặc đến expired time | Session sẽ mất khi close browser ("Behind the scenes" là cookie type session được link với session đó sẽ mất ở client khi close browser, dẫn đến ko còn liên kết đến session đã lưu trên server) |