Nội dung chính
-
Câu hỏi phỏng vấn xử lý ngoại lệ trong java
- 1. Xử lý ngoại lệ (handling exception) là gì?
- 2. Sự khác biệt giữa checked exception và unchecked exception là gì?
- 3. Có phải mỗi khối try phải đi kèm với một khối catch?
- 4. Khối finally là gì?
- 5. Khối finally có thể được sử dụng mà không cần khối catch không?
- 6. Có trường hợp nào khối finally không được thực thi không?
- 7. Sự khác nhau giữa throw và throws là gì?
- 8. Có thể khai báo phương thức overriding của lớp con một ngoại lệ nếu phương thức của lớp cha không throw một ngoại lệ?
- 9. Việc tuyên truyền ngoại lệ là gì?
-
Câu hỏi phỏng vấn String trong java
- 1. Ý nghĩa của immutable (bất biến) trong String là gì?
- 2. Tại sao các đối tượng String trong java là immutable?
- 3. Có bao nhiêu cách để tạo ra một đối tượng String trong java?
- 4. Có bao nhiêu đối tượng String được tạo ra trong đoạn code sau?
- 5. Tại sao java sử dụng khái niệm string literal?
- 6. Có bao nhiêu đối tượng được tạo ra trong đoạn code sau?
- 8. Sự khác nhau giữa String và StringBuffer là gì?
- 9. Sự khác nhau giữa StringBuffer và StringBuilder là gì?
- 10. Làm thế nào để tạo lớp immutable trong java?
- 11. Mục đích của phương thức toString() trong java là gì?
- Câu hỏi phỏng vấn Nested class và Interface
Câu hỏi phỏng vấn xử lý ngoại lệ trong java
Dưới đây là danh sách các câu hỏi phỏng vấn xử lý ngoại lệ trong java. Nếu bạn biết bất kỳ câu hỏi phỏng vấn hay về xử lý ngoại lệ trong java, vui lòng đăng nó trong phần bình luận để chia sẻ cho mọi người nhé.
1. Xử lý ngoại lệ (handling exception) là gì?
Exception Handling trong java hay xử lý ngoại lệ trong java là một cơ chế mạnh mẽ để xử lý các lỗi runtime để có thể duy trì luồng bình thường của ứng dụng.
2. Sự khác biệt giữa checked exception và unchecked exception là gì?
2.1. Checked exception
Các lớp được extends lớp Throwable ngoại trừ RuntimeException và Error được gọi là các checked exception. Ví dụ: IOException, SQLException, ... Checked exception được kiểm tra tại thời gian biên dịch.
2.2. Unchecked exception
Các lớp được extends lớp RuntimeException được gọi là unchecked exception. Ví dụ như ArithmeticException, NullPointerException, ... Unchecked exception không được kiểm tra tại thời gian biên dịch.
3. Có phải mỗi khối try phải đi kèm với một khối catch?
Nó không phải là cần thiết mà mỗi khối thử phải được theo sau bởi một khối catch. Nó phải được theo sau bởi một khối catch hoặc một khối finally. Và bất kỳ trường hợp ngoại lệ có thể bị ném sẽ được khai báo với từ khóa throws của phương thức.
4. Khối finally là gì?
- Khối lệnh finally trong java được sử dụng để thực thi các lệnh quan trọng như đóng kết nối, đóng cá stream,…
- Khối lệnh finally trong java luôn được thực thi cho dù có ngoại lệ xảy ra hay không.
- Khối lệnh finally trong java được khai báo sau khối lệnh try hoặc sau khối lệnh catch.
5. Khối finally có thể được sử dụng mà không cần khối catch không?
Có. Bởi khối try. Khối finally phải theo sau khối try hoặc catch.
6. Có trường hợp nào khối finally không được thực thi không?
Khối finally không được thực thi nếu chương trình bị thoát (bằng cách gọi System.exit() hoặc lỗi phần cứng.
7. Sự khác nhau giữa throw và throws là gì?
No. | throw | throws |
---|---|---|
1) | Từ khóa throw trong java được sử dụng để ném ra một ngoại lệ rõ ràng. | Từ khóa throws trong java được sử dụng để khai báo một ngoại lệ. |
2) | Ngoại lệ checked không được truyền ra nếu chỉ sử dụng từ khóa throw. | Ngoại lệ checked được truyền ra ngay cả khi chỉ sử dụng từ khóa throws. |
3) | Sau throw là một instance. | Sau throws là một hoặc nhiều class. |
4) | Throw được sử dụng trong phương thức. | Throws được khai báo ngay sau dấu đóng ngoặc đơn của phương thức. |
5) | Bạn không thể throw nhiều exceptions. | Bạn có thể khai báo nhiều exceptions, Ví dụ: public void method()throws IOException,SQLException. |
8. Có thể khai báo phương thức overriding của lớp con một ngoại lệ nếu phương thức của lớp cha không throw một ngoại lệ?
Được nhưng chỉ đối với unchecked exception còn checked exception thì không.
9. Việc tuyên truyền ngoại lệ là gì?
Việc chuyển tiếp đối tượng ngoại lệ sang phương thức gọi được gọi là sự truyền ngoại lệ.
Câu hỏi phỏng vấn String trong java
Dưới đây là danh sách các câu hỏi phỏng vấn String trong java. Nếu bạn biết bất kỳ câu hỏi phỏng vấn hay về String trong java, vui lòng đăng nó trong phần bình luận để chia sẻ cho mọi người nhé.
1. Ý nghĩa của immutable (bất biến) trong String là gì?
Ý nghĩa đơn giản của immutable là không thể sửa đổi hoặc không thể thay đổi được. Một khi đối tượng String đã được tạo ra, giá trị của nó không thể thay đổi.
2. Tại sao các đối tượng String trong java là immutable?
Bởi vì java sử dụng khái niệm về string literal. Giả sử có 5 biến tham chiếu, tất cả các tham chiếu đến một đối tượng "hello". Nếu một biến tham chiếu thay đổi giá trị của đối tượng, nó sẽ bị ảnh hưởng đến tất cả các biến tham chiếu khác. Đó là lý do tại sao đối tượng String trong java immutable (bất biến).
3. Có bao nhiêu cách để tạo ra một đối tượng String trong java?
Có 2 cách để tạo đối tượng String:
- Sử dụng string literal
- Sử dụng từ khóa new
4. Có bao nhiêu đối tượng String được tạo ra trong đoạn code sau?
String s1="Hello"; String s2="Hello"; String s3="World";
Chỉ có 2 đối tượng được tạo ra.
5. Tại sao java sử dụng khái niệm string literal?
Vì điều này khiến Java sử dụng bộ nhớ hiệu quả hơn (vì không có đối tượng String mới được tạo ra trong string constant pool).
6. Có bao nhiêu đối tượng được tạo ra trong đoạn code sau?
String s = new String("Welcome");
7. Có 2 đối tượng được tạo ra. Một đối tượng được tạo ra trong string constant pool và một đối tượng được tạo ra trong bộ nhớ heap bởi từ khóa new.
8. Sự khác nhau giữa String và StringBuffer là gì?
String là một đối tượng immutable (bất biến). StringBuffer là môt đối tượng mutable (có thể biến đổi).
9. Sự khác nhau giữa StringBuffer và StringBuilder là gì?
StringBuffer là đồng bộ còn StringBuilder là KHÔNG đồng bộ.
10. Làm thế nào để tạo lớp immutable trong java?
Chúng ta có thể tạo ra lớp immutable như lớp String bằng cách định lớp với từ khóa final và
11. Mục đích của phương thức toString() trong java là gì?
Phương thức toString() trả về biểu diễn chuỗi của bất kỳ đối tượng nào. Nếu bạn in bất kỳ đối tượng, trình biên dịch java gọi phương thức toString() trên đối tượng. Vì vậy, việc override phương thức toString(), trả về output mong muốn, nó có thể là trạng thái của một đối tượng,... phụ thuộc vào việc cài đặt của bạn.
Câu hỏi phỏng vấn Nested class và Interface
Dưới đây là danh sách các câu hỏi phỏng vấn Nested class và Interface trong java. Nếu bạn biết bất kỳ câu hỏi phỏng vấn hay về Nested class và Interface trong java, vui lòng đăng nó trong phần bình luận để chia sẻ cho mọi người nhé.
1. Nested class (lớp lồng nhau) là gì?
Một lớp được khai báo bên trong một lớp khác được gọi là lớp lồng nhau. Có 4 loại lớp bên trong lớp lồng nhau: member inner class, local inner class, annonymous inner class và static nested.
2. Có sự khác nhau giữa nested class và inner class không?
Có. Inner class là non-static nested class nghĩa là inner class là một kiểu nested class.
3. Nested interface là gì?
Bất kỳ interface nào được khai báo bên trong interface hoặc class, được biết đến nested interface. Nó có thể là static hoặc default.
4. Có thể khai báo interface trong class không?
Có. Nó được biết đến như nested interface.
5. Có thể khai báo một class trong interface không?
Có. Nhưng chúng không liên quan đến nhau.