Hỏi đáp về IT
Mã xác nhận Thay đổi một
Ngô Quang Hải quanghaisoft@yahoo.com Bigdata engineering

Hơn 100 câu hỏi phỏng vấn Java bạn phải chuẩn bị vào năm 2020

Duyệt qua: 234
Câu hỏi phỏng vấn Java

Trong blog Câu hỏi Phỏng vấn Java này, tôi sẽ liệt kê một số Câu hỏi và Trả lời Phỏng vấn Java quan trọng nhất sẽ giúp bạn khác biệt trong quá trình phỏng vấn. Java được sử dụng bởi khoảng 10 triệu nhà phát triển trên toàn thế giới để phát triển các ứng dụng cho 15 tỷ thiết bị hỗ trợ Java. Nó cũng được sử dụng để tạo các ứng dụng cho các công nghệ thịnh hành như Dữ liệu lớn cho các thiết bị gia dụng như Điện thoại di động và hộp DTH. Và do đó ngày nay, Java được sử dụng ở khắp mọi nơi! Đây là lý do tại sao  được yêu cầu nhiều nhất trong lĩnh vực lập trình.

Chúng ta hãy bắt đầu bằng cách xem qua một số câu hỏi phỏng vấn Java thường gặp nhất,    
 
 
Chúng tôi đã tổng hợp một danh sách các câu hỏi phỏng vấn Java hàng đầu được phân loại thành 7 phần, cụ thể là: 
Câu hỏi và câu trả lời phỏng vấn Java | Edureka
 


Là một chuyên gia Java, điều cần thiết là phải biết các từ thông dụng phù hợp, tìm hiểu các công nghệ phù hợp và chuẩn bị câu trả lời phù hợp cho các Câu hỏi Phỏng vấn Java thường gặp. Dưới đây là danh sách chính xác các Câu hỏi phỏng vấn Java hàng đầu sẽ đảm bảo bạn sẽ dễ dàng chuyển sang cấp độ tiếp theo.

Trong trường hợp bạn đã tham dự bất kỳ cuộc phỏng vấn Java nào gần đây hoặc có thêm câu hỏi ngoài những gì chúng tôi đề cập, chúng tôi khuyến khích bạn đăng chúng trong  của chúng tôi . Đội ngũ chuyên gia của chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.  

Vì vậy, hãy bắt đầu với bộ câu hỏi phỏng vấn Java cơ bản đầu tiên.

Câu hỏi phỏng vấn Java cơ bản Q1. Giải thích JDK, JRE và JVM? JDK vs JRE vs JVM
JDK JRE JVM
Nó là viết tắt của Java Development Kit. Nó là viết tắt của Java Runtime Environment. Nó là viết tắt của Java Virtual Machine.
Nó là công cụ cần thiết để biên dịch, lập tài liệu và đóng gói các chương trình Java. JRE đề cập đến một môi trường thời gian chạy trong đó Java bytecode có thể được thực thi. Nó là một cỗ máy trừu tượng. Nó là một đặc tả cung cấp một môi trường thời gian chạy trong đó Java bytecode có thể được thực thi.
Nó chứa các công cụ phát triển JRE +. Đó là một triển khai của JVM tồn tại trên thực tế. JVM tuân theo ba ký hiệu: Đặc tả, Triển khai và  Phiên bản thời gian chạy .

Quý 2. Giải thích public static void main (String args []) trong Java.

main () trong Java là điểm đầu vào cho bất kỳ chương trình Java nào. Nó luôn được viết là public static void main (String [] args) .

  • public : Public là một công cụ sửa đổi quyền truy cập, được sử dụng để chỉ định ai có thể truy cập vào phương thức này. Công khai có nghĩa là Phương thức này sẽ có thể truy cập được bởi bất kỳ Lớp nào.
  • static : Nó là một từ khóa trong java xác định nó là dựa trên lớp. main () được tạo tĩnh trong Java để nó có thể được truy cập mà không cần tạo phiên bản của Lớp. Trong trường hợp, main không được tạo tĩnh thì trình biên dịch sẽ ném ra một lỗi vì hàm main () được gọi bởi JVM trước khi bất kỳ đối tượng nào được thực hiện và chỉ các phương thức tĩnh mới có thể được gọi trực tiếp thông qua lớp. 
  • void : Nó là kiểu trả về của phương thức. Void định nghĩa phương thức sẽ không trả về bất kỳ giá trị nào.
  • main : Nó là tên của phương thức được JVM tìm kiếm như một điểm khởi đầu cho một ứng dụng chỉ có một chữ ký cụ thể. Nó là phương thức nơi thực thi chính xảy ra.
  • String args [] : Là tham số được truyền cho phương thức chính.
 

Q3. Tại sao Java độc lập với nền tảng?

Java được gọi là độc lập với nền tảng vì các mã byte của nó có thể chạy trên bất kỳ hệ thống nào bất kể hệ điều hành cơ bản của nó.

Q4. Tại sao Java không phải là hướng đối tượng 100%?


Java không phải là hướng đối tượng 100% vì nó sử dụng tám kiểu dữ liệu nguyên thủy như boolean, byte, char, int, float, double, long, short không phải là đối tượng.

Q5. Các lớp wrapper trong Java là gì?

Các lớp gói chuyển đổi các nguyên thủy Java thành các kiểu tham chiếu (đối tượng). Mỗi kiểu dữ liệu nguyên thủy đều có một lớp dành riêng cho nó. Chúng được gọi là các lớp trình bao bọc bởi vì chúng “bọc” kiểu dữ liệu nguyên thủy vào một đối tượng của lớp đó. Tham khảo hình ảnh bên dưới hiển thị kiểu nguyên thủy, lớp trình bao bọc và đối số phương thức khởi tạo khác nhau.

Q6. Các hàm tạo trong Java là gì?

Trong Java, hàm tạo đề cập đến một khối mã được sử dụng để khởi tạo một đối tượng. Nó phải có cùng tên với tên của lớp. Ngoài ra, nó không có kiểu trả về và nó được tự động gọi khi một đối tượng được tạo.

Có hai loại hàm tạo:

  1. Hàm tạo mặc định: Trong Java, một hàm tạo mặc định là một hàm không nhận bất kỳ đầu vào nào. Nói cách khác, các hàm tạo mặc định là các hàm tạo không đối số sẽ được tạo theo mặc định trong trường hợp bạn không có hàm tạo nào khác được người dùng xác định. Mục đích chính của nó là khởi tạo các biến thể hiện với các giá trị mặc định. Ngoài ra, nó được sử dụng chủ yếu để tạo đối tượng. 
  2. Phương thức khởi tạo tham số hóa: Phương thức khởi tạo tham số hóa trong Java, là phương thức khởi tạo có khả năng khởi tạo các biến thể hiện với các giá trị được cung cấp. Nói cách khác, các hàm tạo nhận các đối số được gọi là các hàm tạo tham số hóa.

Q7. Lớp singleton trong Java là gì và làm thế nào chúng ta có thể tạo một lớp singleton?

Lớp Singleton là một lớp chỉ có một thể hiện có thể được tạo vào bất kỳ thời điểm nào, trong một JVM. Một lớp có thể được tạo singleton bằng cách đặt phương thức khởi tạo của nó là riêng tư.

Q8. Sự khác biệt giữa Array list và vector trong Java là gì?
Lập danh sách Véc tơ
Danh sách mảng không được đồng bộ hóa.  Véc tơ được đồng bộ hóa.
Danh sách mảng nhanh vì nó không được đồng bộ hóa. Vector chậm vì nó an toàn cho chủ đề.
Nếu một phần tử được chèn vào Danh sách Mảng, nó sẽ tăng kích thước Mảng lên 50%. Vector mặc định tăng gấp đôi kích thước mảng của nó.
Danh sách mảng không xác định kích thước gia tăng. Vector xác định kích thước gia tăng.
Danh sách Mảng chỉ có thể sử dụng Iterator để duyệt qua Danh sách Mảng. Vector có thể sử dụng cả Enumeration và Iterator để duyệt qua.

Q9. Sự khác biệt giữa equals () và == trong Java là gì?

Phương thức Equals () được định nghĩa trong lớp Object trong Java và được sử dụng để kiểm tra sự bình đẳng của hai đối tượng được định nghĩa bởi logic nghiệp vụ.

“==” hay toán tử bình đẳng trong Java là một toán tử nhị phân được cung cấp bởi ngôn ngữ lập trình Java và được sử dụng để so sánh các đối tượng và nguyên thủy. public boolean bằng (Object o) là phương thức được cung cấp bởi lớp Object. Việc triển khai mặc định sử dụng toán tử == để so sánh hai đối tượng. Ví dụ: phương thức có thể được ghi đè như lớp String. Phương thức equals () được sử dụng để so sánh giá trị của hai đối tượng.

Q. 10. Sự khác nhau giữa Heap và Stack Memory trong Java là gì?

Sự khác biệt chính giữa bộ nhớ Heap và Stack là:

Đặc trưng Cây rơm Đống
Ký ức Bộ nhớ ngăn xếp chỉ được sử dụng bởi một luồng thực thi. Bộ nhớ đống được sử dụng bởi tất cả các phần của ứng dụng.
Truy cập Các luồng khác không thể truy cập bộ nhớ ngăn xếp. Các đối tượng được lưu trữ trong heap có thể truy cập toàn cầu.
Quản lý bộ nhớ Làm theo cách LIFO để giải phóng bộ nhớ. Quản lý bộ nhớ dựa trên thế hệ liên kết với từng đối tượng.
Cả đời Tồn tại cho đến khi kết thúc quá trình thực thi luồng. Bộ nhớ đống tồn tại từ khi bắt đầu cho đến khi kết thúc quá trình thực thi ứng dụng.
Sử dụng Bộ nhớ ngăn xếp chỉ chứa các biến nguyên thủy cục bộ và tham chiếu đến các đối tượng trong không gian đống. Bất cứ khi nào một đối tượng được tạo, nó luôn được lưu trữ trong không gian Heap.
Q11. Một gói trong Java là gì? Liệt kê các ưu điểm khác nhau của các gói.

Các gói trong Java, là tập hợp các lớp và giao diện có liên quan được gói lại với nhau. Bằng cách sử dụng các gói, các nhà phát triển có thể dễ dàng mô-đun hóa mã và tối ưu hóa việc tái sử dụng nó. Ngoài ra, mã trong các gói có thể được nhập bởi các lớp khác và sử dụng lại. Dưới đây tôi đã liệt kê một vài ưu điểm của nó:

  • Các gói giúp tránh đụng độ tên
  • Chúng cung cấp khả năng kiểm soát truy cập dễ dàng hơn trên mã
  • Các gói cũng có thể chứa các lớp ẩn không hiển thị đối với các lớp bên ngoài và chỉ được sử dụng trong gói
  • Tạo một cấu trúc phân cấp thích hợp để giúp định vị các lớp liên quan dễ dàng hơn
Q12. Tại sao con trỏ không được sử dụng trong Java?

Java không sử dụng con trỏ vì chúng không an toàn và làm tăng độ phức tạp của chương trình. Vì Java được biết đến với tính đơn giản của mã, việc thêm khái niệm con trỏ sẽ mâu thuẫn. Hơn nữa, vì JVM chịu trách nhiệm cấp phát bộ nhớ ngầm, do đó để tránh người dùng truy cập trực tiếp vào bộ nhớ, con trỏ không được khuyến khích trong Java.

