5 câu hỏi phỏng vấn quan trọng về Java Multithreading
14/03/2022 09:27
Các câu hỏi về Multithreading là một phần thiết yếu của các cuộc phỏng vấn Java. Nếu bạn dự phỏng vấn với một ngân hàng đầu tư lớn cho vị trí nhà phát triển Java hoặc một công ty liên quan đến giao dịch điện tử, bạn sẽ phải trả lời rất nhiều câu hỏi phỏng vấn đa luồng. Chúng ta hãy xem xét một số câu hỏi phỏng vấn Java Đa luồng phổ biến và câu trả lời của chúng ngay trong bài viết này nhé!
- Câu hỏi phỏng vấn Java Multithreading kèm câu trả lời
- 1. Race Condition là gì? Bạn sẽ tìm và giải quyết nó như thế nào?
- 2. Sự khác nhau giữa các phương thức wait và sleep trong Java là gì?
- 3. Giả sử, bạn có luồng T1, T2 và T3. Làm thế nào bạn sẽ đảm bảo rằng luồng T2 sẽ chạy sau T1 và luồng T3 sau T2?
- 4. Tại sao chúng ta gọi phương thức start () trước, sau đó gọi phương thức run (), tại sao không gọi trực tiếp phương thức run () trong chương trình của chúng ta?
- 5. Bạn sẽ đánh thức một luồng bị chặn trong Java như thế nào?
Câu hỏi phỏng vấn Java Multithreading kèm câu trả lời
1. Race Condition là gì? Bạn sẽ tìm và giải quyết nó như thế nào?
Đây là một trong những câu hỏi phổ biến nhất hầu như chỉ xuất hiện trong các cuộc phỏng vấn cấp cao. Các cuộc phỏng vấn có thể hỏi về tình trạng cuộc đua gần đây mà bạn phải đối mặt, cách giải quyết nó, và thậm chí yêu cầu bạn viết một mã mẫu để phát hiện tình trạng cuộc đua.
Race Condition là một loại vấn đề đồng thời phát sinh do thực hiện song song nhiều luồng cùng một lúc. Vì Java là một ngôn ngữ lập trình đa luồng nên nguy cơ về tình trạng Race càng cao. Về cơ bản, đó là một điều kiện xảy ra khi hai luồng hoạt động trên cùng một đối tượng mà không có sự đồng bộ hóa thích hợp.
2. Sự khác nhau giữa các phương thức wait và sleep trong Java là gì?
Chúng ta hãy xem xét một câu hỏi phỏng vấn đa luồng Java phổ biến khác. Nếu khái niệm của bạn rõ ràng, bạn sẽ không gặp bất kỳ vấn đề gì khi trả lời câu hỏi này.
Cả hai đều được sử dụng để tạm dừng thực thi một luồng cụ thể trong môi trường đa luồng. Sự khác biệt duy nhất giữa phương thức wait () và sleep () là - bất cứ khi nào một luồng gọi phương thức wait (), nó sẽ giải phóng khóa hoặc giám sát nó giữ trong khi khi phương thức sleep () được gọi, nó không giải phóng khóa hoặc màn hình. nó giữ.
Phương thức wait () được sử dụng để giao tiếp giữa các luồng và sleep () được sử dụng để tạm dừng thực thi.
3. Giả sử, bạn có luồng T1, T2 và T3. Làm thế nào bạn sẽ đảm bảo rằng luồng T2 sẽ chạy sau T1 và luồng T3 sau T2?
Hầu hết thời gian, Người phỏng vấn hỏi câu hỏi này trong vòng phỏng vấn đầu tiên để kiểm tra xem ứng viên có quen với khái niệm phương thức join () hay không.
Bạn có thể chỉ cần trả lời câu hỏi đa luồng này bằng cách nói - nó có thể đạt được bằng cách sử dụng phương thức join () của lớp Thread.
4. Tại sao chúng ta gọi phương thức start () trước, sau đó gọi phương thức run (), tại sao không gọi trực tiếp phương thức run () trong chương trình của chúng ta?
Đây là một câu hỏi kinh điển khác thường được người phỏng vấn hỏi. Nó thường được hỏi trong các cuộc phỏng vấn Java cấp độ cơ sở và cấp độ trung bình.
Bạn có thể trả lời câu hỏi này theo cách này. Khi bạn gọi phương thức start (), nó sẽ tạo một luồng mới và thực thi mã chứa trong phương thức run (),
Nhưng nếu chúng ta trực tiếp gọi hàm run (), thì sẽ không quan tâm đến việc tạo bất kỳ luồng nào và thực thi mã trên cùng một luồng đang gọi. Vì vậy, phương thức run () sẽ hoạt động giống như một phương thức bình thường và chúng tôi sẽ không thể tận dụng đa luồng
5. Bạn sẽ đánh thức một luồng bị chặn trong Java như thế nào?
Đánh thức một chuỗi bị chặn có thể có nghĩa là nhiều thứ khác nhau trong Java. Đó là lý do tại sao các chuyên gia coi đây là một câu hỏi hóc búa. Nếu luồng bị chặn vì gọi phương thức wait (), sleep () hoặc join (), bạn có thể ngắt luồng và đánh thức nó bằng cách ném InterruptException. Nhưng nếu luồng bị chặn trên IO, tôi không nghĩ có cách nào để đánh thức nó.
T3H hy vọng bạn thấy bài viết này hữu ích. Nếu bạn biết bất kỳ câu hỏi đa luồng Java phổ biến nào khác nên có trong danh sách này, hãy cho chúng tôi biết trong phần bình luận bên dưới. Và cuối cùng, chúc bạn may mắn với các cuộc phỏng vấn Java trong tương lai.
>>> Tham khảo khóa học lập trình Java tại Viện CNTT T3H