Top 70 câu hỏi và câu trả lời về Spring Boot khi phỏng vấn?
Bộ câu hỏi phỏng vấn Java chuẩn nhất 2020 với những câu trả lời chuyên nghiệp, chính xác làm hành trang giúp bạn nhẹ nhàng đi qua buổi phỏng vấn. Tham khảo ngay những câu hỏi phỏng vấn Java thường gặp nhất trong bài viết dưới đây.
Top 70 câu hỏi và câu trả lời về Spring Boot thường gặp nhất khi phỏng vấn
1. Giải thích về thuật ngữ “Spring Boot”.
Nó là 1 module Spring cung cấp Rapid Application Development cho Spring Framework. Spring module được sử dụng để tạo ứng dụng dựa trên Spring Framework cái mà yêu cầu cấu hình 1 vài file Spring.
2. Ưu điểm của Spring Boot.
Dưới đây là 1 số ưu điểm của Spring Boot:
- Giúp bạn tạo ứng dụng độc lập, có thể bắt đầu bằng java.jar.
- Nó cung cấp cấu hình POM được xác định chính xác cho Maven.
- Cho phép bạn nhúng trực tiếp Undertow, Tomcat hoặc Jetty.
- Giúp bạn tự động cấu hình bất cứ khi nào có thể.
3. Làm thế nào để tạo 1 ứng dụng Spring Boot bằng Spring Initializer?
Nó là một công cụ web được cung cấp bởi Spring trên trang web chính thức của nó. Tuy nhiên, bạn cũng có thể tạo dự án Spring Boot bằng cách nhập chi tiết dự án.
4. Các tính năng.
- Starter dependency
- Auto-configuration
- Spring initializer
5. Giải thích sự khác nhau các giai đoạn của RAD model.
Đây là một câu hỏi phỏng vấn xin việc thường gặp. Các giai đoạn khác nhau của chế độ RAD là:
- Business Modeling: dựa trên luồng thông tin và sự phân phối các kênh kinh doanh khác nhau, sản phẩm được thiết kế.
- Data Modeling: thông tin thu thập từ Business Modeling được tinh chỉnh thành 1 tập hợp các đối tượng dữ liệu có ý nghĩa đối với doanh nghiệp.
- Application Generation: Các công cụ tự động được sử dụng để xây dựng phần mềm, để chuyển đổi mô hình quy trình và dữ liệu thành prototypes.
6. RAD model là gì?
RAD hoặc Rapid Application Development process là việc áp dụng model warterfall (mô hình thác nước); nó nhằm mục tiêu phát triển phần mềm trong 1 thời gian ngắn.
SDLC RAD model gồm các giai đoạn sau:
- Business Modeling
- Data Modeling
- Process Modeling
- Application Generation
- Testing and Turnover
7. Các câu lệnh để chạy và dừng file JAR trong Spring Boot?
Bạn cần mở cmd hoặc shell window và sử dụng câu lệnh sau:
java -jar
Ví dụ:
$ java -jar myproject-0.0.1-SNAPSHOT.jar
Để dừng sử dụng tổ hợp phím Ctrl + C.
8. Để thay đổi phiên bản JDK trong Spring Boot, bạn có thể ghi đè nó bằng cách thêm mới version của java.
1.8
Code language: CSS (css)
9. Quá trình bạn cần làm theo để chạy ứng dụng Spring Boot trên cổng tùy chỉnh là gì?
Để chạy ứng dụng, bạn cần đặt thuộc tính server.port trong application.properties.
Ví dụ: server.port = 8050.
10. Spring Boot starter là gì? Nó có hữu ích như thế nào?
Spring Boot có nhiều starters. Chúng là tập hợp tất cả các convenient dependency descriptors. Starter cho phép bạn include nhiều descriptors trong file pom.xml (Maven) hoặc build.gradle (Gradle).
Ví dụ: Nếu bạn muốn làm việc với Spring MVC, bạn có thể include “spring–boot–starter–web” giống như dependency trong pom.xml.
11. Bạn có thể sử dụng ứng dụng Spring Boot cái mà không sử dụng Sping?
Không, không thể thực hiện được vì Spring Boot chỉ giới hạn ở ứng dụng Spring.
12. Tên file configuration cái mà bạn có thể sử dụng trong Spring Boot?
File configuration được sử dụng trong dự án Spring Boot được gọi là application.properties. Nó là 1 file quan trọng cái mà cho phép bạn ghi đè các cấu hình mặc định của bạn.
13. DevTools trong Spring Boot là gì?
Spring Boot DevTools giúp bạn tăng năng xuất của developer. Vì vậy, bạn không cần phải redeploy (triển khai lại) ứng dụng của mình mỗi khi thực hiện thay đổi. Nó cho phép developer reload lại các thay đổi mà không cần khởi động lại server.
14. Các thành phần thiết yếu của Spring Boot.
- Spring Boot Starter
- Spring Boot autoconfiguration
- Spring Boot Actuator
- Spring Boot CLI
15. Các properties được định nghĩa như thế nào? Ở đâu?
Bạn có thể định nghĩa properties trong application.properties trong classpath.
Ví dụ: configure default DataSource bean
database.host=localhost
16. spring-boot-starter-parent là gì?
Nó là 1 starter đặc biệt cái mà làm cho Gradle và Maven dependency-management đơn giản bằng thêm các jars vào classpath.
17. Cách enable HTTP/2 supports trong Spring Boot?
server.http2.enabled configuration property.
Code language: CSS (css)
18. Spring Boot Actuator là gì?
Spring Boot Actuator cho phép bạn theo dõi và quản lý ứng dụng của mình khi bạn muốn đưa nó vào sản xuất. Nó giúp bạn kiểm soát ứng dụng của mình bằng cách sử dụng các điểm cuối HTTP.
Bạn có thể tham khảo bài viết của mình tại link này
19. Lệnh chạy ứng dụng Spring Boot đến cổng tùy chỉnh là gì?
Trong application.properties, hãy thêm thuộc tính sau.
server.port = 8181
20. Làm thế nào bạn có thể truy cập một giá trị được xác định trong ứng dụng? File properties trong Spring Boot là gì?
Sử dụng annotation @Value để truy cập các properties được xác định trong file application – properties.
@Value("${custom.value}")
private String customVal;
Code language: CSS (css)
21. Sự khác biệt chính giữa Spring và Spring Boot là gì?
Spring Framework.
Spring là Framework mã nguồn mở được phát triển dựa trên nền tảng là Java, giúp đơn giản hóa việc xây dựng và phát triển các ứng dụng java doanh nghiệp. Nó cung cấp mô hình lập trình và cấu hình toàn diện cho các ứng dụng doanh nghiệp dựa trên Java hiện đại – trên bất kỳ loại nền tảng triển khai nào. Các tính năng của Spring được chia làm rất nhiều module riêng rẽ, ứng dụng của bạn có thể chọn sử dụng bất kì module nào khi cần thiết và Spring Boot,
Spring MVC cũng là các module nằm trong thùng chứa Spring Framework. Tính năng chính và nổi bật của Spring Framework đó là Dependency Injection và Inversion of Control (IoC) giúp bạn phát triển các ứng dụng với khả năng loosely coupled.
Spring Boot.
Như đã biết thì, Spring Boot là một module nằm trong Spring Framework, nó cung cấp giao diện và khả năng phát triển các ứng dụng độc lập với rất ít các bước cấu hình rườm rà hoặc gần như bằng không. Nó được đóng gói với rất nhiều thư viện phụ thuộc các module nền tảng của Spring Framework nhưng được giảm thiểu đi các mã nguồn dài dòng, phức tạp nhằm cung cấp sự thuận tiện và phù hợp với từng mục đích khi phát triển ứng dụng.
Spring | Spring Boot |
Spring Framework là một khung Java EE được sử dụng rộng rãi để xây dựng các ứng dụng. | Spring Boot Framework được sử dụng rộng rãi để phát triển các REST APIs. |
Nó nhằm mục đích đơn giản hóa việc phát triển Java EE giúp các nhà phát triển làm việc hiệu quả hơn. | Nó nhằm mục đích rút ngắn độ dài mã và cung cấp cách dễ dàng nhất để phát triển Web Application. |
Tính năng chính của Spring Framework là dependency injection. | Tính năng chính của Spring Boot là Autoconfiguration. Nó tự động cấu hình các lớp dựa trên yêu cầu. |
Nó giúp làm cho mọi thứ đơn giản hơn bằng cách cho phép chúng ta phát triển loosely coupled applications. | Nó giúp tạo một ứng dụng độc lập với ít cấu hình hơn. |
Lập trình viên cần viết rất nhiều mã (mã viết sẵn) để thực hiện nhiệm vụ tối thiểu. | Nó làm giảm đi mã viết sẵn. |
Để kiểm tra dự án Spring, chúng ta cần thiết lập sever một cách rõ ràng. | Spring Boot cung cấp máy chủ nhúng như Jetty và Tomcat, v.v. |
Các nhà phát triển xác định thủ công các dependencies cho dự án Spring trong pom.xml. | Spring Boot đi kèm với khái niệm khởi động trong tệp pom.xml, bên trong xử lý việc tải xuống các JAR phụ thuộc dựa trên Spring Boot Requirement. |
22. Giải thích Spring Boot Admin.
Spring Boot Admin là một dự án cộng đồng giúp bạn quản lý và giám sát các ứng dụng Spring Boot của mình.
23. Làm cách nào bạn có thể kết nối Spring Boot với database bằng JPA?
Spring Boot hỗ trợ khởi động spring-boot-data-JPA, giúp bạn kết nối ứng dụng Spring với cơ sở dữ liệu quan hệ.
Có thể tham khảo từ link: https://hocspringboot.net/2021/04/15/spring-boot-database-handling/
24. Giải thích annotation @RestController trong Spring Boot.
Annotation @RestController giúp bạn thêm annotation @ResponseBody and @Controller vào class.
Bạn cũng có thể import package org.springframework.web.bind.annotation trong file của mình.
25. Xác định thuật ngữ Spring Initializer.
Spring Initializer là một ứng dụng web có thể tạo cấu trúc dự án ban đầu cho bạn.
26. Giải thích Spring CLI.
Spring CLI được sử dụng để viết trong ứng dụng Groovy Spring Boot, giúp bạn viết mã ngắn gọn.
27. Bạn có thể xác định các properties trong ứng dụng Spring Boot ở đâu?
Bạn có thể xác định các properties của Spring Boot thành một tệp có tên application.properties. Nó giúp bạn tạo file này theo cách thủ công hoặc bạn có thể sử dụng Spring Initializer để tạo file này.
28. Embedded containers support by Spring là gì?
Spring Boot hỗ trợ ba vùng chứa nhúng chính:
- Tomcat.
- Jetty.
- Undertow.
Theo mặc định, nó sử dụng Tomcat làm vùng chứa nhúng.
29. Giải thích thymeleaf trong Spring Boot.
Thymeleaf là 1 Java template phía server-site cho 1 web application. Nó giúp bạn đưa các bring elegant natural templates cho 1 web application.
Bạn có thể tham khảo từ nguồn: https://hocspringboot.net/2021/04/17/spring-boot-thymeleaf/
30. Spring Boot properties là gì?
Spring Boot cung cấp các properties khác nhau có thể được chỉ định bên trong file application.properties của project. Nó giúp bạn đặt các giá trị như server-port number, database connection configuration, v.v.
31. Sự khác biệt chính giữa JPA và Hibernate là gì?
Sự khác biệt chính giữa cả hai là JPA là một specification/Interface, trong khi Hibernate chỉ là các triển khai JPA.
32. Shutdown trong actuator là gì?
Shutdown là một điểm cuối giúp ứng dụng được tắt đúng cách. Tính năng này không được bật theo mặc định.
Tuy nhiên, bạn có thể sử dụng nó bằng cách đặt lệnh: management.endpoint.shutdown.enabled = true trong file application.properties của bạn.
33. Có thể thay thế hoặc ghi đè máy chủ Embedded Tomcat trong Spring Boot không?
Có, có thể thay thế Embedded Tomcat bằng bất kỳ máy chủ nào khác bằng cách sử dụng các starter dependencies. Để làm được điều đó, bạn có thể sử dụng spring-boot-starter-jetty hoặc như một dependency tùy theo nhu cầu của bạn.
34. Bạn có thể tắt web server mặc định trong ứng dụng Spring Boot không?
Có, chúng tôi có thể tắt web server mặc định bằng cách sử dụng application.properties để cấu hình loại ứng dụng web.
35. Làm cách nào để bạn Add, Filter vào một ứng dụng? Có ba phương pháp để thêm bộ lọc vào ứng dụng Spring Boot:
- Triển khai Filter interface.
- Sử dụng FilterRegistrationBean.
- Sử dụng MVC controller.
36. Spring Boot Starter Projects là gì?
Starters trong Spring Boot là một tập hợp các bộ mô tả tiện lợi được bao gồm trong các ứng dụng Spring Boot. Nó đi kèm với nhiều công nghệ liên quan đến Spring điều này làm cho toàn bộ quá trình phát triển ứng dụng dễ dàng hơn nhiều.
37. @pathVariable là gì?
Annotation @PathVariable giúp bạn trích xuất thông tin trực tiếp từ URL.
38. Swagger2 là gì?
Swagger được sử dụng để mô tả cấu trúc của các API. Swagger 2 là một dịch vụ mã nguồn mở được cung cấp trong Spring Boot, giúp máy tìm ra cấu trúc của các API như dịch vụ Web RESTful dễ dàng hơn.
Có thể tham khảo từ nguồn: NGUỒN.
39. Các environments(môi trường) khác nhau để phát triển ứng dụng doanh nghiệp là gì?
- Dev
- QA
- Stage
- Production
40. Sự khác biệt chính giữa RequestMapping và GetMapping là gì?
RequestMapping có thể được sử dụng với GET, POST, PUT và nhiều phương thức yêu cầu khác bằng cách sử dụng thuộc tính phương thức tại annotation. Trong khi GetMapping chỉ là một phần mở rộng của RequestMapping, giúp bạn cải thiện độ rõ ràng của các yêu cầu.
41. Làm thế nào để tạo một dự án Spring Boot bằng Maven?
Sử dụng bất kỳ phương pháp nào sau đây để tạo một dự án.
- Spring Initializer.
- Spring Boot CLI.
- Spring Starter Project Wizard.
42. Làm cách nào để thay đổi cổng HTTP tomcat?
Để thay đổi cổng HTTP tomcat, bạn phải thay đổi thuộc tính HTTP mặc định trong file application.properties.
43. LiveReload trong Spring Boot là gì?
LiveReload là 1 module spring-boot-devtools bao gồm máy chủ LiveReload để kích hoạt làm mới trình duyệt khi tài nguyên bị thay đổi. Tiện ích mở rộng máy chủ LiveReload là phần mềm miễn phí có sẵn cho Firefox, Chrome và Safari
44. Những lợi ích chính của spring Externalized Configuration?
Cấu hình bên ngoài giúp làm việc với cùng một mã trong các môi trường khác nhau. Developers có thể sử dụng file YAML, file properties file, ommand-line arguments, và environment variables để cấu hình bên ngoài.
45. Bạn nghĩ sao về việc hot-swapping trong Spring Boot?
Đó là một cách để tải lại các thay đổi mà không cần khởi động lại máy chủ Tomcat hoặc Jetty. Eclipse và nhiều IDE khác hỗ trợ bytecode hot swapping. Nếu bạn thực hiện bất kỳ thay đổi nào không ảnh hưởng đến chữ ký của phương thức, nó sẽ tải lại mà không có tác dụng phụ.
46. Giải thích về Auto-Configuration trong Spring Boot.
Auto-configuration được sử dụng để cấu hình Spring application automatically dựa trên dependencies tham số của classpath. Nó làm cho sự phát triển nhanh hơn và dễ dàng hơn.
47. Ý nghĩa của Aspect-Oriented Programming (AOP) là gì?
Aspect-Oriented Programming (AOP) bổ sung Object-Oriented Programming (OOP) nhằm mục đích tăng tính modularity. AOP chia logic chương trình thành nhiều phần khác nhau, được gọi là concerns(mối quan tâm).
48. Làm cáh nào để kích hoạt logging trong Spring Boot?
Để bật enable debug logging, bạn có thể specify –debug trong khi khởi động ứng dụng từ dấu nhắc lệnh.
49. Giải thích việc ghi đè các properties mặc định trong ứng dụng Spring Boot.
Spring Boot có rất nhiều thuộc tính có thể dễ dàng bị ghi đè bằng cách chỉ định chúng trong application.properties.
50. Docker trong Spring Boot.
Nó là một công cụ được thiết kế để tạo, triển khai và chạy một dự án bằng cách sử dụng containers.
Bạn có thể tham khảo từ link: https://hocspringboot.net/2021/01/01/docker-la-gi-va-duoc-su-dung-de-lam-gi/.
51. Định nghĩa ELK stack(ngăn xếp).
- Elasticsearch: Đây là một cơ sở dữ liệu NoSQL dựa trên công cụ tìm kiếm mã nguồn mở có tên là Lucene.
- Logstash: Nó là một công cụ đường ống xử lý dữ liệu chấp nhận đầu vào từ các nguồn, thực hiện các phép biến đổi khác nhau và xuất dữ liệu sang các mục tiêu.
- Kibana: Kibana giúp người dùng trực quan hóa dữ liệu bằng đồ thị và biểu đồ trong Elasticsearch.
52. Handle exception trong Spring Boot như thế nào?
Spring Boot cung cấp một cách rất hữu ích để xử lý các ngoại lệ bằng cách sử dụng annotation @ControllerAdvice.
Bạn có thể tham khảo từ link mình đã viết tại đây
53. Giải thích về caching.
Caching là bộ nhớ lưu trữ tạm thời dữ liệu được truy cập thường xuyên mà nếu lấy hoặc tính toán thì rất tốn kém.
54. Cross-Site Request Forgery attack là gì?
Cross-Site Request Forgery attack hoặc one-click attack là một cuộc tấn công buộc người dùng khác thực hiện các lệnh độc hại trên ứng dụng. CSRF attack nhắm mục tiêu state-changing requests.
Bạn có thể tham khảo tại link này.
55. Định nghĩa apache freemarker.
Freemarker là một template Java-based được sử dụng để tạo plain text, emails, HTML file, etc.
56. Spring batch có nghĩa là gì?
Spring Boot Batch cung cấp khả năng tái sử dụng mã rất quan trọng khi làm việc với số lượng lớn bản ghi, bao gồm quản lý giao dịch, logging, skipping, thống kê xử lý công việc và khởi động lại công việc.
57. Apache Kafka.
Apache Kafka là một open-source messaging platform. LinkedIn phát triển nó. Apache Kafka cho phép người dùng xây dựng các ứng dụng phân tán và xử lý các nguồn cấp dữ liệu thời gian thực. Kafka thích hợp cho cả nhắn tin ngoại tuyến và trực tuyến.
58. CORS trong Spring Boot.
CORS là viết tắt của Cross-Origin Resource Sharing là một cơ chế được thực hiện bởi các trình duyệt và giúp người dùng cho phép các yêu cầu giữa các miền. Cơ chế này đóng vai trò là một giải pháp thay thế cho các loại hack kém an toàn và kém mạnh mẽ hơn của các loại IFrame hoặc JSONP.
59. Giải thích các kiểu dependency injection.
Có 2 kiểu dependency injection trong Spring Boot:
- Constructor based dependency injection: nó là một kỹ thuật trong đó một đối tượng lớp cung cấp sự dependency của một đối tượng khác.
- Setter-based dependency injection: nó là 1 dependency injection cái mà framework tiêm các giá trị nguyên thủy và chuỗi bằng cách sử dụng phương thức setter.
60. Ưu điểm của micro service?
- Nó làm cho sự phát triển nhanh chóng và dễ dàng.
- Tương thích với tất cả các container.
- Giảm thời gian sản xuất.
- Đây là một mô hình nhẹ hỗ trợ một ứng dụng kinh doanh lớn.
61. Default package in Spring Boot là gì?
Một clas không có bất kỳ khai báo package nào được coi là một default package.
62. Giải thích sự khác biệt giữa embedded container nhúng và WAR?
Sự khác biệt chính giữa hai điều này là:
Embedded containers giúp bạn chạy ứng dụng Spring Boot dưới dạng JAR từ dấu nhắc lệnh mà không cần thiết lập bất kỳ máy chủ web nào, trong khi để chạy WAR, trước tiên bạn cần thiết lập Tomcat.
63. Giải thích về Spring MVC.
Nó là một web application framework truyền thống giúp bạn xây dựng một ứng dụng web. Framework này tương tự như framework Struts.
64. Việc sử dụng thẻ <set> là gì?
Thẻ này được sử dụng để ghi vào tập hợp java bằng cách sử dụng XML.
65. Bạn hiểu gì về ý nghĩa của aspect(khía cạnh)?
Nó là một tập hợp các API cung cấp các yêu cầu xuyên suốt.
66. Join point trong Spring Boot là gì?
Nó là một điểm thực thi chương trình giống như việc xử lý một ngoại lệ hoặc thực thi một phương thức. Trong AOP, một điểm nối được gọi là một phương thức thực thi.
67. Làm cách nào bạn có thể đặt cấu hình hoạt động trong Spring Boot?
Làm theo các phương pháp sau để đặt cấu hình hoạt động trong Spring Boot.
- Chuyển hồ sơ này làm đối số khi bạn khởi chạy ứng dụng Spring Boot.
- Đặt kích hoạt cấu hình hoạt động trong file application.properties.
68. Có thể loại trừ gói mà không sử dụng bộ lọc basePackages không? Làm như nào?
Đúng. Có thể loại trừ gói mà không cần sử dụng bộ lọc basePackages bằng cách chỉ cần sử dụng thuộc tính loại trừ trong khi sử dụng annotation @SpringBootApplication.
69. Liệt kê những lợi ích của việc sử dụng phương thức JavaConfig.
Sau đây là những lợi ích của phương thức JavaConfig.
- Người dùng có thể tận dụng lợi ích của cấu hình hướng đối tượng.
- Cấu hình Spring Boot cải thiện hiệu quả của ứng dụng dựa trên web bằng cách loại bỏ cấu hình XML phức tạp.
70. Giải thích các bước để triển khai một ứng dụng trên máy ảo.
Dưới đây là các bước để triển khai ứng dụng trên máy ảo.
- Install Java.
- Install the Application Server.
- Deploy the application war file.
71. Liệt kê 1 số Spring Boot Starters.
Spring Boot Starters khác nhau bao gồm:
- Security
- Parent
- web
- Thymeleaf
- Freemarker
Trên đây là hơn 70 câu hỏi về Spring Boot và câu trả lời mình đã tổng hợp lại, chúc bạn phỏng vấn thành công 😅😅!
Tham khảo khóa học lập trình tại: https://codegym.vn/
Link tài liệu: https://codegym.vn/tai-nguyen-hoc-lap-trinh/
Link thực hành: https://codegym.vn/blog/2020/06/29/bai-thuc-hanh-lap-trinh/
Bài giảng: https://codegym.vn/category/blog/bai-giang-lap-trinh/
Leave a Reply