Q13. Trình biên dịch JIT trong Java là gì?

JIT là viết tắt của trình biên dịch Just-In-Time trong Java. Nó là một chương trình giúp chuyển đổi mã bytecode của Java thành các lệnh được gửi trực tiếp đến bộ xử lý. Theo mặc định, trình biên dịch JIT được bật trong Java và được kích hoạt bất cứ khi nào một phương thức Java được gọi. Sau đó, trình biên dịch JIT sẽ biên dịch mã bytecode của phương thức được gọi thành mã máy gốc, biên dịch nó “đúng lúc” để thực thi. Khi phương thức đã được biên dịch, JVM triệu hồi mã đã biên dịch của phương thức đó trực tiếp thay vì diễn giải nó. Đây là lý do tại sao nó thường chịu trách nhiệm về việc tối ưu hóa hiệu suất của các ứng dụng Java tại thời điểm chạy.

Q14. Công cụ sửa đổi quyền truy cập trong Java là gì?

Trong Java, các bổ trợ truy cập là các từ khóa đặc biệt được sử dụng để hạn chế quyền truy cập của một lớp, hàm tạo, thành viên dữ liệu và phương thức trong một lớp khác. Java hỗ trợ bốn loại công cụ sửa đổi truy cập:

  1. Mặc định
  2. Riêng tư
  3. Được bảo vệ
  4. Công cộng
bổ nghĩa Mặc định Riêng tư Được bảo vệ Công cộng
Cùng lớp ĐÚNG ĐÚNG ĐÚNG ĐÚNG
Lớp con cùng gói ĐÚNG KHÔNG ĐÚNG ĐÚNG
Cùng một gói không phải lớp con ĐÚNG KHÔNG ĐÚNG ĐÚNG
Lớp con gói khác nhau KHÔNG KHÔNG ĐÚNG ĐÚNG
Gói khác nhau không phải lớp con KHÔNG KHÔNG KHÔNG ĐÚNG
Q15. Định nghĩa một lớp Java.

Một lớp trong Java là một bản thiết kế bao gồm tất cả dữ liệu của bạn. Một lớp chứa các trường (biến) và các phương thức để mô tả hành vi của một đối tượng. Hãy xem cú pháp của một lớp.

1
2
3
class Abc {
member variables // class body
methods}
Q16. Đối tượng trong Java là gì và nó được tạo ra như thế nào?

Đối tượng là một thực thể trong thế giới thực có trạng thái và hành vi. Một đối tượng có ba đặc điểm:

  1. Tiểu bang
  2. Hành vi
  3. Danh tính

Một đối tượng được tạo bằng từ khóa 'mới'. Ví dụ:

ClassName obj = new ClassName ();

Q17. Lập trình hướng đối tượng là gì?

Lập trình hướng đối tượng hay còn được gọi phổ biến là OOP là một mô hình hoặc cách tiếp cận lập trình trong đó các chương trình được tổ chức xung quanh các đối tượng hơn là logic và các chức năng. Nói cách khác, OOP chủ yếu tập trung vào các đối tượng được yêu cầu thao tác thay vì logic. Cách tiếp cận này lý tưởng cho các chương trình có mã lớn và phức tạp và cần được cập nhật hoặc duy trì tích cực.

Q18. Các khái niệm chính về OOP trong Java là gì?

Lập trình hướng đối tượng hoặc OOP là một phong cách lập trình liên quan đến các khái niệm như:

  1. Kế thừa: Kế thừa là một quá trình mà một lớp này thu nhận các thuộc tính của lớp khác.
  2. Đóng gói: Đóng gói trong Java là một cơ chế gói dữ liệu và mã lại với nhau thành một đơn vị duy nhất.
  3. Tính trừu tượng: Tính trừu tượng là phương pháp ẩn các chi tiết triển khai khỏi người dùng và chỉ cung cấp chức năng cho người dùng. 
  4. Tính đa hình: Tính đa hình là khả năng một biến, hàm hoặc đối tượng có nhiều dạng.
Q19. Sự khác biệt giữa biến cục bộ và biến cá thể là gì?

Trong Java, một  biến cục bộ thường được sử dụng bên trong một phương thức, hàm tạo hoặc một khối  và chỉ có phạm vi cục bộ. Do đó, biến này chỉ có thể được sử dụng trong phạm vi của một khối. Lợi ích tốt nhất của việc có một biến cục bộ là các phương thức khác trong lớp sẽ không nhận biết được biến đó.

Thí dụ

 

1
2
3
4
if(x > 100)
{
String test = "Edureka";
}

 

Trong khi, một  biến thể hiện trong Java, là một biến được liên kết với chính đối tượng của nó. Các biến này được khai báo trong một  lớp , nhưng bên ngoài một phương thức. Mọi đối tượng của lớp đó sẽ tạo bản sao của biến riêng trong khi sử dụng nó. Do đó, bất kỳ thay đổi nào được thực hiện đối với biến sẽ không phản ánh trong bất kỳ trường hợp nào khác của lớp đó và sẽ chỉ bị ràng buộc với trường hợp cụ thể đó.

1
2
3
4
class Test{
public String EmpName;
public int empAge;
}
Q20. Phân biệt các hàm tạo và các phương thức trong Java?
Phương pháp Người xây dựng
1. Được sử dụng để thể hiện hành vi của một đối tượng 1. Được sử dụng để khởi tạo trạng thái của một đối tượng
2. Phải có kiểu trả về 2. Không có bất kỳ loại trả lại nào
3. Cần được gọi một cách rõ ràng 3. Được gọi ngầm
4. Không có phương pháp mặc định nào được cung cấp bởi trình biên dịch 4. Một hàm tạo mặc định được cung cấp bởi trình biên dịch nếu lớp không có
5. Tên phương thức có thể giống hoặc không giống với tên lớp 5. Tên hàm tạo phải luôn giống với tên lớp
Q21. Từ khóa cuối cùng trong Java là gì?

final là một từ khóa đặc biệt trong Java được sử dụng như một công cụ sửa đổi không truy cập. Một biến cuối cùng có thể được sử dụng trong các ngữ cảnh khác nhau như:

  • biến cuối cùng

Khi từ khóa cuối cùng được sử dụng với một biến thì giá trị của nó không thể thay đổi sau khi được gán. Trong trường hợp không có giá trị nào được gán cho biến cuối cùng thì chỉ sử dụng hàm tạo lớp, một giá trị có thể được gán cho nó.

  • phương pháp cuối cùng

Khi một phương thức được khai báo là cuối cùng thì nó không thể bị lớp kế thừa ghi đè.

  • lớp cuối cùng

Khi một lớp được khai báo là cuối cùng trong Java, nó không thể được mở rộng bởi bất kỳ lớp con nào nhưng nó có thể mở rộng lớp khác.

Q22. Sự khác biệt giữa câu lệnh break và continue là gì?
phá vỡ tiếp tục
1. Có thể được sử dụng trong các câu lệnh switch và vòng lặp (for, while, do while) 1. Chỉ có thể được sử dụng với các câu lệnh lặp
2. Nó làm cho các câu lệnh chuyển đổi hoặc vòng lặp kết thúc tại thời điểm nó được thực thi 2. Nó không kết thúc vòng lặp nhưng khiến vòng lặp nhảy sang lần lặp tiếp theo
3. Nó chấm dứt vòng lặp bao bọc trong cùng hoặc chuyển đổi ngay lập tức 3. Một tiếp tục trong một vòng lặp được lồng với một công tắc sẽ khiến cho phép lặp lại vòng lặp tiếp theo được thực thi
 
Ví dụ ngắt:
 
1
2
3
4
5
6
7
số 8
for (int i = 0; i < 5; i++)
{
if (i == 3)
{
break;
}
System.out.println(i);
}
 
Tiếp tục ví dụ:
1
2
3
4
5
6
7
số 8
for (int i = 0; i < 5; i++)
{
if(i == 2)
{
continue;
}
System.out.println(i);
}
Q23. Vòng lặp vô hạn trong Java là gì? Giải thích bằng một ví dụ.

Vòng lặp vô hạn là một chuỗi lệnh trong Java lặp liên tục khi không đáp ứng được lối ra chức năng. Loại vòng lặp này có thể là kết quả của một lỗi lập trình hoặc cũng có thể là một hành động có chủ ý dựa trên hành vi ứng dụng. Vòng lặp vô hạn sẽ tự động kết thúc khi ứng dụng thoát.

Ví dụ:

 

1
2
3
4
5
6
7
số 8
public class InfiniteForLoopDemo
{
public static void main(String[] arg) {
for(;;)
System.out.println("Welcome to Edureka!");
// To terminate this program press ctrl + c in the console.
}
}

 

Q24. Sự khác biệt giữa this () và super () trong Java là gì?

Trong Java, super () và this (), cả hai đều là các từ khóa đặc biệt được sử dụng để gọi hàm tạo. 

điều này() siêu()
1. this () đại diện cho phiên bản hiện tại của một lớp 1. super () đại diện cho phiên bản hiện tại của một lớp cha / cơ sở
2. Được sử dụng để gọi hàm tạo mặc định của cùng một lớp 2. Được sử dụng để gọi hàm tạo mặc định của lớp cha / cơ sở
3. Được sử dụng để truy cập các phương thức của lớp hiện tại 3. Được sử dụng để truy cập các phương thức của lớp cơ sở
4. Được sử dụng để trỏ cá thể lớp hiện tại 4. Được sử dụng để trỏ cá thể lớp cha
5. Phải là dòng đầu tiên của khối 5. Phải là dòng đầu tiên của khối
Q25. Java String Pool là gì?

Nhóm chuỗi Java đề cập đến một tập hợp các Chuỗi được lưu trữ trong bộ nhớ heap. Trong điều này, bất cứ khi nào một đối tượng mới được tạo, String pool trước tiên sẽ kiểm tra xem đối tượng đã có trong pool hay chưa. Nếu nó hiện diện, thì cùng một tham chiếu sẽ được trả về biến còn đối tượng mới sẽ được tạo trong nhóm chuỗi và tham chiếu tương ứng sẽ được trả về.

Q26. Phân biệt các phương thức tĩnh và không tĩnh trong Java.
Phương pháp tĩnh Phương pháp không tĩnh
1.  Từ khóa static phải được sử dụng trước tên phương thức 1. Không cần sử dụng từ khóa tatic trước tên phương thức
2. Nó được gọi bằng cách sử dụng lớp (className.methodName)  2. Nó có thể được gọi giống như bất kỳ phương pháp chung nào
3. Họ không thể truy cập bất kỳ biến hoặc phương thức phiên bản không tĩnh nào 3. Nó có thể truy cập bất kỳ phương thức tĩnh nào và bất kỳ biến tĩnh nào mà không cần tạo một thể hiện của lớp
Q27. Chuỗi khởi tạo trong Java là gì?

Trong Java, chuỗi khởi tạo là quá trình gọi một hàm tạo này từ một hàm tạo khác đối với đối tượng hiện tại. Chuỗi xây dựng chỉ có thể thực hiện được thông qua kế thừa trong đó một phương thức khởi tạo của lớp con chịu trách nhiệm gọi phương thức khởi tạo của lớp cha trước. Có thể có bất kỳ số lượng lớp nào trong chuỗi hàm tạo. Chuỗi xây dựng có thể đạt được theo hai cách:

  1. Trong cùng một lớp sử dụng this ()
  2. Từ lớp cơ sở sử dụng super ()

