CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
Bài viết blog CFSDN này được tác giả sưu tầm và biên soạn khi được hỏi cách trả lời mùa xuân khi phỏng vấn với JAVA. Nếu bạn quan tâm đến bài viết này thì nhớ like nhé.
Mục lục
- Phỏng vấn mùa xuân mười câu hỏi
- 1. Nói về hiểu biết của bạn về IOC?
- 2. Làm cách nào để xác định thứ tự của nhiều AOP?
- 3. Chủ đề springBean có an toàn không?
- 4. Vòng đời của đậu vào mùa xuân?
- 5. Spring framework sử dụng những mẫu thiết kế nào?
- 6. Sự khác biệt giữa @Autowired và @Resource
- 7. Spring hỗ trợ những loại quản lý giao dịch nào?
- 8. Bạn thích loại hình quản lý giao dịch nào hơn?
- 9. Có những loại hành vi lan truyền giao dịch nào trong giao dịch Spring?
- 10. Có những loại thông báo mùa xuân nào?
- Tóm tắt
Phỏng vấn mùa xuân mười câu hỏi
1. Nói về hiểu biết của bạn về IOC?
IOC là cái mà chúng ta thường gọi là đảo ngược quyền kiểm soát và DI là sự tiêm phụ thuộc. Hai điều này là cách giải thích cho cùng một điều từ những quan điểm khác nhau. Khi không sử dụng Spring framework, chúng ta cần sử dụng một đối tượng. Chúng ta thường cần tự tạo các đối tượng mới theo cách thủ công và chúng ta cần tự mình lấy các đối tượng quản lý. Sau khi sử dụng IOC container của spring, đối tượng sẽ được bàn giao cho IOC container của spring để quản lý và việc tạo, khởi tạo, chấm dứt, chèn phụ thuộc, v.v. đều được IOC container hoàn thành cho chúng ta khi cần sử dụng. chỉ có thể gọi trực tiếp.
2. Làm cách nào để xác định thứ tự của nhiều AOP?
Việc sắp xếp được thực hiện thông qua các giao diện Ordered và PriorityOrdered. Giao diện PriorityOrdered có mức độ ưu tiên cao hơn Ordered. Nếu cả hai giao diện PriorityOrdered hoặc Ordered đều được triển khai, chúng sẽ được sắp xếp theo giá trị thứ tự càng nhỏ thì mức độ ưu tiên càng cao.
3. Chủ đề springBean có an toàn không?
Kết luận: Đậu không an toàn cho luồng.
Cho dù các Bean trong Spring container có thread-safe hay không thì bản thân container cũng không cung cấp chính sách thread-safety cho các Bean, vì vậy có thể nói rằng bản thân Spring Bean không có đặc tính thread-safe.
Nếu một Bean không có trạng thái thì Bean đó là thread-safe.
Nếu đậu có trạng thái thì đậu đó không an toàn cho luồng.
Ngoài ra, việc Bean có an toàn cho luồng không liên quan gì đến phạm vi của Bean. Phạm vi của Bean chỉ đại diện cho phạm vi vòng đời của Bean. Đối với bất kỳ vòng đời nào, Bean có phải là một đối tượng hay không. -safe vẫn phụ thuộc vào chính đối tượng đó.
4. Vòng đời của đậu vào mùa xuân?
1. Bean container tìm định nghĩa Spring Bean trong file cấu hình.
2. Vùng chứa Bean sử dụng API Java Reflection để tạo phiên bản Bean.
3. Nếu có liên quan đến một số giá trị thuộc tính, hãy sử dụng phương thức set() để đặt một số giá trị thuộc tính.
4. Nếu Bean triển khai giao diện BeanNameAware, hãy gọi phương thức setBeanName() và truyền vào tên của Bean.
5. Nếu Bean triển khai giao diện BeanClassLoaderAware, hãy gọi phương thức setBeanClassLoader() và truyền vào thể hiện của đối tượng ClassLoader.
6. Nếu Bean triển khai giao diện BeanFactoryAware, hãy gọi phương thức setBeanClassFacotory() và truyền vào thể hiện của đối tượng ClassLoader.
7. Tương tự như trên, nếu các giao diện *Aware khác được triển khai, hãy gọi các phương thức tương ứng.
8. Nếu có một đối tượng BeanPostProcessor liên quan đến Spring container tải Bean này, hãy thực thi phương thức postProcessBeforeInitialization().
9. Nếu Bean triển khai giao diện Khởi tạoBean, hãy thực thi phương thức afeterPropertiesSet().
10. Nếu định nghĩa Bean trong tệp cấu hình chứa thuộc tính init-method, hãy thực thi phương thức đã chỉ định.
11. Nếu có một đối tượng BeanPostProcess liên quan đến Spring container tải Bean này, hãy thực thi phương thức postProcessAfterInitialization().
12. Khi Bean bị hủy, nếu Bean triển khai giao diện Dùng một lần, hãy thực hiện phương thức destroy().
13. Khi hủy Bean, nếu định nghĩa của Bean trong tệp cấu hình chứa thuộc tính phương thức hủy, hãy thực thi phương thức đã chỉ định.
5. Spring framework sử dụng những mẫu thiết kế nào?
1. Mẫu nhà máy: BeanFactory là hiện thân của mẫu nhà máy đơn giản, được sử dụng để tạo các phiên bản của đối tượng;
2. Chế độ Singleton: Bean mặc định ở chế độ Singleton.
3. Chế độ proxy: Chức năng AOP của Spring sử dụng proxy động và công nghệ tạo mã byte CGLIB của JDK;
4. Phương pháp mẫu: Dùng để giải quyết vấn đề sao chép mã. Ví dụ: RestTemplate, JmsTemplate, JpaTemplate. Xem.
5. Observer sample: Xác định mối quan hệ phụ thuộc một-nhiều giữa các khóa đối tượng Khi trạng thái của một đối tượng thay đổi, tất cả các đối tượng phụ thuộc vào nó sẽ được thông báo và cập nhật, chẳng hạn như việc triển khai trình nghe trong Spring - ApplicationListener.
6. Sự khác biệt giữa @Autowired và @Resource
@Autowired có thể được sử dụng cho: hàm tạo, biến thành viên và phương thức Setter.
Sự khác biệt giữa @Autowired và @Resource.
- @Autowired được chèn theo kiểu lắp ráp theo mặc định, theo mặc định, nó yêu cầu đối tượng phụ thuộc phải tồn tại (bạn có thể đặt thuộc tính bắt buộc của nó thành sai).
- @Resource được lắp ráp và tiêm theo tên theo mặc định. Chỉ khi không tìm thấy đậu phù hợp với tên, tiêm sẽ được lắp ráp và tiêm theo loại.
7. Spring hỗ trợ những loại quản lý giao dịch nào?
Spring hỗ trợ hai loại quản lý giao dịch:
Quản lý giao dịch theo chương trình: Điều này có nghĩa là bạn quản lý các giao dịch theo chương trình, điều này mang lại cho bạn sự linh hoạt cao nhưng rất khó duy trì.
Quản lý giao dịch khai báo: Điều này có nghĩa là bạn có thể tách biệt mã doanh nghiệp và quản lý giao dịch và bạn chỉ cần sử dụng chú thích và cấu hình XML để quản lý giao dịch.
8. Bạn thích loại hình quản lý giao dịch nào hơn?
Hầu hết người dùng Spring framework chọn quản lý giao dịch khai báo vì nó có tác động tối thiểu đến mã ứng dụng và do đó phù hợp hơn với ý tưởng về một thùng chứa nhẹ không xâm phạm. Quản lý giao dịch khai báo tốt hơn quản lý giao dịch theo chương trình, mặc dù nó kém linh hoạt hơn quản lý giao dịch theo chương trình (cho phép bạn kiểm soát các giao dịch thông qua mã). Thiếu sót duy nhất là mức độ chi tiết tốt nhất chỉ có thể được áp dụng cho cấp phương thức chứ không thể áp dụng cho cấp khối mã như các giao dịch có lập trình.
9. Có những loại hành vi lan truyền giao dịch nào trong giao dịch Spring?
Tám hằng số biểu thị hành vi truyền bá giao dịch được xác định trong giao diện TransactionDefinition.
Hỗ trợ tình hình giao dịch hiện tại:
PROPAGATION_REQUIRED: Nếu một giao dịch hiện đang tồn tại, hãy tham gia giao dịch đó; nếu hiện tại không có giao dịch nào, hãy tạo một giao dịch mới.
PROPAGATION_SUPPORTS: Nếu giao dịch hiện đang tồn tại, hãy tham gia giao dịch; nếu hiện tại không có giao dịch, hãy tiếp tục chạy theo cách không giao dịch.
PROPAGATION_MANDATORY: Nếu hiện tại có giao dịch, hãy tham gia giao dịch; nếu không có giao dịch, hãy đưa ra một ngoại lệ. (bắt buộc: bắt buộc).
Giao dịch hiện tại không được hỗ trợ:
PROPAGATION_REQUIRES_NEW: Tạo giao dịch mới Nếu giao dịch hiện đang tồn tại, hãy tạm dừng giao dịch hiện tại.
PROPAGATION_NOT_SUPPORTED: Chạy ở chế độ không giao dịch. Nếu giao dịch hiện đang tồn tại, giao dịch hiện tại sẽ bị tạm dừng.
PROPAGATION_NEVER: Chạy ở chế độ không giao dịch, đưa ra ngoại lệ nếu giao dịch hiện đang tồn tại.
Các tình huống khác:
PROPAGATION_NESTED: Nếu giao dịch hiện tồn tại, hãy tạo giao dịch để chạy như giao dịch lồng nhau của giao dịch hiện tại; nếu hiện tại không có giao dịch nào, giá trị này tương đương với PROPAGATION_REQUIRED.
10. Có những loại thông báo mùa xuân nào?
Trong thuật ngữ AOP, công việc của các khía cạnh được gọi là lời khuyên, thực chất là một đoạn mã được kích hoạt thông qua khung công tác Spring AOP khi chương trình được thực thi.
Khía cạnh mùa xuân có thể áp dụng 5 loại lời khuyên:
1. Thông báo trước (Trước): Gọi chức năng thông báo trước khi phương thức đích được gọi;
2. Đăng thông báo (Sau): Thông báo được gọi sau khi phương thức đích được hoàn thành và nó không quan tâm đến đầu ra của phương thức tại thời điểm này;.
3. Return notification (After-returning): Thông báo được gọi sau khi phương thức đích được thực thi thành công;
4. Thông báo ngoại lệ (Sau khi ném): Gọi thông báo sau khi phương thức đích ném ngoại lệ;
5. Thông báo xung quanh (Xung quanh): Thông báo bao bọc phương thức được thông báo và thực hiện hành vi tùy chỉnh trước và sau khi phương thức được thông báo được gọi.
Tóm tắt
Bài viết này kết thúc tại đây, tôi hy vọng nó có thể hữu ích cho bạn và tôi hy vọng bạn có thể chú ý hơn đến nội dung của tôi! .
Liên kết gốc: https://blog.csdn.net/qsy190557020/article/details/119985929.
Cuối cùng, bài viết về cách trả lời mùa xuân khi phỏng vấn JAVA kết thúc tại đây. Nếu bạn muốn biết thêm về cách trả lời mùa xuân khi phỏng vấn JAVA, vui lòng tìm kiếm các bài viết của CFSDN hoặc tiếp tục duyệt các bài viết liên quan, tôi hy vọng bạn sẽ ủng hộ blog của tôi. tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!