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.
Bài này chúng ta cùng tìm hiểu về 30 câu hỏi phỏng vấn Java tiếp theo.
- Giải thích sự sử dụng của this() với các Constructor?
Nó được sử dụng với các biến hoặc phương thức và được sử dụng để gọi Constructor của cùng lớp đó.
2. Bạn biết gì về Set Interface?
Nó là một tập hợp phần tử mà không thể chứa bản sao các phần tử. Set Interface chỉ bao gồm các phương thức được kế thừa từ Collection và bổ sung thêm các giới hạn về ngăn cấm bản sao phần tử xuất hiện.
- Trình bày TreeSet?
Nó là một Set được triển khai khi chúng ta muốn các phần tử trong một thứ tự được sắp xếp.
- Comparable Interface là gì?
Nó được sử dụng để sắp xếp các Collection và các mảng đối tượng bởi sử dụng phương thức collection.sort() và java.utils. Các đối tượng của lớp triển khai Comparable Interface có thể được sắp xếp.
- Điểm khác nhau giữa throws và throw?
Bao gồm:
- Throw được sử dụng để kích hoạt một Exception trong khi throws được sử dụng trong khai báo của Exception.
- Không có throw, Checked Exception không thể được xử lý, trong khi throws được sử dụng để biểu thị những Exception không được xử lý bởi hàm.
- Giải thích dòng code sau bằng ngôn ngữ Java?
public static void main (String args[ ])
Dưới đây là phần giải tích chi tiết:
- public − nó là Access Specifier.
- static − nó cho phép main() để được gọi mà không cần thuyết minh một Instance cụ thể của một lớp.
- void − nó thông báo cho Compiler rằng không có giá trị nào được trả về bởi main().
- main() − phương thức này được gọi ở phần đầu chương trình Java.
- String args[ ] − tham số args là một mảng thể hiện của lớp String.
- JRE (Java Runtime Environment) là gì?
JRE là một trình triển khai của Java Virtual Machine mà thực thi các chương trình Java. Nó cung cấp các điều kiện tối thiểu để thực thi một ứng dụng Java.
- JAR file là gì?
JAR là viết tắt của Java Archive và nó kết hợp nhiều file lại thành một. Nó giữ các lớp Java trong một thư viện. JAR file được xây dựng trên định dạng ZIP file và có đuôi là .jar.
- WAR file là gì?
Đây là Web Archive File và được sử dụng để lưu trữ XML, các lớp Java, và JavaServer pages, mà được sử dụng để phân phối một tập hợp các JavaServer Page, Java Servlet, các lớp Java, XML file, Webpage tĩnh, …
- Định nghĩa JIT Compiler?
Nó cải thiện hiệu suất runtime của các chương trình máy tính dựa trên Bytecode.
- Điểm khác nhau giữa Ngôn ngữ lập trình hướng đối tượng và ngôn ngữ lập trình dựa vào đối tượng?
Ngôn ngữ lập trình dựa vào đối tượng có tất cả đặc điểm của OOP ngoại trừ Tính kế thừa (Inheritance). JavaScript là một ví dụ về Ngôn ngữ lập trình dựa trên đối tượng.
- Mục đích của Constructor mặc định?
Java Compiler tạo một Constructor mặc định chỉ nếu khi không có constructor nào trong lớp.
- Một Constructor có thể được tạo là final không?
Không, đây là điều không thể.
- Khối static là gì?
Nó được sử dụng để khởi tạo thành viên dữ liệu static. Nó được thực thi trước phương thức main tại thời gian tải lớp đó.
- Định nghĩa Composition?
Việc giữ tham chiếu của lớp khác bên trong một vài lớp khác được biết đến như là Composition.
- Quá tải phương thức (Method Overloading) là gì?
Nếu một lớp có nhiều hàm có cùng tên nhưng có tham số khác nhau, nó được xem như là quá tải phương thức (Method Overloading) hoặc quá tải hàm (Function Overloading).
- Ghi đè phương thức (Method Overriding) là gì?
Nếu một lớp con cung cấp một trình triển khai cụ thể của một phương thức mà đã được cung cấp bởi lớp cha của nó, thì đó là Ghi đè phương thức.
- Sự khác nhau giữa nạp chồng và ghi đè (Overloading vs Overriding)?
Nạp chồng phương thức tăng khả nang đọc của chương trình. Ghi đè phương thức cung cấp trình triển khai cụ thể của phương thức mà đã được cung cấp bởi lớp cha của nó. Tham số phải là khác kiểu trong nạp chồng, và trong ghi đè, các tham số là cùng kiểu.
- Lớp final là gì?
Các lớp final được tạo để các phương thức được triển khai bởi lớp đó không thể bị ghi đè. Nó không thể bị kế thừa.
- NullPointerException là gì?
Một NullPointerException được ném khi gọi phương thức instance của một đối tượng Null, truy cập hoặc sửa đổi các trường của một đối tượng Null, …
- 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ẹ.
Cám ơn bạn đã đọc bài viết này, hẹn gặp lại bạn ở bài viết tiếp theo!