Q28. Sự khác biệt giữa String, StringBuilder và StringBuffer.

Hệ số Chuỗi StringBuilder StringBuffer
Nơi lưu trữ Nhóm chuỗi không đổi Khu vực đống Khu vực đống
Tính đột biến Bất biến Có thể thay đổi Có thể thay đổi
An toàn chủ đề Đúng Không Đúng
Hiệu suất Nhanh Hiệu quả hơn Kém hiệu quả
 
Q29. Trình nạp lớp trong Java là gì?

Các  Java ClassLoader là một tập hợp con của JVM (Java Virtual Machine) có nghĩa là chịu trách nhiệm cho việc tải các tập tin lớp học. Bất cứ khi nào một chương trình Java được thực thi, nó sẽ được tải đầu tiên bởi bộ nạp lớp. Java cung cấp ba bộ nạp lớp tích hợp:

  1. Bootstrap ClassLoader
  2. Extension ClassLoader
  3. System / Application ClassLoader
Q30. Tại sao các chuỗi Java là bất biến trong tự nhiên?

Trong Java, các đối tượng chuỗi là bất biến về bản chất, có nghĩa là một khi đối tượng Chuỗi được tạo ra thì trạng thái của nó không thể bị sửa đổi. Bất cứ khi nào bạn cố gắng cập nhật giá trị của đối tượng đó thay vì cập nhật các giá trị của đối tượng cụ thể đó, Java sẽ tạo một đối tượng chuỗi mới. Các đối tượng Chuỗi trong Java là bất biến vì các đối tượng Chuỗi thường được lưu trong bộ nhớ cache trong nhóm Chuỗi. Vì các ký tự chuỗi thường được chia sẻ giữa nhiều máy khách, hành động từ một máy khách có thể ảnh hưởng đến phần còn lại. Nó tăng cường bảo mật, bộ nhớ đệm, đồng bộ hóa và hiệu suất của ứng dụng. 

Q31. Sự khác biệt giữa mảng và danh sách mảng là gì?
Mảng Lập danh sách
Không thể chứa các giá trị của các kiểu dữ liệu khác nhau Có thể chứa các giá trị của các kiểu dữ liệu khác nhau.
Kích thước phải được xác định tại thời điểm khai báo Kích thước có thể được thay đổi động
Cần chỉ định chỉ mục để thêm dữ liệu Không cần chỉ định chỉ mục
Mảng không được tham số hóa kiểu Danh sách mảng là loại 
Mảng có thể chứa các kiểu dữ liệu nguyên thủy cũng như các đối tượng Danh sách mảng chỉ có thể chứa các đối tượng, không cho phép các kiểu dữ liệu nguyên thủy
Q32. Bản đồ trong Java là gì?

Trong Java, Bản đồ là một giao diện của gói Util ánh xạ các khóa duy nhất đến các giá trị. Giao diện Bản đồ không phải là một tập hợp con của giao diện Bộ sưu tập chính và do đó nó hoạt động hơi khác so với các loại bộ sưu tập khác. Dưới đây là một số đặc điểm của giao diện Bản đồ: 

  1. Bản đồ không chứa các khóa trùng lặp.
  2. Mỗi khóa có thể ánh xạ tối đa một giá trị.

Q33. Lớp tập hợp trong Java là gì? Liệt kê các phương thức và giao diện của nó.

Trong Java, bộ sưu tập là một khuôn khổ hoạt động như một kiến ​​trúc để lưu trữ và thao tác một nhóm đối tượng. Sử dụng Bộ sưu tập, bạn có thể thực hiện các tác vụ khác nhau như tìm kiếm, sắp xếp, chèn, thao tác, xóa, v.v. Khung bộ sưu tập Java bao gồm những điều sau:

  • Giao diện
  • Các lớp học
  • Phương pháp

Hình ảnh dưới đây cho thấy hệ thống phân cấp hoàn chỉnh của Bộ sưu tập Java.

FrameworkHierarchy - Java Collections - Edureka

 

Trong trường hợp bạn gặp bất kỳ thách thức nào với những câu hỏi phỏng vấn java này, vui lòng bình luận về vấn đề của bạn trong phần bên dưới.

Câu hỏi phỏng vấn Java OOPS Q1. Đa hình là gì?

Đa hình được mô tả ngắn gọn là “một giao diện, nhiều triển khai”. Tính đa hình là một đặc điểm của việc có thể gán một ý nghĩa hoặc cách sử dụng khác cho một thứ gì đó trong các ngữ cảnh khác nhau - cụ thể là để cho phép một thực thể như một biến, một hàm hoặc một đối tượng có nhiều hơn một dạng. Có hai loại đa hình:

  1. Biên dịch đa hình thời gian
  2. Đa hình thời gian chạy

Tính đa hình thời gian biên dịch là nạp chồng phương thức trong khi đa hình thời gian Runtime được thực hiện bằng cách sử dụng kế thừa và giao diện.

      Quý 2. Đa hình thời gian chạy hoặc điều phối phương thức động là gì?

Trong Java, đa hình thời gian chạy hoặc điều phối phương thức động là một quá trình trong đó lời gọi đến một phương thức ghi đè được giải quyết trong thời gian chạy chứ không phải tại thời gian biên dịch. Trong quá trình này, một phương thức ghi đè được gọi thông qua biến tham chiếu của một lớp cha. Chúng ta hãy xem ví dụ dưới đây để hiểu rõ hơn.

1
2
3
4
5
6
7
số 8
9
10
11
12
13
14
15
16
17
class Car {
void run()
{
System.out.println(“car is running”);
}
}
class Audi extends Car {
void run()
{
System.out.prinltn(“Audi is running safely with 100km”);
}
public static void main(String args[])
{
Car b= new Audi();    //upcasting
b.run();
}
}
Q3. Tính trừu tượng trong Java là gì?

Tính trừu tượng đề cập đến chất lượng của việc xử lý các ý tưởng hơn là các sự kiện. Về cơ bản, nó giải quyết việc ẩn các chi tiết và hiển thị những thứ cần thiết cho người dùng. Vì vậy, bạn có thể nói rằng trừu tượng hóa trong Java là quá trình ẩn các chi tiết triển khai khỏi người dùng và chỉ tiết lộ chức năng cho họ. Tính trừu tượng có thể đạt được theo hai cách:

  1. Các lớp trừu tượng (có thể đạt được 0-100% trừu tượng)
  2. Giao diện (100% trừu tượng có thể đạt được)
Q4. Ý bạn là gì về một giao diện trong Java?

Một giao diện trong Java là bản thiết kế của một lớp hay bạn có thể nói nó là một tập hợp các phương thức trừu tượng và các hằng số tĩnh. Trong một giao diện, mỗi phương thức là công khai và trừu tượng nhưng nó không chứa bất kỳ hàm tạo nào. Như vậy, về cơ bản interface là một nhóm các phương thức liên quan với các phần thân rỗng. Thí dụ:

giao diện công cộng Động vật {
  void chung eat ();
  public void sleep ();
  public void run ();
}
Q5. Sự khác biệt giữa các lớp trừu tượng và giao diện là gì?
Lớp trừu tượng Giao diện
Một lớp trừu tượng có thể cung cấp mã hoàn chỉnh, mã mặc định và / hoặc chỉ các chi tiết phải được ghi đè Một giao diện không thể cung cấp bất kỳ mã nào, chỉ có chữ ký
Trong trường hợp của một lớp trừu tượng, một lớp chỉ có thể mở rộng một lớp trừu tượng Một Lớp có thể triển khai một số giao diện
Một lớp trừu tượng có thể có các phương thức không trừu tượng Tất cả các phương thức của một Giao diện là trừu tượng
Một lớp trừu tượng có thể có các biến cá thể Giao diện không thể có các biến phiên bản
Một lớp trừu tượng có thể có bất kỳ khả năng hiển thị nào: công khai, riêng tư, được bảo vệ Chế độ hiển thị Giao diện phải công khai (hoặc) không
Nếu chúng tôi thêm một phương thức mới vào một lớp trừu tượng thì chúng tôi có tùy chọn cung cấp triển khai mặc định và do đó tất cả mã hiện có có thể hoạt động bình thường Nếu chúng tôi thêm một phương thức mới vào Giao diện thì chúng tôi phải theo dõi tất cả các triển khai của giao diện và xác định việc triển khai cho phương thức mới
Một lớp trừu tượng có thể chứa các hàm tạo Giao diện không được chứa các hàm tạo
Các lớp trừu tượng rất nhanh Các giao diện chậm vì nó yêu cầu thêm hướng dẫn để tìm phương thức tương ứng trong lớp thực tế

Q6. Kế thừa trong Java là gì?

Kế thừa trong Java là khái niệm mà các thuộc tính của một lớp có thể được kế thừa bởi lớp kia. Nó giúp sử dụng lại mã và thiết lập mối quan hệ giữa các lớp khác nhau. Sự kế thừa được thực hiện giữa hai loại lớp:

  1. Lớp cha (Super hoặc Base)
  2. Lớp con (Lớp con hoặc Lớp bắt nguồn)

Một lớp kế thừa các thuộc tính được gọi là Lớp Con trong khi một lớp có các thuộc tính được kế thừa được gọi là Lớp Cha.

Q7. Các kiểu kế thừa khác nhau trong Java là gì?

Java hỗ trợ bốn kiểu kế thừa là:

  1. Kế thừa đơn: Trong kế thừa đơn, một lớp kế thừa các thuộc tính của lớp khác, tức là sẽ chỉ có một lớp cha cũng như một lớp con.
  2. Kế thừa đa cấp: Khi một lớp có nguồn gốc từ một lớp cũng được dẫn xuất từ ​​một lớp khác, tức là một lớp có nhiều hơn một lớp cha nhưng ở các cấp độ khác nhau, kiểu kế thừa như vậy được gọi là Kế thừa đa cấp.
  3. Kế thừa phân cấp: Khi một lớp có nhiều hơn một lớp con (lớp con) hay nói cách khác, nhiều hơn một lớp con có cùng lớp cha, thì kiểu kế thừa đó được gọi là phân cấp.
  4. Thừa kế lai: Thừa kế lai là sự kết hợp của hai hay nhiều kiểu thừa kế.
Q8. Nạp chồng phương thức và ghi đè phương thức là gì? Quá tải phương pháp:
  • Trong Nạp chồng phương thức, các phương thức cùng lớp có cùng tên nhưng mỗi phương thức phải có một số tham số khác nhau hoặc tham số có kiểu và thứ tự khác nhau.
  • Nạp chồng phương thức là “thêm” hoặc “mở rộng” thêm vào hành vi của phương thức.
  • Nó là một đa hình thời gian biên dịch.
  • Các phương thức phải có một chữ ký khác.
  • Nó có thể cần hoặc không cần kế thừa trong Phương pháp Nạp chồng.

Chúng ta hãy xem ví dụ dưới đây để hiểu rõ hơn.

Chương trình giảng dạy
Khóa đào tạo chứng chỉ Java
  • Phiên do người hướng dẫn
  • Nghiên cứu tình huống thực tế
  • Bài tập
  • Quyền truy cập trọn đời
