200 Câu hỏi phỏng vấn Java (Phần 9)

Phỏng vấn vẫn là vấn đề rất nhiều bạn ra mới ra trường khá sợ và thiếu tự tin, một phần chủ yếu do thiếu khá nhiều kiến thức nền tảng, một phần là bạn chưa có sự chuẩn bị kỹ càng. Việc đọc qua những câu phỏng vấn là một cách khá hay, giúp bạn trau dồi lại kiến thức của mình cũng như làm quen dần với các câu hỏi bạn sẽ gặp trong cuộc phỏng vấn.

Chương này chúng ta cùng tìm hiểu về 10 câu hỏi phỏng vấn Java tiếp theo.

Các cách mà một Thread có thể đi vào trạng thái đợi?

Một Thread có thể đi vào trạng thái đợi (Waiting state) bằng việc triệu hồi phương thức sleep() của nó, bằng việc được khóa trên IO, hoặc thất bại trong việc cố gắng thu được lock của đối tượng, hoặc bởi triệu hồi phương thức wait() của đối tượng. Nó cũng có thể đi vào trạng thái đợi bởi triệu hồi phương thức suspend() của nó (phương thức này đã cũ).

Cách mà Đa luồng (Multi-Thread) diễn ra trên một máy tính với một CPU đơn?

Scheduler của hệ điều hành cấp phát thời gian thực thi cho các Task. Bằng việc nhanh nhóng chuyển đổi giữa các Task đang thực thi, nó tạo cho chúng ta cảm tưởng rằng các Task này được thực thi đồng thời.

Triệu hồi phương thức run() của một Thread là gì?

Sau khi một Thread được tạo, thông qua phương thức start() của nó trong lớp Thread, JVM triệu hồi phương thức run() của Thread khi Thread này bắt đầu được thực thi.

Có vấn đề gì không với thứ tự của các lệnh catch được viết cho FileNotFoundException và IOException?

Có. FileNotFoundException được kế thừa từ IOException. Các lớp con của Exception phải được bắt đầu tiên.

Điểm khác nhau giữa yield và sleep?

Khi một tác vụ triệu hồi phương thức yield() của nó, nó chuyển thành trạng thái sẵn sàng. Khi một tác vụ triệu hồi phương thức sleep() của nó, nó chuyển sang trạnh thái đợi.

Tại sao lớp Vector được sử dụng?

Lớp Vector cung cấp khả năng để triển khai mọt mảng có thể mở rộng của các đối tượng. Vector tỏ ra rất hữu ích nếu bạn không biết trước kích cỡ của mảng, hoặc nếu bạn chỉ cần một mảng mà có thể thay đổi kích cỡ trong thời gian sống của một chương trình.

Có bao nhiêu Bit được sử dụng để biểu diễn các ký tự Unicode, ASCII, UTF-16 và UTF-8?

Unicode cần 16 bit và ASCII cần 7 bit. Mặc dù bộ ký tự ASCII chỉ sử dụng 7 bit, nhưng nó thường được biểu diễn bởi 8 bit. UTF-8 biểu diễn ký tự sử dụng 8 bit và là 16 bit cho UTF-16.

Các lớp Wrapper là gì?

Đây là các lớp cho phép các kiểu dữ liệu gốc để được truy cập như là các đối tượng. Ví dụ: Integer, Character, Double, Boolean, …

Điểm khác nhau giữa một Window và một Frame?

Lớp Frame kế thừa Window để định nghĩa một cửa sổ ứng dụng chính mà có thể có một menu bar.

Package nào có các thành phần gọn nhẹ (lightweight)?

Đó là javax.Swing. Tất cả các thành phần trong Swing, ngoại trừ JApplet, JDialog, JFrame và JWindow là các thành phần gọn nhẹ.

Bình luận