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.
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 | 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 . |
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) .
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.
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:
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. |
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. |
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ó:
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:
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 |
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}
|
Đố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:
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.
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ư:
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;
}
|
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 |
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ư:
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ó.
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 đè.
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 |
1
2
3
4
5
6
7
số 8
|
for (int i = 0; i < 5; i++)
{
if (i == 3)
{
break;
}
System.out.println(i);
}
|
1
2
3
4
5
6
7
số 8
|
for (int i = 0; i < 5; i++)
{
if(i == 2)
{
continue;
}
System.out.println(i);
}
|
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 |
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 s 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 |
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:
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ả |
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:
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 |
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 đồ:
Mỗi khóa có thể ánh xạ tối đa một giá trị.
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:
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.
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.
Đ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:
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();
}
}
|
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:
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ụ:
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:
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à:
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
|
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));
}}
|
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();
}
}
|
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();
}
}
|
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:
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 | 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 |
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ủ. |
Có 5 giai đoạn trong vòng đời của một servlet:
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. |
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à:
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:
Gói java.sql chứa các giao diện và lớp cho API JDBC.
Giao diện: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:
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à:
Các chú thích quan trọng là:
Đậ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.
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. |
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.
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 |
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:
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à:
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. |
Một số lợi thế quan trọng của Hibernate framework so với JDBC là:
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. |
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 |
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. |
< %
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
% >
Có 5 loại thẻ JSTL.
Đ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 );
|
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:
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 đượ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");}
}}
}
|
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();
}
}
|
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. |
Hệ thống phân cấp như sau:
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ó.
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.
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. |
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ỏ.
Đồ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");
}
}
|
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.
Đồ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.
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.
Trong Java, các luồng có thể được tạo theo hai cách sau: -
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:
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!
Bước trên một chân
|