Khám phá chương trình giảng dạy
1
2
3
4
5
6
7
số 8
9
10
11
12
13
14
class Adder {
Static int add(int a, int b)
{
return a+b;
}
Static double add( double a, double b)
{
return a+b;
}
public static void main(String args[])
{
System.out.println(Adder.add(11,11));
System.out.println(Adder.add(12.3,12.6));
}}
Ghi đè phương pháp:  
  • Trong Phương thức Ghi đè, lớp con có cùng một phương thức với cùng tên và chính xác cùng số lượng và kiểu tham số và cùng kiểu trả về như một lớp cha.
  • Ghi đè phương thức là "Thay đổi" hành vi hiện có của phương thức.
  • Nó là một đa hình thời gian chạy.
  • Các phương thức phải có cùng một chữ ký.
  • Nó luôn yêu cầu kế thừa trong Ghi đè phương thức.

Chúng ta hãy xem ví dụ dưới đây để hiểu rõ hơn.

1
2
3
4
5
6
7
số 8
9
10
11
12
13
14
15
class Car {
void run(){
System.out.println(“car is running”);
}
Class Audi extends Car{
void run()
{
System.out.prinltn("Audi is running safely with 100km");
}
public static void main( String args[])
{
Car b=new Audi();
b.run();
}
}
Q9. Bạn có thể ghi đè phương thức private hoặc static trong Java không?

Bạn không thể ghi đè một phương thức riêng hoặc tĩnh trong Java. Nếu bạn tạo một phương thức tương tự với cùng kiểu trả về và các đối số cùng phương thức trong lớp con thì nó sẽ ẩn phương thức lớp cha; điều này được gọi là ẩn phương thức. Tương tự, bạn không thể ghi đè một phương thức private trong lớp con vì nó không thể truy cập được ở đó. Những gì bạn có thể làm là tạo một phương thức riêng khác có cùng tên trong lớp con. Chúng ta hãy xem ví dụ dưới đây để hiểu rõ hơn.

1
2
3
4
5
6
7
số 8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Base {
private static void display() {
System.out.println("Static or class method from Base");
}
public void print() {
System.out.println("Non-static or instance method from Base");
}
class Derived extends Base {
private static void display() {
System.out.println("Static or class method from Derived");
}
public void print() {
System.out.println("Non-static or instance method from Derived");
}
public class test {
public static void main(String args[])
{
Base obj= new Derived();
obj1.display();
obj1.print();
}
}
Q. 10. Đa kế thừa là gì? Nó có được hỗ trợ bởi Java không?

Nếu một lớp con kế thừa thuộc tính từ nhiều lớp được gọi là đa kế thừa. Java không cho phép mở rộng nhiều lớp.

Vấn đề với đa kế thừa là nếu nhiều lớp cha có tên phương thức giống nhau, thì trong thời gian chạy, trình biên dịch sẽ khó quyết định phương thức nào sẽ thực thi từ lớp con.

Do đó, Java không hỗ trợ đa kế thừa. Vấn đề thường được gọi là Vấn đề kim cương.

Q11. Đóng gói trong Java là gì?

Đóng gói là một cơ chế mà bạn liên kết dữ liệu (biến) và mã (phương thức) với nhau như một đơn vị duy nhất. Ở đây, dữ liệu được ẩn khỏi thế giới bên ngoài và chỉ có thể được truy cập thông qua các phương thức lớp hiện tại. Điều này giúp bảo vệ dữ liệu khỏi bất kỳ sửa đổi không cần thiết nào. Chúng ta có thể đạt được tính đóng gói trong Java bằng cách:

  • Khai báo các biến của một lớp là private.
  • Cung cấp các phương thức setter và getter công khai để sửa đổi và xem các giá trị của các biến.
Q12. Hiệp hội là gì?

Hiệp hội là một mối quan hệ mà tất cả các đối tượng có vòng đời riêng của chúng và không có chủ sở hữu. Hãy lấy ví dụ về Giáo viên và Học sinh. Nhiều học sinh có thể liên kết với một giáo viên duy nhất và một học sinh có thể liên kết với nhiều giáo viên nhưng không có quyền sở hữu giữa các đối tượng và cả hai đều có vòng đời riêng của chúng. Những mối quan hệ này có thể là một với một, một với nhiều, nhiều với một và nhiều với nhiều.

Q13. Bạn có nghĩa là gì bởi tổng hợp?

Một tổng hợp là một dạng liên kết chuyên biệt mà tất cả các đối tượng đều có vòng đời riêng của chúng nhưng có quyền sở hữu và đối tượng con không thể thuộc về đối tượng mẹ khác. Hãy lấy một ví dụ về Khoa và giáo viên. Một giáo viên duy nhất không thể thuộc nhiều bộ môn, nhưng nếu chúng ta xóa đối tượng giáo viên bộ môn sẽ không tiêu diệt được. 

Q14. Thành phần trong Java là gì?

Thành phần lại là một dạng Tổng hợp chuyên biệt và chúng ta có thể gọi đây là mối quan hệ “chết”. Nó là một loại tập hợp mạnh mẽ. Đối tượng con không có vòng đời của chúng và nếu đối tượng mẹ xóa tất cả các đối tượng con cũng sẽ bị xóa. Hãy lấy lại một ví dụ về mối quan hệ giữa Nhà và phòng. Nhà có thể chứa nhiều phòng không có sự sống độc lập của phòng và phòng nào cũng không thể thuộc về hai nhà khác nhau nếu ta xóa căn phòng đó sẽ tự động xóa.

Q15. Giao diện đánh dấu là gì?

Giao diện Marker có thể được định nghĩa là giao diện không có thành viên dữ liệu và các chức năng thành viên. Nói một cách đơn giản hơn, một giao diện trống được gọi là giao diện Marker. Các ví dụ phổ biến nhất của giao diện Marker trong Java là Serializable, Cloneable, v.v. Giao diện marker có thể được khai báo như sau.

1
2
public interface Serializable{
}

Q16  Nhân bản đối tượng trong Java là gì?

Nhân bản đối tượng trong Java là quá trình tạo một bản sao chính xác của một đối tượng. Về cơ bản, nó có nghĩa là khả năng tạo ra một đối tượng có trạng thái tương tự như đối tượng ban đầu. Để đạt được điều này, Java cung cấp một phương thức clone ()  để sử dụng chức năng này. Phương thức này tạo ra một thể hiện mới của lớp của đối tượng hiện tại và sau đó khởi tạo tất cả các trường của nó với cùng nội dung chính xác của các trường tương ứng. Đối với đối tượng clone (), giao diện đánh dấu java.lang.Cloneable phải được triển khai để tránh bất kỳ ngoại lệ thời gian chạy nào. Một điều bạn phải lưu ý là Object clone () là một phương thức được bảo vệ, do đó bạn cần ghi đè nó.

Q17. Hàm tạo sao chép trong Java là gì?

Hàm tạo sao chép là một hàm thành viên được sử dụng để khởi tạo một đối tượng bằng cách sử dụng một đối tượng khác cùng lớp. Mặc dù không cần hàm tạo sao chép trong Java vì tất cả các đối tượng đều được chuyển qua tham chiếu. Hơn nữa, Java thậm chí không hỗ trợ tự động chuyển theo giá trị.

Q18. Nạp chồng phương thức khởi tạo trong Java là gì?

Trong Java, nạp chồng phương thức khởi tạo là một kỹ thuật thêm bất kỳ số lượng phương thức khởi tạo nào vào một lớp, mỗi phương thức có một danh sách tham số khác nhau. Trình biên dịch sử dụng số lượng các tham số và kiểu của chúng trong danh sách để phân biệt các hàm tạo đã được nạp chồng.

1
2
3
4
5
6
7
số 8
9
10
11
12
class Demo
{
int i;
public Demo(int a)
{
i=k;
}
public Demo(int a, int b)
{
//body
}
}

Trong trường hợp bạn gặp bất kỳ thách thức nào với những câu hỏi phỏng vấn java này, vui lòng bình luận về vấn đề của bạn trong phần bên dưới. Ngoài Blog Câu hỏi phỏng vấn Java này, nếu bạn muốn được đào tạo từ các chuyên gia về công nghệ này, bạn có thể chọn tham gia khóa đào tạo có cấu trúc từ edureka!

Câu hỏi phỏng vấn Servlets   Q1. Servlet là gì?
  • Java Servlet là công nghệ phía máy chủ để mở rộng khả năng của máy chủ web bằng cách cung cấp hỗ trợ cho phản ứng động và tính bền bỉ của dữ liệu.
  • Các gói javax.servlet và javax.servlet.http cung cấp các giao diện và lớp để viết các servlet của riêng chúng ta.
  • Tất cả các servlet phải triển khai giao diện javax.servlet.Servlet, giao diện này xác định các phương thức vòng đời của servlet. Khi triển khai một dịch vụ chung, chúng ta có thể mở rộng lớp GenericServlet được cung cấp cùng với API Java Servlet. Lớp HttpServlet cung cấp các phương thức, chẳng hạn như doGet () và doPost (), để xử lý các dịch vụ dành riêng cho HTTP.
  • Hầu hết các ứng dụng web được truy cập bằng giao thức HTTP và đó là lý do tại sao chúng tôi chủ yếu mở rộng lớp HttpServlet. Hệ thống phân cấp API Servlet được hiển thị trong hình ảnh dưới đây.

Quý 2. Sự khác biệt giữa phương thức Get và Post là gì?
Được Bài đăng
Số lượng dữ liệu hạn chế có thể được gửi vì dữ liệu được gửi trong tiêu đề. Một lượng lớn dữ liệu có thể được gửi vì dữ liệu được gửi trong nội dung.
 Không được bảo mật vì dữ liệu được hiển thị trong thanh URL.  Được bảo mật vì dữ liệu không được hiển thị trong thanh URL.
 Có thể được đánh dấu  Không thể đánh dấu
 Idempotent  Không lý tưởng
 Nó hiệu quả hơn và được sử dụng nhiều hơn Post  Nó kém hiệu quả hơn và được sử dụng
Q3. Người điều phối yêu cầu là gì?

Giao diện RequestDispatcher được sử dụng để chuyển tiếp yêu cầu tới một tài nguyên khác có thể là HTML, JSP hoặc một servlet khác trong cùng một ứng dụng. Chúng tôi cũng có thể sử dụng điều này để đưa nội dung của một tài nguyên khác vào phản hồi.

Có hai phương pháp được xác định trong giao diện này:

1. tránh về phía trước ()

2. tránh bao gồm ()

Q4. Sự khác biệt giữa phương thức forward () và phương thức sendRedirect () là gì?

 

phương thức forward () Phương thức SendRedirect ()
forward () gửi cùng một yêu cầu đến một tài nguyên khác. Phương thức sendRedirect () luôn gửi yêu cầu mới vì nó sử dụng thanh URL của trình duyệt.
 phương thức forward () hoạt động ở phía máy chủ.  Phương thức sendRedirect () hoạt động ở phía máy khách.
 Phương thức forward () chỉ hoạt động trong máy chủ. Phương thức sendRedirect () hoạt động bên trong và bên ngoài máy chủ.
Q5. Vòng đời của một servlet là gì?

Có 5 giai đoạn trong vòng đời của một servlet:

  1. Servlet được tải
  2. Servlet được khởi tạo
  3. Servlet được khởi tạo
  4. Phục vụ yêu cầu
  5. Servlet bị phá hủy
Q6. Cookie hoạt động như thế nào trong Servlet?
  • Cookie là dữ liệu văn bản được máy chủ gửi đến máy khách và nó được lưu tại máy cục bộ của máy khách.
  • API Servlet cung cấp hỗ trợ cookie thông qua lớp javax.servlet.http.Cookie triển khai các giao diện có thể phân tích và nhân bản.
  • Phương thức getCookies () của HttpServletRequest được cung cấp để lấy mảng Cookie từ yêu cầu, vì không có điểm nào để thêm Cookie vào yêu cầu, không có phương pháp nào để đặt hoặc thêm cookie vào yêu cầu.
  • Tương tự, phương thức addCookie (Cookie c) của HttpServletResponse được cung cấp để đính kèm cookie trong tiêu đề phản hồi, không có phương thức getter nào cho cookie.
Q7. Sự khác biệt giữa ServletContext và ServletConfig là gì?

Sự khác biệt giữa ServletContext và ServletConfig trong Servlets JSP là ở định dạng bảng dưới đây.

ServletConfig ServletContext
Đối tượng cấu hình Servlet đại diện cho một servlet Nó đại diện cho toàn bộ ứng dụng web đang chạy trên JVM cụ thể và chung cho tất cả các servlet
Tham số cục bộ giống như nó được liên kết với servlet cụ thể Tham số toàn cục giống như nó được liên kết với toàn bộ ứng dụng
Đó là một cặp giá trị tên được xác định bên trong phần servlet của tệp web.xml để nó có phạm vi rộng của servlet ServletContext có phạm vi ứng dụng rộng nên hãy xác định bên ngoài thẻ servlet trong tệp web.xml.
Phương thức getServletConfig () được sử dụng để lấy đối tượng cấu hình Phương thức getServletContext () được sử dụng để lấy đối tượng ngữ cảnh.
ví dụ: giỏ hàng của một người dùng là một người dùng cụ thể cho người dùng cụ thể, vì vậy ở đây chúng ta có thể sử dụng cấu hình servlet Để lấy kiểu MIME của tệp hoặc thông tin liên quan đến phiên ứng dụng được lưu trữ bằng đối tượng ngữ cảnh servlet.

Q8. Các phương pháp quản lý phiên khác nhau trong các servlet là gì?

Phiên là trạng thái hội thoại giữa máy khách và máy chủ và nó có thể bao gồm nhiều yêu cầu và phản hồi giữa máy khách và máy chủ. Vì cả HTTP và Web Server đều không có trạng thái, cách duy nhất để duy trì phiên là khi một số thông tin duy nhất về phiên (id phiên) được chuyển giữa máy chủ và máy khách trong mọi yêu cầu và phản hồi.

Một số cách phổ biến để quản lý phiên trong các servlet là:

  1. Xác thực Người dùng
  2. Trường ẩn HTML
  3. Bánh quy
  4. Viết lại URL
  5. API quản lý phiên

Trong trường hợp bạn gặp bất kỳ thách thức nào với những câu hỏi phỏng vấn java này, vui lòng bình luận vấn đề của bạn trong phần bên dưới.Ngoài Blog Câu hỏi phỏng vấn Java này, nếu bạn muốn được đào tạo từ các chuyên gia về công nghệ này, bạn có thể chọn tham gia khóa đào tạo có cấu trúc từ edureka! Nhấp vào bên dưới để biết thêm.

Câu hỏi phỏng vấn JDBC  1. JDBC Driver là gì?

JDBC Driver là một thành phần phần mềm cho phép ứng dụng java tương tác với cơ sở dữ liệu. Có 4 loại trình điều khiển JDBC:

  1. Trình điều khiển cầu JDBC-ODBC
  2. Trình điều khiển API gốc (một phần trình điều khiển java)
  3. Trình điều khiển Giao thức mạng (trình điều khiển java hoàn toàn)
  4. Trình điều khiển mỏng (trình điều khiển java hoàn toàn)
2. Nêu các bước để kết nối với cơ sở dữ liệu trong java?
  • Đăng ký hạng lái xe
  • Tạo kết nối
  • Tạo tuyên bố
  • Thực thi truy vấn
  • Đóng kết nối
3. Các thành phần API JDBC là gì?

Gói java.sql chứa các giao diện và lớp cho API JDBC.

Giao diện:
  • Kết nối
  • Tuyên bố
  • Chuẩn bị sẵn sàng
  • ResultSet
  • ResultSetMetaData
  • DatabaseMetaData
  • CallableStatement, v.v.
Các lớp học:
  • DriverManager
  • Bãi
  • Clob
  • Các loại
  • SQLException, v.v.
4. Vai trò của lớp JDBC DriverManager là gì?

Các DriverManager lớp quản lý các trình điều khiển đã đăng ký. Nó có thể được sử dụng để đăng ký và hủy đăng ký trình điều khiển. Nó cung cấp phương thức gốc trả về phiên bản của Connection.

5. Giao diện JDBC Connection là gì?

Các giao diện kết nối duy trì một phiên họp với các cơ sở dữ liệu. Nó có thể được sử dụng để quản lý giao dịch. Nó cung cấp các phương thức gốc trả về thể hiện của Statement, PreparedStatement, CallableStatement và DatabaseMetaData.

6. Mục đích của giao diện JDBC ResultSet là gì?

Đối tượng ResultSet đại diện cho một hàng của bảng. Nó có thể được sử dụng để thay đổi con trỏ trỏ chuột và lấy thông tin từ cơ sở dữ liệu.

7. Giao diện JDBC ResultSetMetaData là gì?

Giao diện ResultSetMetaData trả về thông tin của bảng như tổng số cột, tên cột, loại cột, v.v.

8. Giao diện JDBC DatabaseMetaData là gì?

Giao diện DatabaseMetaData trả về thông tin của cơ sở dữ liệu như tên người dùng, tên trình điều khiển, phiên bản trình điều khiển, số bảng, số lượt xem, v.v.

9. Ý bạn là gì khi xử lý hàng loạt trong JDBC?

Xử lý hàng loạt giúp bạn nhóm các câu lệnh SQL liên quan thành một lô và thực thi chúng thay vì thực hiện một truy vấn đơn lẻ. Bằng cách sử dụng kỹ thuật xử lý hàng loạt trong JDBC, bạn có thể thực hiện nhiều truy vấn giúp hiệu suất nhanh hơn.

10. Sự khác biệt giữa thi hành, thực thi, truy vấn thực thi, thi hành trình duyệt?

Thực thi câu lệnh (Truy vấn chuỗi) được sử dụng để thực thi bất kỳ truy vấn SQL nào và nó trả về TRUE nếu kết quả là Tập kết quả, chẳng hạn như chạy truy vấn Chọn. Kết quả là FALSE khi không có đối tượng ResultSet, chẳng hạn như đang chạy các truy vấn Chèn hoặc Cập nhật. Chúng ta có thể sử dụng getResultSet () để lấy ResultSet và phương thức getUpdateCount () để truy xuất số lượng cập nhật.

Câu lệnh executeQuery (Truy vấn chuỗi) được sử dụng để thực hiện các truy vấn Chọn và trả về Tập kết quả. ResultSet trả về không bao giờ là null ngay cả khi không có bản ghi nào phù hợp với truy vấn. Khi thực hiện các truy vấn chọn, chúng ta nên sử dụng phương thức executeQuery để nếu ai đó cố thực hiện câu lệnh insert / update, nó sẽ ném ra java.sql.SQLException với thông báo “Phương thức executeQuery không thể được sử dụng để cập nhật”.

Câu lệnh executeUpdate (Truy vấn chuỗi ) được sử dụng để thực thi các câu lệnh Chèn / Cập nhật / Xóa (DML) hoặc câu lệnh DDL không trả về kết quả nào. Đầu ra là int và bằng với số hàng cho các câu lệnh Ngôn ngữ thao tác dữ liệu SQL (DML). Đối với các câu lệnh DDL, đầu ra là 0.

Bạn chỉ nên sử dụng phương thức execute () khi bạn không chắc chắn về kiểu câu lệnh còn lại hãy sử dụng phương thức executeQuery hoặc executeUpdate.

Q11. Bạn hiểu gì về Tuyên bố của JDBC?

Các câu lệnh JDBC về cơ bản là các câu lệnh được sử dụng để gửi các lệnh SQL đến cơ sở dữ liệu và lấy lại dữ liệu từ cơ sở dữ liệu. Các phương thức khác nhau như execute (), executeUpdate (), executeQuery, v.v. được cung cấp bởi JDBC để tương tác với cơ sở dữ liệu.

JDBC hỗ trợ 3 loại câu lệnh:

  1. Câu lệnh: Được sử dụng để truy cập mục đích chung vào cơ sở dữ liệu và thực hiện truy vấn SQL tĩnh trong thời gian chạy.
  2. PreparedStatement: Được sử dụng để cung cấp các tham số đầu vào cho truy vấn trong quá trình thực thi.
  3. CallableStatement: Được sử dụng để truy cập các thủ tục được lưu trữ trong cơ sở dữ liệu và giúp chấp nhận các tham số thời gian chạy.

Trong trường hợp bạn gặp bất kỳ thách thức nào với những câu hỏi phỏng vấn java này, vui lòng bình luận vấn đề của bạn trong phần bên dưới. Ngoài Blog Câu hỏi phỏng vấn Java này, nếu bạn muốn được đào tạo từ các chuyên gia về công nghệ này, bạn có thể chọn tham gia khóa đào tạo có cấu trúc từ edureka!

Câu hỏi phỏng vấn mùa xuân  Q1. Spring là gì?

Wikipedia định nghĩa khuôn khổ Spring là “một khuôn khổ ứng dụng và sự đảo ngược của vùng chứa điều khiển cho nền tảng Java. Các tính năng cốt lõi của khuôn khổ có thể được sử dụng bởi bất kỳ ứng dụng Java nào, nhưng có những phần mở rộng để xây dựng các ứng dụng web trên nền tảng Java EE ”. Spring về cơ bản là một framework tích hợp, nhẹ, có thể được sử dụng để phát triển các ứng dụng doanh nghiệp trong java.

Quý 2. Đặt tên cho các mô-đun khác nhau của Spring framework.

Một số mô-đun Spring Framework quan trọng là:

  • Bối cảnh mùa xuân - để tiêm phụ thuộc.
  • Spring AOP - dành cho lập trình hướng khía cạnh.
  • Spring DAO - cho các hoạt động cơ sở dữ liệu sử dụng mẫu DAO
  • Spring JDBC - hỗ trợ JDBC và DataSource.
  • Spring ORM - hỗ trợ các công cụ ORM như Hibernate
  • Mô-đun Web Mùa xuân - để tạo các ứng dụng web.
  • Spring MVC - Triển khai Model-View-Controller để tạo các ứng dụng web, dịch vụ web, v.v.
Q3. Liệt kê một số chú thích quan trọng trong cấu hình Spring dựa trên chú thích.

Các chú thích quan trọng là:

  • @Cần thiết
  • @ Không mong muốn
  • @Qualifier
  • @Nguồn
  • @PostConstruct
  • @PreDestroy
Q4. Giải thích Bean trong Spring và Liệt kê các Phạm vi khác nhau của Spring bean.

Đậu là đối tượng tạo thành xương sống của ứng dụng Spring. Chúng được quản lý bởi Spring IoC container. Nói cách khác, bean là một đối tượng được khởi tạo, lắp ráp và quản lý bởi một vùng chứa Spring IoC.

Có năm Phạm vi được xác định trong Spring bean.

  • Singleton : Chỉ một thể hiện của bean sẽ được tạo cho mỗi vùng chứa. Đây là phạm vi mặc định cho Spring bean. Trong khi sử dụng phạm vi này, hãy đảm bảo rằng spring bean không có các biến phiên bản được chia sẻ, nếu không nó có thể dẫn đến các vấn đề không nhất quán dữ liệu vì nó không an toàn cho chuỗi.
  • Nguyên mẫu : Một thể hiện mới sẽ được tạo mỗi khi bean được yêu cầu.
  • Yêu cầu : Đây cũng giống như phạm vi nguyên mẫu, tuy nhiên nó có nghĩa là được sử dụng cho các ứng dụng web. Một phiên bản mới của bean sẽ được tạo cho mỗi yêu cầu HTTP.
  • Phiên : Một bean mới sẽ được tạo cho mỗi phiên HTTP bởi vùng chứa.
  • Global-session : Nó được sử dụng để tạo các phiên toàn cầu cho các ứng dụng Portlet.
Q5. Giải thích vai trò của DispatcherServlet và ContextLoaderListener.

DispatcherServlet về cơ bản là bộ điều khiển phía trước trong ứng dụng Spring MVC khi nó tải tệp cấu hình spring bean và khởi tạo tất cả các bean đã được cấu hình. Nếu chú thích được bật, nó cũng quét các gói để định cấu hình bất kỳ bean nào được chú thích bằng chú thích @Component, @Controller, @Repository hoặc @Service.

Mặt khác , ContextLoaderListener là trình lắng nghe để khởi động và tắt WebApplicationContext trong Spring root. Một số chức năng quan trọng của nó bao gồm gắn vòng đời của Ngữ cảnh ứng dụng vào vòng đời của ServletContext và tự động hóa việc tạo ApplicationContext.

Q6. Sự khác biệt giữa phương thức tiêm hàm khởi tạo và tiêm bộ định tuyến là gì?
Không. Constructor Injection Setter tiêm
 1)  Không tiêm một phần  Tiêm một phần
 2)  Không ghi đè thuộc tính setter  Ghi đè thuộc tính phương thức khởi tạo nếu cả hai đều được xác định.
 3) Tạo phiên bản mới nếu có bất kỳ sửa đổi nào xảy ra Không tạo phiên bản mới nếu bạn thay đổi giá trị thuộc tính
 4)   Tốt hơn cho quá nhiều tài sản  Tốt hơn cho một số tài sản.
