Dưới đây là danh sách các câu hỏi phỏng vấn servlet. Nếu bạn biết bất kỳ câu hỏi phỏng vấn hay về servlet, vui lòng đăng nó trong phần bình luận để chia sẻ cho mọi người nhé.
1. Có bao nhiêu đối tượng của một servlet được tạo ra
Chỉ có một đối tượng được tạo ra tại thời điểm request đầu tiên bởi servlet hoặc web container.
2. Vòng đời của một servlet là gì?
Một vòng đời của servlet có thể được định nghĩa là toàn bộ quá trình từ khi tạo ra đến khi hủy. Sau đây là tổng quan về vòng đời của servlet:
- Servlet được khởi tạo bằng cách gọi phương thức init ().
- Phương thức servlet service() được gọi để xử lý yêu cầu của khách hàng.
- Servlet được hủy bằng cách gọi phương thức destroy().
- Cuối cùng, servlet được thu thập bởi bộ sưu tập rác của JVM.
3. Các phương thức vòng đời của một servlet là gì?
Phương thức | Mô tả |
---|---|
public void init(ServletConfig config) | Nó chỉ được gọi một lần khi có request đầu tiên đến servlet. Nó được sử dụng để khởi tạo servlet. |
public void service(ServletRequest request,ServletResponse) throws ServletException, IOException | Nó được gọi cho mỗi request. Phương thức service() được sử dụng để xử lý request. |
public void destroy() | Nó chỉ được gọi một lần khi servlet bị hủy. |
4. Ai có trách nhiệm tạo đối tượng servlet?
Web container hoặc servlet container.
5. Đối tượng servlet được tạo ra khi nào?
Khi có request đầu tiên.
6. Sự khác nhau giữa phương thức GET và POST là gì?
GET | POST |
---|---|
1) Số lượng dữ liệu được gửi cho mỗi request bị giới hạn, vì nó được gửi qua header. | Số lượng lớn dữ liệu được gửi cho mỗi request, vì nó gửi qua body. |
2) Không an toàn vì người dùng nhìn thấy dữ liệu rõ ràng trên URL. | An toàn vì người dùng không nhìn thấy dữ liệu trên URL. |
7. Sự khác nhau giữa PrintWriter và ServletOutputStream là gì?
PrintWriter là một lớp character-stream, trong khi ServletOutputStream là một lớp byte-stream. Lớp PrintWriter có thể được sử dụng để chỉ ghi các thông tin character-based trong khi lớp ServletOutputStream có thể được sử dụng để ghi các giá trị nguyên thủy cũng như các thông tin character-based.
8. Sự khác nhau giữa GenericServlet và HttpServlet là gì?
GenericServlet là giao thức độc lập trong khi HttpServlet là giao thức HTTP cụ thể. HttpServlet cung cấp các chức năng bổ sung như quản lý state vv.
9. Servlet collaboration là gì?
Khi một servlet giao tiếp với một servlet khác, nó được gọi là servlet collaboration. Có nhiều cách để tạo giao tiếp servlet:
- RequestDispacher interface
- Phương thức sendRedirect() vv.
10. Mục đích của giao diện RequestDispatcher là gì?
Giao diện RequestDispacher cung cấp khả năng gửi yêu cầu tới một tài nguyên khác có thể là html, servlet hoặc jsp.
11. Có thể gọi một jsp từ servlet không?
Có, một trong những cách là sử dụng giao diện RequestDispatcher, ví dụ:
RequestDispatcher rd=request.getRequestDispatcher("/login.jsp"); rd.forward(request, response);
12. Sự khác nhau giữa phương thức forward() và sendRedirect() là gì?
forward() | sendRedirect() |
---|---|
1) forward() gửi yêu cầu tương tự tới một tài nguyên khác. | 1) sendRedirect() luôn luôn gửi yêu cầu mới vì nó sử dụng thanh URL của trình duyệt. |
2) forward() hoạt động ở phía server. | 2) sendRedirect() hoạt động ở phía client. |
3) forward() chỉ hoạt động trong server. | 3) sendRedirect() hoạt động bên trong và bên ngoài server. |
13. Sự khác nhau giữa ServletConfig và ServletContext là gì?
Container tạo ra đối tượng ServletConfig cho mỗi servlet trong khi đối tượng của ServletContext được tạo ra cho mỗi ứng dụng web.
14. Session tranking là gì?
Session chỉ đơn giản có nghĩa là một khoảng thời gian cụ thể.
HTTP là một giao thức “stateless” nghĩa là mỗi lần client truy xuất một trang Web, client sẽ mở một kết nối riêng đến máy chủ Web và máy chủ sẽ tự động không giữ lại bất kỳ thông tin nào về yêu cầu của client trước đó.
15. Cookies là gì?
Cookie là các tập tin văn bản được lưu trữ trên client. Mục đích của cookie là để theo dõi các thông tin khác nhau. Ví dụ trường hợp remember login.
16. Sự khác nhau giữa cookies và session là gì?
Cookies hoạt động ở phía client, còn session hoạt động ở phía server.
17. Filter là gì?
Filter là một đối tượng được gọi ở quá trình tiền xử lý hoặc sau khi xử lý một yêu cầu. Nó là pluggable.
18. Làm thế nào chúng ta có thể thực hiện bất kỳ hành động nào vào thời điểm triển khai dự án?
Bằng sự trợ giúp của giao diện ServletContextListener.
19. Nhược điểm của cookie là gì?
Nó sẽ không hoạt động nếu cookie bị tắt từ trình duyệt hoặc trình duyệt không hỗ trợ cookie.
20. Load-on-startup trong servlet là gì?
Phần tử load-on-startup của servlet trong web.xml được sử dụng để nạp servlet tại thời điểm triển khai dự án hoặc khởi động máy chủ. Vì vậy, nó giúp tiết kiệm thời gian cho các response của request đầu tiên.
21. Chuyện gì xảy ra khi chúng ta truyền giá trị ân cho load-on-startup?
Nó sẽ không ảnh hưởng đến container, bây giờ servlet sẽ được load lúc có yêu cầu đầu tiên.
22. Tập tin war là gì?
Tệp war (web archive) bao gồm các phần tử web. Một dự án servlet hoặc jsp có thể được chuyển đổi thành một tệp tin war. Di chuyển một dự án servlet từ nơi này sang nơi khác sẽ nhanh chóng vì nó được kết hợp thành một tệp duy nhất.
23. Làm thế nào để tạo tập tin war?
Tập tin war có thể được tạo ra bằng cách sử dụng công cụ jar của jdk/bin. Thật đơn giản nếu bạn đang sử dụng Eclipse hoặc Netbeans IDE, bạn có thể export project của bạn dưới dạng tệp tin war.
Để tạo tệp tin war từ console, bạn có thể viết mã sau đây:
jar-cvf abc.war *
Bây giờ tất cả các tệp tin của thư mục hiện tại sẽ được chuyển đổi thành tệp abc.war.
24. Các annotation được sử dụng trong Servlet 3 là gì?
Có 3 annotation chủ yếu dùng cho servlet:
- @WebServlet : for servlet class.
- @WebListener : for listener class.
- @WebFilter : for filter class.
25. Sử dụng thuộc tính welcome-file-list trong web.xml để làm gì?
Nó được sử dụng để chỉ định trang index của dự án web.