Q7. Autowiring trong Spring là gì? Các chế độ tự động viết thư là gì?

Autowiring cho phép lập trình viên tự động đưa bean vào. Chúng ta không cần viết logic tiêm rõ ràng. Hãy xem đoạn mã để tiêm bean bằng cách sử dụng tiêm phụ thuộc.

Đào tạo về Lập trình & Khung
  1. <bean id = “emp” class “com.javatpoint.Empleteee” autowire = “byName” />  

Các chế độ tự động cung cấp được đưa ra dưới đây:

Không. Chế độ Sự miêu tả
 1)  Không  đây là chế độ mặc định, có nghĩa là tính năng tự động không được kích hoạt.
 2)  bằng tên  Tiêm bean dựa trên tên thuộc tính. Nó sử dụng phương pháp setter.
 3)  theo loại  Tiêm bean dựa trên loại thuộc tính. Nó sử dụng phương pháp setter.
 4)  constructor  Nó chèn bean bằng cách sử dụng hàm tạo
Q8. Làm thế nào để xử lý các ngoại lệ trong Spring MVC Framework?

Spring MVC Framework cung cấp các cách sau để giúp chúng tôi đạt được khả năng xử lý ngoại lệ mạnh mẽ.

Dựa trên bộ điều khiển:

Chúng ta có thể định nghĩa các phương thức xử lý ngoại lệ trong các lớp bộ điều khiển của chúng ta. Tất cả những gì chúng ta cần là chú thích các phương thức này bằng chú thích @ExceptionHandler.

Trình xử lý ngoại lệ toàn cầu:

Xử lý ngoại lệ là một mối quan tâm xuyên suốt và Spring cung cấp chú thích @ControllerAdvice mà chúng ta có thể sử dụng với bất kỳ lớp nào để xác định trình xử lý ngoại lệ toàn cầu của chúng ta.

Triển khai HandlerExceptionResolver: 

Đối với các trường hợp ngoại lệ chung, hầu hết thời gian chúng tôi phân phát các trang tĩnh. Spring Framework cung cấp giao diện HandlerExceptionResolver mà chúng ta có thể triển khai để tạo trình xử lý ngoại lệ chung. Lý do đằng sau cách bổ sung này để xác định trình xử lý ngoại lệ toàn cục là Spring framework cũng cung cấp các lớp triển khai mặc định mà chúng ta có thể xác định trong tệp cấu hình spring bean của mình để nhận được các lợi ích xử lý ngoại lệ của Spring framework.

Q9. Một số chú thích quan trọng của Mùa xuân mà bạn đã sử dụng là gì?

Một số chú thích Spring mà tôi đã sử dụng trong dự án của mình là:

@Controller - dành cho các lớp bộ điều khiển trong dự án Spring MVC.

@RequestMapping - để định cấu hình ánh xạ URI trong các phương thức xử lý bộ điều khiển. Đây là một chú thích rất quan trọng, vì vậy bạn nên xem qua các ví dụ về Spring MVC RequestMapping Annotation

@ResponseBody - để gửi Đối tượng dưới dạng phản hồi, thường để gửi dữ liệu XML hoặc JSON dưới dạng phản hồi.

@PathVariable - để ánh xạ các giá trị động từ URI tới các đối số của phương thức xử lý.

@Autowired - cho autowiring phụ thuộc vào đậu mùa xuân.

@Qualifier - với chú thích @Autowords để tránh nhầm lẫn khi có nhiều trường hợp của loại bean.

@Service - dành cho các lớp dịch vụ.

@Scope - để định cấu hình phạm vi của Spring bean.

@Configuration, @ComponentScan và @Bean - dành cho các cấu hình dựa trên java.

Chú thích AspectJ để định cấu hình các khía cạnh và lời khuyên, @Aspect, @Before, @After, @Around, @Pointcut, v.v.

Q. 10. Làm thế nào để tích hợp Spring và Hibernate Frameworks?

Chúng ta có thể sử dụng mô-đun Xuân ORM để tích hợp các khuôn khổ mùa xuân và Hibernate nếu bạn đang sử dụng Hibernate 3+ nơi SessionFactory cung cấp phiên hiện tại, sau đó bạn nên tránh sử dụng HibernateTemplate hoặc HibernateDaoSupport lớp và tốt hơn để mô hình DAO sử dụng với dependency injection cho hội nhập.

Ngoài ra, Spring ORM cung cấp hỗ trợ để sử dụng quản lý giao dịch khai báo của Spring, vì vậy bạn nên sử dụng điều đó thay vì sử dụng mã boiler-plate ở chế độ ngủ đông để quản lý giao dịch. 

Q11. Kể tên các kiểu quản lý giao dịch mà Spring hỗ trợ.

Spring hỗ trợ hai loại quản lý giao dịch. Họ đang:

  1. Quản lý giao dịch có lập trình:  Trong đó, giao dịch được quản lý với sự trợ giúp của lập trình. Nó cung cấp cho bạn tính linh hoạt cao, nhưng rất khó để duy trì.
  2. Quản lý giao dịch khai báo:  Trong điều này, quản lý giao dịch được tách biệt với mã doanh nghiệp. Chỉ các chú thích hoặc cấu hình dựa trên XML được sử dụng để quản lý các giao dịch.

Trong trường hợp bạn gặp bất kỳ thách thức nào với những câu hỏi phỏng vấn java này, vui lòng bình luận vấn đề của bạn trong phần bên dưới. Ngoài Blog câu hỏi phỏng vấn Java này, nếu bạn muốn được đào tạo từ các chuyên gia về công nghệ này, bạn có thể chọn đào tạo có cấu trúc từ edureka!

Câu hỏi phỏng vấn ngủ đông 1. Hibernate Framework là gì?

Ánh xạ quan hệ đối tượng hoặc ORM là kỹ thuật lập trình để ánh xạ các đối tượng mô hình miền ứng dụng vào các bảng cơ sở dữ liệu quan hệ. Hibernate là công cụ ORM dựa trên Java cung cấp một khuôn khổ để ánh xạ các đối tượng miền ứng dụng với các bảng cơ sở dữ liệu quan hệ và ngược lại.

Hibernate cung cấp một triển khai tham chiếu của Java Persistence API, làm cho nó trở thành một lựa chọn tuyệt vời như một công cụ ORM với lợi ích của việc ghép nối lỏng lẻo. Chúng tôi có thể sử dụng API liên tục Hibernate cho các hoạt động CRUD. Hibernate framework cung cấp tùy chọn ánh xạ các đối tượng java cũ thuần túy sang các bảng cơ sở dữ liệu truyền thống với việc sử dụng các chú thích JPA cũng như cấu hình dựa trên XML.

Tương tự, cấu hình ngủ đông rất linh hoạt và có thể được thực hiện từ tệp cấu hình XML cũng như theo chương trình.

2. Những lợi ích quan trọng của việc sử dụng Hibernate Framework?

Một số lợi ích quan trọng của việc sử dụng hibernate framework là:

  1. Hibernate loại bỏ tất cả mã boiler-plate đi kèm với JDBC và quản lý tài nguyên, vì vậy chúng tôi có thể tập trung vào logic nghiệp vụ.
  2. Khung công tác Hibernate cung cấp hỗ trợ cho XML cũng như các chú thích JPA, giúp cho việc triển khai mã của chúng tôi trở nên độc lập.
  3. Hibernate cung cấp một ngôn ngữ truy vấn mạnh mẽ (HQL) tương tự như SQL. Tuy nhiên, HQL hoàn toàn hướng đối tượng và hiểu các khái niệm như kế thừa, đa hình và liên kết.
  4. Hibernate là một dự án mã nguồn mở từ Red Hat Community và được sử dụng trên toàn thế giới. Điều này làm cho nó trở thành một sự lựa chọn tốt hơn những người khác vì đường cong học tập nhỏ và có rất nhiều tài liệu trực tuyến và trợ giúp dễ dàng có sẵn trên các diễn đàn.
  5. Hibernate dễ dàng tích hợp với các khung Java EE khác, nó phổ biến đến mức Spring Framework cung cấp hỗ trợ tích hợp để tích hợp hibernate với các ứng dụng Spring.
  6. Hibernate hỗ trợ khởi tạo lười biếng bằng cách sử dụng các đối tượng proxy và chỉ thực hiện các truy vấn cơ sở dữ liệu thực tế khi nó được yêu cầu.
  7. Bộ nhớ đệm Hibernate giúp chúng tôi đạt được hiệu suất tốt hơn.
  8. Đối với tính năng cụ thể của nhà cung cấp cơ sở dữ liệu, ngủ đông là phù hợp vì chúng ta cũng có thể thực thi các truy vấn sql gốc.

Nhìn chung, hibernate là sự lựa chọn tốt nhất trên thị trường hiện tại cho công cụ ORM, nó chứa tất cả các tính năng mà bạn cần có trong một công cụ ORM.

3. Giải thích kiến ​​trúc Hibernate.

4. Sự khác nhau giữa phương thức get và load là gì?

Sự khác biệt giữa phương thức get () và load () được đưa ra dưới đây.

Không. được() tải ()
 1)  Trả về null nếu không tìm thấy đối tượng. Ném ObjectNotFoundException nếu một đối tượng không được tìm thấy.
 2)  phương thức get () luôn đánh vào cơ sở dữ liệu .  phương thức load () không đánh vào cơ sở dữ liệu.
 3)  Nó trả về một đối tượng thực, không phải một proxy .  Nó trả về một đối tượng proxy.
 4) Nó nên được sử dụng nếu bạn không chắc chắn về sự tồn tại của cá thể. Nó sẽ được sử dụng nếu bạn chắc chắn rằng phiên bản tồn tại.
5. Ưu điểm của Hibernate so với JDBC là gì?

Một số lợi thế quan trọng của Hibernate framework so với JDBC là:

  1. Hibernate loại bỏ rất nhiều mã boiler-plate đi kèm với API JDBC, mã trông sạch hơn và dễ đọc.
  2. Hibernate hỗ trợ kế thừa, liên kết và tập hợp. Các tính năng này không có trong API JDBC.
  3. Hibernate ngầm cung cấp quản lý giao dịch, trên thực tế, hầu hết các truy vấn không thể được thực hiện bên ngoài giao dịch. Trong API JDBC, chúng ta cần viết mã để quản lý giao dịch bằng cách sử dụng cam kết và khôi phục. 
  4. JDBC API ném SQLException là một ngoại lệ đã được kiểm tra, vì vậy chúng ta cần viết nhiều mã khối try-catch. Hầu hết các lần nó là thừa trong mỗi cuộc gọi JDBC và được sử dụng để quản lý giao dịch. Hibernate bao bọc các ngoại lệ JDBC và ném ngoại lệ chưa kiểm tra JDBCException hoặc HibernateException , vì vậy chúng ta không cần phải viết mã để xử lý nó. Quản lý giao dịch tích hợp sẵn Hibernate loại bỏ việc sử dụng khối try-catch.
  5. Ngôn ngữ truy vấn Hibernate (HQL) hướng đối tượng hơn và gần với ngôn ngữ lập trình Java. Đối với JDBC, chúng ta cần viết các truy vấn SQL gốc.
  6. Hibernate hỗ trợ bộ nhớ đệm tốt hơn cho hiệu suất, các truy vấn JDBC không được lưu vào bộ đệm do đó hiệu suất thấp.
  7. Hibernate cung cấp tùy chọn mà qua đó chúng ta cũng có thể tạo các bảng cơ sở dữ liệu, vì các bảng JDBC phải tồn tại trong cơ sở dữ liệu.
  8. Cấu hình Hibernate giúp chúng tôi sử dụng JDBC như kết nối cũng như JNDI DataSource cho nhóm kết nối. Đây là một tính năng rất quan trọng trong ứng dụng doanh nghiệp và hoàn toàn không có trong API JDBC.
  9. Hibernate hỗ trợ các chú thích JPA, do đó mã độc lập với việc triển khai và có thể dễ dàng thay thế bằng các công cụ ORM khác. Mã JDBC được kết hợp rất chặt chẽ với ứng dụng.

Trong trường hợp bạn gặp bất kỳ thách thức nào với những câu hỏi phỏng vấn Java này, vui lòng bình luận về vấn đề của bạn trong phần bên dưới. Ngoài Blog câu hỏi phỏng vấn Java này, nếu bạn muốn được đào tạo từ các chuyên gia về công nghệ này, bạn có thể chọn đào tạo có cấu trúc từ edureka!

Câu hỏi phỏng vấn Java:  JSP 1. Các phương thức vòng đời cho jsp là gì?
Phương pháp Sự miêu tả
 public void jspInit () Nó chỉ được gọi một lần, giống như phương thức init của servlet.
public void _jspService (ServletRequest request, ServletResponse) ném ServletException, IOException Nó được gọi theo mỗi yêu cầu, giống như phương thức service () của servlet.
 public void jspDestroy () Nó chỉ được gọi một lần, giống như phương thức hủy () của servlet.
2. Các đối tượng ngầm định của JSP là gì?

JSP cung cấp 9 đối tượng ngầm theo mặc định. Chúng như sau:

Vật Kiểu
1) ra ngoài  JspWriter
2) yêu cầu  HttpServletRequest
3) phản hồi  HttpServletResponse
4) cấu hình  ServletConfig
5) phiên  HttpSession
6) ứng dụng  ServletContext
7) pageContext  PageContext
8) trang  Vật
9) ngoại lệ  Có thể ném
3. Sự khác biệt giữa bao gồm chỉ thị và bao gồm hành động là gì?
bao gồm chỉ thị bao gồm hành động
Chỉ thị bao gồm nội dung tại thời điểm dịch trang. Hành động bao gồm nội dung tại thời điểm yêu cầu.
Lệnh include bao gồm nội dung ban đầu của trang để kích thước trang tăng lên trong thời gian chạy. Hành động bao gồm không bao gồm nội dung gốc thay vì gọi phương thức include () của lớp do Nhà cung cấp cung cấp.
 Nó tốt hơn cho các trang tĩnh.  Nó tốt hơn cho các trang động.
4. Làm thế nào để tắt bộ nhớ đệm trên nút quay lại của trình duyệt?

%
response.setHeader (“Cache-Control”, “no-store”);
response.setHeader (“Pragma”, “no-cache”);
response.setHeader (“Hết hạn”, “0”); // ngăn chặn bộ nhớ đệm tại máy chủ proxy
>   

5. Các thẻ khác nhau được cung cấp trong JSTL là gì?

Có 5 loại thẻ JSTL.

  1. thẻ cốt lõi
  2. thẻ sql
  3. thẻ xml
  4. thẻ quốc tế hóa
  5. thẻ chức năng
6. Làm thế nào để vô hiệu hóa phiên trong JSP?
  1. % @ page session “false” >   
7. Làm cách nào để xóa Cookie trong JSP?

Đoạn mã sau giải thích cách xóa Cookie trong JSP:

1
2
3
4
5
6
7
số 8
9
10
11
Cookie mycook = new Cookie("name1","value1");
 
response.addCookie(mycook1);
 
Cookie killmycook = new Cookie("mycook1","value1");
 
killmycook . set MaxAge ( 0 );
 
killmycook . set Path ("/");
 
killmycook . addCookie ( killmycook 1 );
8. Giải thích phương thức jspDestroy ().

Phương thức jspDestry () được gọi từ giao diện javax.servlet.jsp.JspPage bất cứ khi nào một trang JSP sắp bị hủy. Các phương thức phá hủy Servlet có thể dễ dàng bị ghi đè để thực hiện dọn dẹp, như khi đóng kết nối cơ sở dữ liệu.

9. JSP tốt hơn công nghệ Servlet như thế nào?

JSP là một công nghệ ở phía máy chủ giúp tạo nội dung đơn giản. Chúng tập trung vào tài liệu, trong khi các servlet là các chương trình. Một trang máy chủ Java có thể chứa các đoạn chương trình Java, chúng thực thi và khởi tạo các lớp Java. Tuy nhiên, chúng xảy ra bên trong tệp mẫu HTML. Nó cung cấp khuôn khổ cho sự phát triển của một Ứng dụng Web.

10. Tại sao chúng ta không nên cấu hình các thẻ chuẩn JSP trong web.xml?

Chúng ta không cần phải định cấu hình các thẻ chuẩn JSP trong web.xml vì khi vùng chứa tải ứng dụng web và tìm thấy các tệp TLD, nó sẽ tự động định cấu hình chúng để được sử dụng trực tiếp trong các trang JSP của ứng dụng. Chúng ta chỉ cần đưa nó vào trang JSP bằng cách sử dụng chỉ thị taglib.

11. Bạn sẽ sử dụng JSP EL như thế nào để lấy tên phương thức HTTP?

Sử dụng đối tượng ngầm pageContext JSP EL, bạn có thể lấy tham chiếu đối tượng yêu cầu và sử dụng toán tử dấu chấm để truy xuất tên phương thức HTTP trong trang JSP. Mã JSP EL cho mục đích này sẽ giống như $ {pageContext.request.method}.

Trong trường hợp bạn gặp bất kỳ thách thức nào với những câu hỏi phỏng vấn java này, vui lòng bình luận về vấn đề của bạn trong phần bên dưới. Ngoài Blog câu hỏi phỏng vấn Java này, nếu bạn muốn được đào tạo từ các chuyên gia về công nghệ này, bạn có thể chọn đào tạo có cấu trúc từ edureka!

Câu hỏi phỏng vấn Java ngoại lệ và chuỗi Q1. Sự khác biệt giữa Lỗi và Ngoại lệ là gì?

Lỗi là tình trạng không thể khôi phục xảy ra trong thời gian chạy. Chẳng hạn như lỗi OutOfMemory. Những lỗi JVM này bạn không thể sửa chữa chúng trong thời gian chạy. Mặc dù có thể gặp lỗi trong khối bắt nhưng việc thực thi ứng dụng sẽ tạm dừng và không thể khôi phục được.

Trong khi ngoại lệ là các điều kiện xảy ra do đầu vào không hợp lệ hoặc do lỗi của con người, v.v. Ví dụ: FileNotFoundException sẽ được ném nếu tệp được chỉ định không tồn tại. Hoặc NullPointerException sẽ diễn ra nếu bạn thử sử dụng tham chiếu null. Trong hầu hết các trường hợp, có thể khôi phục từ một ngoại lệ (có thể bằng cách cung cấp cho người dùng phản hồi để nhập các giá trị thích hợp, v.v.

Quý 2. Bạn có thể xử lý các ngoại lệ của Java như thế nào?

Có năm từ khóa được sử dụng để xử lý các ngoại lệ trong Java: 

  1. thử
  2. nắm lấy
  3. cuối cùng
  4. phi
  5. ném
Q3. Sự khác biệt giữa Ngoại lệ được Kiểm tra và Ngoại lệ Không được Kiểm tra là gì? Kiểm tra ngoại lệ
  • Các lớp mở rộng lớp Throwable ngoại trừ RuntimeException và Error được gọi là các ngoại lệ đã kiểm tra. 
  • Các ngoại lệ đã kiểm tra được kiểm tra tại thời điểm biên dịch.
  • Ví dụ: IOException, SQLException, v.v.
Ngoại lệ bỏ chọn
  • Các lớp mở rộng RuntimeException được gọi là các ngoại lệ không được kiểm tra. 
  • Các ngoại lệ không được kiểm tra sẽ không được kiểm tra tại thời điểm biên dịch.
  • Ví dụ: ArithmeticException, NullPointerException, v.v.
Q4. Mục đích của các từ khóa cuối cùng, cuối cùng và cuối cùng thực hiện là gì?  Sau cùng:

Final được sử dụng để áp dụng các hạn chế về lớp, phương thức và biến. Không thể kế thừa một lớp cuối cùng, không thể ghi đè phương thức cuối cùng và không thể thay đổi giá trị biến cuối cùng. Chúng ta hãy xem ví dụ dưới đây để hiểu rõ hơn.

1
2
3
4
5
6
class FinalVarExample {
public static void main( String args[])
{
final int a=10;   // Final variable
a=50;             //Error as value can't be changed
}
Cuối cùng

Cuối cùng được sử dụng để đặt mã quan trọng, nó sẽ được thực thi cho dù ngoại lệ có được xử lý hay không. Chúng ta hãy xem ví dụ dưới đây để hiểu rõ hơn.

1
2
3
4
5
6
7
số 8
9
10
11
12
class FinallyExample {
public static void main(String args[]){
try {
int x=100;
}
catch(Exception e) {
System.out.println(e);
}
finally {
System.out.println("finally block is executing");}
}}
}
Hoàn thiện

Finalize được sử dụng để thực hiện xử lý dọn dẹp ngay trước khi đối tượng được thu gom rác. Chúng ta hãy xem ví dụ dưới đây để hiểu rõ hơn.

1
2
3
4
5
6
7
số 8
9
10
11
12
13
class FinalizeExample {
public void finalize() {
System.out.println("Finalize is called");
}
public static void main(String args[])
{
FinalizeExample f1=new FinalizeExample();
FinalizeExample f2=new FinalizeExample();
f1= NULL;
f2=NULL;
System.gc();
}
}
 Q5. Sự khác biệt giữa ném và ném là gì? 
ném từ khóa ném từ khóa
Throw được sử dụng để ném một cách rõ ràng một ngoại lệ. Ném được sử dụng để khai báo một ngoại lệ.
Các ngoại lệ đã kiểm tra không thể được phổ biến chỉ với hành động ném. Ngoại lệ đã kiểm tra có thể được lan truyền bằng cách ném.
Ném được theo sau bởi một thể hiện. Ném được theo sau bởi lớp.
Ném được sử dụng trong phương pháp này. Ném được sử dụng với chữ ký phương thức.
Bạn không thể ném nhiều ngoại lệ Bạn có thể khai báo nhiều ngoại lệ, ví dụ như public void method () ném IOException, SQLException.
Q6. Phân cấp ngoại lệ trong java là gì?

Hệ thống phân cấp như sau:

Chương trình giảng dạy
Khóa đào tạo chứng chỉ Java Các đợt Ngày trong tuần / Cuối tuầnXem chi tiết lô

Throwable là một lớp cha của tất cả các lớp Ngoại lệ. Có hai loại Ngoại lệ: Ngoại lệ được kiểm tra và Ngoại lệ không được kiểm tra hoặc RunTimeExceptions. Cả hai loại ngoại lệ đều mở rộng lớp Ngoại lệ trong khi lỗi được phân loại thêm thành lỗi Máy ảo và lỗi Xác nhận.

Q7. Cách tạo Ngoại lệ tùy chỉnh?

Để tạo ngoại lệ của riêng bạn, hãy mở rộng lớp Ngoại lệ hoặc bất kỳ lớp con nào của nó.

  • class New1Exception mở rộng Exception {} // điều này sẽ tạo Checked Exception
  • class NewException mở rộng IOException {} // điều này sẽ tạo ngoại lệ Checked
  • class NewException mở rộng NullPonterExcpetion {} // điều này sẽ tạo ngoại lệ UnChecked
Q8. Các phương thức quan trọng của Lớp ngoại lệ Java là gì?

Ngoại lệ và tất cả các lớp con của nó không cung cấp bất kỳ phương thức cụ thể nào và tất cả các phương thức đều được định nghĩa trong lớp cơ sở Throwable.

  1. String getMessage () - Phương thức này trả về thông báo String of Throwable và thông báo có thể được cung cấp trong khi tạo ngoại lệ thông qua hàm tạo của nó.
  2. String getLocalizedMessage ( ) - Phương thức này được cung cấp để các lớp con có thể ghi đè nó để cung cấp thông báo ngôn ngữ cụ thể cho chương trình gọi. Việc triển khai lớp có thể ném của phương thức này chỉ cần sử dụng phương thức getMessage () để trả về thông báo ngoại lệ.
  3. Đồng bộ hóa Throwable getCause () - Phương thức này trả về nguyên nhân của ngoại lệ hoặc id null mà nguyên nhân là không xác định.
  4. String toString () - Phương thức này trả về thông tin về Throwable ở định dạng String, String trả về chứa tên của lớp Throwable và thông báo được bản địa hóa.
  5. void printStackTrace () - Phương thức này in thông tin dấu vết ngăn xếp vào luồng lỗi chuẩn, phương thức này được nạp chồng và chúng ta có thể truyền PrintStream hoặc PrintWriter làm đối số để ghi thông tin dấu vết ngăn xếp vào tệp hoặc luồng.
Q9. Sự khác biệt giữa quy trình và chủ đề là gì?
  Quá trình Chủ đề
Định nghĩa Một phiên bản thực thi của một chương trình được gọi là một tiến trình. Một luồng là một tập con của quá trình.
Giao tiếp Các quy trình phải sử dụng giao tiếp giữa các quy trình để giao tiếp với các quy trình anh em. Các luồng có thể giao tiếp trực tiếp với các luồng khác trong quy trình của nó.
Điều khiển Các quy trình chỉ có thể thực hiện quyền kiểm soát đối với các quy trình con. Các luồng có thể kiểm soát đáng kể các luồng của cùng một quá trình.
Những thay đổi Bất kỳ thay đổi nào trong quy trình mẹ không ảnh hưởng đến các quy trình con. Bất kỳ thay đổi nào trong luồng chính có thể ảnh hưởng đến hoạt động của các luồng khác của quy trình.
Ký ức Chạy trong không gian bộ nhớ riêng biệt. Chạy trong không gian bộ nhớ được chia sẻ.
Điều khiển bởi Quá trình được kiểm soát bởi hệ điều hành. Chủ đề được điều khiển bởi lập trình viên trong một chương trình.
Sự phụ thuộc Các quy trình là độc lập. Chủ đề phụ thuộc.
Q. 10. Khối cuối cùng là gì? Có trường hợp khi cuối cùng sẽ không thực hiện?

Cuối cùng khối là một khối luôn thực hiện một tập hợp các câu lệnh. Nó luôn được liên kết với một khối thử bất kể có ngoại lệ nào xảy ra hay không. 
Có, cuối cùng sẽ không được thực thi nếu chương trình thoát bằng cách gọi System.exit () hoặc bằng cách gây ra lỗi nghiêm trọng khiến quy trình bị hủy bỏ.

Q11. Đồng bộ hóa là gì?

Đồng bộ hóa đề cập đến đa luồng. Một khối mã được đồng bộ hóa chỉ có thể được thực thi bởi một luồng tại một thời điểm. Vì Java hỗ trợ thực thi nhiều luồng, hai hoặc nhiều luồng có thể truy cập vào các trường hoặc đối tượng giống nhau. Đồng bộ hóa là một quá trình giữ cho tất cả các luồng đồng thời đang thực hiện được đồng bộ hóa. Đồng bộ hóa tránh lỗi nhất quán bộ nhớ do chế độ xem bộ nhớ dùng chung không nhất quán. Khi một phương thức được khai báo là được đồng bộ hóa, luồng sẽ giữ giám sát đối tượng của phương thức đó. Nếu một luồng khác đang thực thi phương thức đồng bộ thì luồng đó sẽ bị chặn cho đến khi luồng đó giải phóng màn hình. 

 Q12. Chúng ta có thể viết nhiều khối catch dưới khối try đơn không? 

Có, chúng tôi có thể có nhiều khối bắt trong khối thử duy nhất nhưng cách tiếp cận phải từ cụ thể đến chung chung. Hãy hiểu điều này với một ví dụ có lập trình.

1
2
3
4
5
6
7
số 8
9
10
11
12
13
14
15
16
17
18
19
public class Example {
public static void main(String args[]) {
try {
int a[]= new int[10];
a[10]= 10/0;
}
catch(ArithmeticException e)
{
System.out.println("Arithmetic exception in first catch block");
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("Array index out of bounds in second catch block");
}
catch(Exception e)
{
System.out.println("Any exception in third catch block");
}
}
Q13. Các phương thức quan trọng của Lớp ngoại lệ Java là gì?

Các phương thức được định nghĩa trong lớp cơ sở Throwable. Dưới đây là một số phương thức quan trọng của lớp ngoại lệ Java. 

  1. String getMessage () - Phương thức này trả về thông báo Chuỗi về ngoại lệ. Thông báo có thể được cung cấp thông qua phương thức khởi tạo của nó.
  2. public StackTraceElement [] getStackTrace () - Phương thức này trả về một mảng chứa mỗi phần tử trên dấu vết ngăn xếp. Phần tử ở chỉ số 0 đại diện cho phần trên cùng của ngăn xếp cuộc gọi trong khi phần tử cuối cùng trong mảng đại diện cho phương thức ở cuối ngăn xếp cuộc gọi.
  3. Đồng bộ hóa Throwable getCause () - Phương thức này trả về nguyên nhân của ngoại lệ hoặc id null được đại diện bởi một đối tượng Throwable.

  4. String toString () - Phương thức này trả về thông tin ở định dạng Chuỗi. Chuỗi được trả về chứa tên của lớp có thể ném và thông báo được bản địa hóa.
  5. void printStackTrace () - Phương thức này in thông tin dấu vết ngăn xếp vào luồng lỗi chuẩn. 
Q14. OutOfMemoryError trong Java là gì?

OutOfMemoryError là lớp con của java.lang.Error thường xảy ra khi JVM của chúng ta hết bộ nhớ.

Q15. Chủ đề là gì?

Một luồng là đoạn lệnh nhỏ nhất được lập trình có thể được thực thi độc lập bởi bộ lập lịch. Trong Java, tất cả các chương trình sẽ có ít nhất một luồng được gọi là luồng chính. Luồng chính này được tạo bởi JVM khi chương trình bắt đầu thực thi. Chuỗi chính được sử dụng để gọi main () của chương trình.

Q16. Hai cách để tạo một luồng là gì?

Trong Java, các luồng có thể được tạo theo hai cách sau: - 

  • Bằng cách triển khai giao diện Runnable.
  • Bằng cách mở rộng chuỗi
Q17. Các loại trình thu gom rác khác nhau trong Java là gì?

Gom rác trong Java một chương trình giúp quản lý bộ nhớ ngầm. Vì trong Java, bằng cách sử dụng từ khóa mới, bạn có thể tạo động các đối tượng, một khi được tạo sẽ tiêu tốn một số bộ nhớ. Khi công việc được hoàn thành và không còn tham chiếu nào đến đối tượng nữa, Java sử dụng tính năng thu gom rác sẽ phá hủy đối tượng và giải phóng bộ nhớ bị chiếm bởi nó. Java cung cấp bốn loại trình thu gom rác:

  • Bộ thu gom rác nối tiếp
  • Bộ thu gom rác song song
  • Bộ thu gom rác CMS
  • Bộ thu gom rác G1

Trong trường hợp bạn gặp bất kỳ thách thức nào với những câu hỏi phỏng vấn java này, vui lòng bình luận vấn đề của bạn trong phần bên dưới. Ngoài Blog câu hỏi phỏng vấn Java này, nếu bạn muốn được đào tạo từ các chuyên gia về công nghệ này, bạn có thể chọn đào tạo có cấu trúc từ edureka!

Vì vậy, điều này đưa chúng ta đến phần cuối của blog câu hỏi phỏng vấn Java. Các chủ đề bạn đã học trong blog Câu hỏi Phỏng vấn Java này là bộ kỹ năng được các nhà tuyển dụng tìm kiếm nhiều nhất ở một Chuyên gia Java. Bộ câu hỏi phỏng vấn Java này chắc chắn sẽ giúp bạn thành công trong cuộc phỏng vấn xin việc. Chúc may mắn với cuộc phỏng vấn của bạn!

bigdata 2020/11/11 22:43

Để lại dấu chân

Bước trên một chân

Bình luận

copyright © bigdata 2010-2020
Processed in 0 seconds, 0 queries