100 + Java Câu hỏi và trả lời phỏng vấn (2025)
Java Câu hỏi và câu trả lời phỏng vấn lập trình dành cho người mới bắt đầu
1) Sự khác biệt giữa Lớp bên trong và Lớp phụ là gì?
Lớp Nội là lớp được lồng trong một lớp khác. Lớp bên trong có quyền truy cập đối với lớp đang lồng nó và nó có thể truy cập tất cả các biến và phương thức được xác định trong lớp bên ngoài.
Lớp con là lớp kế thừa từ lớp khác gọi là lớp siêu. Lớp con có thể truy cập tất cả các phương thức và trường công khai và được bảo vệ của siêu lớp của nó.
👉 Tải xuống bản PDF miễn phí: Java Câu hỏi và trả lời phỏng vấn phỏng vấn >>
2) Các công cụ xác định quyền truy cập khác nhau là gì Java các lớp học?
In Java, bộ chỉ định truy cập là các từ khóa được sử dụng trước tên lớp xác định phạm vi truy cập. Các loại chỉ định truy cập cho các lớp là:
1) Công cộng: Lớp, Phương thức, Trường có thể truy cập được từ mọi nơi.
2) Được bảo vệ: Phương thức,Trường có thể được truy cập từ cùng một lớp mà chúng thuộc về hoặc từ các lớp con và từ lớp của cùng một gói, nhưng không phải từ bên ngoài.
3) Mặc định: Phương thức, Trường, lớp chỉ có thể được truy cập từ cùng một gói chứ không phải từ bên ngoài gói gốc của nó.
4) Riêng tư: Phương thức, Trường có thể được truy cập từ cùng một lớp mà chúng thuộc về.
3) Mục đích của phương pháp tĩnh và biến tĩnh là gì?
Khi có yêu cầu chia sẻ một phương thức hoặc một biến giữa nhiều đối tượng của một lớp thay vì tạo các bản sao riêng cho từng đối tượng, chúng ta sử dụng từ khóa static để tạo một phương thức hoặc biến dùng chung cho tất cả các đối tượng.
4) Đóng gói dữ liệu là gì và ý nghĩa của nó là gì?
Đóng gói là một khái niệm trong Lập trình hướng đối tượng để kết hợp các thuộc tính và phương thức trong một đơn vị.
Đóng gói giúp các lập trình viên tuân theo cách tiếp cận mô-đun để phát triển phần mềm vì mỗi đối tượng có bộ phương thức và biến riêng và phục vụ các chức năng của nó độc lập với các đối tượng khác. Đóng gói cũng phục vụ mục đích ẩn dữ liệu.
5) Lớp đơn là gì? Cho một ví dụ thực tế về cách sử dụng nó.
Một lớp singleton trong java chỉ có thể có một thể hiện và do đó tất cả các phương thức và biến của nó chỉ thuộc về một thể hiện. Khái niệm lớp Singleton rất hữu ích trong các trường hợp cần giới hạn số lượng đối tượng cho một lớp.
Ví dụ điển hình nhất về kịch bản sử dụng singleton là khi có giới hạn chỉ có một kết nối với cơ sở dữ liệu do một số hạn chế của trình điều khiển hoặc do bất kỳ vấn đề cấp phép nào.
6) Vòng lặp là gì Java? Ba loại vòng lặp là gì?
Vòng lặp được sử dụng trong lập trình để thực hiện lặp đi lặp lại một câu lệnh hoặc một khối câu lệnh. Có ba các loại vòng lặp trong Java:
1) Vòng lặp dành cho
Vòng lặp for được sử dụng trong java để thực thi các câu lệnh lặp đi lặp lại trong một số lần nhất định. Vòng lặp for được sử dụng khi người lập trình biết số lần thực hiện câu lệnh.
2) Vòng lặp while
Vòng lặp while được sử dụng khi một số câu lệnh nhất định cần được thực hiện lặp đi lặp lại cho đến khi một điều kiện được đáp ứng. Trong vòng lặp while, điều kiện được kiểm tra trước khi thực hiện câu lệnh.
3) Thực hiện vòng lặp while
Vòng lặp Do While giống như vòng lặp While, chỉ khác là điều kiện được kiểm tra sau khi thực hiện khối câu lệnh. Do đó, trong trường hợp vòng lặp do while, các câu lệnh được thực thi ít nhất một lần.
7) Vòng lặp vô hạn là gì? Vòng lặp vô hạn được khai báo như thế nào?
Vòng lặp vô hạn chạy không có điều kiện và chạy vô tận. Một vòng lặp vô hạn có thể bị phá vỡ bằng cách xác định bất kỳ logic ngắt nào trong phần thân của khối câu lệnh.
Vòng lặp vô hạn được khai báo như sau:
for (;;) { // Statements to execute // Add any loop breaking logic }
8) Sự khác biệt giữa câu lệnh continue và break là gì?
break và continue là hai từ khóa quan trọng được sử dụng trong Loops. Khi từ khóa break được sử dụng trong một vòng lặp, vòng lặp sẽ bị ngắt ngay lập tức trong khi khi từ khóa continue được sử dụng, lần lặp hiện tại bị ngắt và vòng lặp tiếp tục với lần lặp tiếp theo.
Trong ví dụ bên dưới, Vòng lặp bị hỏng khi bộ đếm đạt tới 4.
for (counter = 0; counter & lt; 10; counter++) system.out.println(counter); if (counter == 4) { break; } }
Trong ví dụ dưới đây khi bộ đếm đạt tới 4, vòng lặp sẽ chuyển sang lần lặp tiếp theo và mọi câu lệnh sau từ khóa continue đều bị bỏ qua cho lần lặp hiện tại.
for (counter = 0; counter < 10; counter++) system.out.println(counter); if (counter == 4) { continue; } system.out.println("This will not get printed when counter is 4"); }
9) Sự khác biệt giữa biến double và float trong Java?
Trong java, float chiếm 4 byte trong bộ nhớ trong khi Double mất 8 byte trong bộ nhớ. Float là số thập phân dấu phẩy động có độ chính xác duy nhất trong khi Double là số thập phân có độ chính xác kép.
10) Từ khóa cuối cùng trong Java? Đưa ra một ví dụ.
Trong java, một hằng số được khai báo bằng từ khóa Final. Giá trị chỉ có thể được gán một lần và sau khi gán, giá trị của hằng số không thể thay đổi.
Trong ví dụ dưới đây, một hằng số có tên const_val được khai báo và gán giá trị:
Chung kết riêng tư int const_val=100
Khi một phương thức được khai báo là cuối cùng, nó KHÔNG thể bị ghi đè bởi các lớp con. Phương pháp này nhanh hơn bất kỳ phương pháp nào khác vì chúng được giải quyết vào thời điểm tuân thủ.
Khi một lớp được khai báo là final, nó không thể được phân lớp con. Ví dụ String, Integer và các lớp bao bọc khác.
11) Toán tử ba ngôi là gì? Cho một ví dụ.
Toán tử bậc ba, còn được gọi là toán tử điều kiện, được sử dụng để quyết định giá trị nào cần gán cho một biến dựa trên đánh giá giá trị Boolean. Nó được ký hiệu là ?
Trong ví dụ bên dưới, nếu xếp hạng là 1 thì trạng thái được gán giá trị là “Xong” còn lại là “Đang chờ xử lý”.
public class conditionTest { public static void main(String args[]) { String status; int rank = 3; status = (rank == 1) ? "Done" : "Pending"; System.out.println(status); } }
12) Làm thế nào bạn có thể tạo ra các số ngẫu nhiên trong Java?
- Sử dụng Math.random() bạn có thể tạo các số ngẫu nhiên trong phạm vi lớn hơn hoặc bằng 0.1 và nhỏ hơn 1.0
- Sử dụng lớp Ngẫu nhiên trong gói java.util
13) Trường hợp chuyển đổi mặc định là gì? Đưa ra ví dụ.
Trong một chuyển đổi tuyên bố, trường hợp mặc định được thực thi khi không có điều kiện chuyển đổi nào khác phù hợp. Trường hợp mặc định là trường hợp tùy chọn. Nó chỉ có thể được khai báo khi tất cả các trường hợp chuyển đổi khác đã được mã hóa.
Trong ví dụ dưới đây, khi điểm không phải là 1 hoặc 2, trường hợp mặc định sẽ được sử dụng.
public class SwitchExample { public static void main(String args[]) { int score = 4; // Declare the score variable inside the main method switch (score) { case 1: System.out.println("Score is 1"); break; case 2: System.out.println("Score is 2"); break; default: System.out.println("Default Case"); } } }
14) Lớp cơ sở là gì Java từ đó tất cả các lớp có nguồn gốc?
java.lang.object
15) Có thể sử dụng phương thức main() trong Java có thể trả lại bất kỳ dữ liệu?
Trong java, phương thức main() không thể trả về bất kỳ dữ liệu nào và do đó, nó luôn được khai báo với kiểu trả về void.
16) là gì Java Gói? Tầm quan trọng của các gói là gì?
In Java, gói là một tập hợp các lớp và giao diện được nhóm lại với nhau vì chúng có liên quan với nhau. Việc sử dụng các gói giúp các nhà phát triển mô-đun hóa mã và nhóm mã để sử dụng lại phù hợp. Khi mã đã được đóng gói trong Gói, nó có thể được nhập vào các lớp khác và sử dụng.
17) Chúng ta có thể khai báo một lớp là Trừu tượng mà không cần bất kỳ phương thức trừu tượng nào không?
Có, chúng ta có thể tạo một lớp trừu tượng bằng cách sử dụng từ khóa abstract trước tên lớp ngay cả khi nó không có bất kỳ phương thức trừu tượng nào. Tuy nhiên, nếu một lớp có một phương thức trừu tượng, nó phải được khai báo là trừu tượng nếu không nó sẽ đưa ra lỗi.
18) Sự khác biệt giữa Lớp trừu tượng và Giao diện trong Java?
Sự khác biệt chính giữa lớp trừu tượng và giao diện là giao diện chỉ có thể khai báo các phương thức tĩnh công khai mà không cần triển khai cụ thể trong khi lớp trừu tượng có thể có các thành viên với bất kỳ chỉ định truy cập nào (công khai, riêng tư, v.v.) có hoặc không có triển khai cụ thể.
Một điểm khác biệt chính trong việc sử dụng các lớp và giao diện trừu tượng là lớp thực hiện giao diện phải triển khai tất cả các phương thức của giao diện trong khi lớp kế thừa từ lớp trừu tượng không yêu cầu triển khai tất cả các phương thức của siêu lớp của nó.
Một lớp có thể triển khai nhiều giao diện nhưng nó chỉ có thể mở rộng một lớp trừu tượng.
19) Ý nghĩa về hiệu suất của Giao diện so với các lớp trừu tượng là gì?
Các giao diện có hiệu suất chậm hơn so với các lớp trừu tượng vì cần có các hướng bổ sung cho giao diện. Một yếu tố quan trọng khác mà các nhà phát triển cần cân nhắc là bất kỳ lớp nào cũng chỉ có thể mở rộng một lớp trừu tượng trong khi một lớp có thể triển khai nhiều giao diện.
Việc sử dụng các giao diện cũng đặt thêm gánh nặng cho các nhà phát triển mỗi khi giao diện được triển khai trong một lớp; nhà phát triển buộc phải triển khai từng phương thức giao diện.
20) Việc nhập một gói có nhập các gói phụ của nó vào Java?
Trong java, khi một gói được nhập, các gói phụ của nó sẽ không được nhập và nhà phát triển cần nhập chúng riêng nếu cần.
Ví dụ: nếu nhà phát triển nhập một gói University.*, tất cả các lớp trong gói có tên University sẽ được tải nhưng không có lớp nào từ gói phụ được tải. Để tải các lớp từ gói phụ của nó (chẳng hạn như bộ phận), nhà phát triển phải nhập nó một cách rõ ràng như sau:
Nhập trường đại học.department.*
21) Chúng ta có thể khai báo phương thức chính của lớp là riêng tư không?
Trong java, phương thức chính phải là public static để chạy bất kỳ ứng dụng nào một cách chính xác. Tuy nhiên, nếu phương thức chính được khai báo là riêng tư, nhà phát triển sẽ không gặp bất kỳ lỗi biên dịch nào, tuy nhiên, nó sẽ không được thực thi và sẽ báo lỗi thời gian chạy.
22) Làm thế nào chúng ta có thể truyền đối số cho hàm bằng tham chiếu thay vì truyền theo giá trị?
Trong java, chúng ta chỉ có thể truyền đối số cho hàm theo giá trị chứ không phải theo tham chiếu.
23) Một đối tượng được tuần tự hóa trong java như thế nào?
Trong java, để chuyển đổi một đối tượng thành luồng byte bằng cách tuần tự hóa, một giao diện có tên Serializable sẽ được lớp này triển khai. Tất cả các đối tượng của một lớp triển khai giao diện tuần tự hóa đều được tuần tự hóa và trạng thái của chúng được lưu trong luồng byte.
24) Khi nào chúng ta nên sử dụng tuần tự hóa?
Tuần tự hóa được sử dụng khi dữ liệu cần được truyền qua mạng. Bằng cách sử dụng tuần tự hóa, trạng thái của đối tượng được lưu và chuyển đổi thành luồng byte. Luồng byte được truyền qua mạng và đối tượng được tạo lại tại đích.
25) Có bắt buộc Khối Thử phải theo sau Khối Bắt trong Java để xử lý ngoại lệ?
Khối Try cần được theo sau bởi khối Catch hoặc khối Cuối cùng hoặc cả hai. Bất kỳ ngoại lệ nào được đưa ra từ khối thử cần phải được giữ lại trong khối bắt hoặc bất kỳ tác vụ cụ thể nào khác cần được thực hiện trước khi hủy bỏ mã đều được đưa vào khối Cuối cùng.
Java Câu hỏi và trả lời phỏng vấn dành cho người có kinh nghiệm
26) Có cách nào để bỏ qua khối ngoại lệ Cuối cùng ngay cả khi một số ngoại lệ xảy ra trong khối ngoại lệ không?
Nếu một ngoại lệ được đưa ra trong khối Try, quyền điều khiển sẽ chuyển đến khối catch nếu nó tồn tại, nếu không thì chuyển đến khối finally. Khối Finally luôn được thực thi khi có ngoại lệ xảy ra và cách duy nhất để tránh thực thi bất kỳ câu lệnh nào trong khối Finally là bằng cách buộc phải hủy bỏ mã bằng cách viết dòng mã sau vào cuối khối Try:
System.exit(0);
27) Khi nào hàm tạo của một lớp được gọi?
Hàm tạo của một lớp được gọi mỗi khi một đối tượng được tạo bằng từ khóa mới.
Ví dụ, trong lớp sau, hai đối tượng được tạo bằng từ khóa new và do đó, hàm tạo được gọi hai lần.
public class const_example { const_example() { system.out.println("Inside constructor"); } public static void main(String args[]) { const_example c1 = new const_example(); const_example c2 = new const_example(); } }
28) Một lớp có thể có nhiều hàm tạo không?
Có, một lớp có thể có nhiều hàm tạo với các tham số khác nhau. Hàm tạo nào được sử dụng để tạo đối tượng phụ thuộc vào các đối số được truyền trong khi tạo đối tượng.
29) Chúng ta có thể ghi đè các phương thức tĩnh của một lớp không?
Chúng ta không thể ghi đè các phương thức tĩnh. Các phương thức tĩnh thuộc về một lớp chứ không thuộc về các đối tượng riêng lẻ và được giải quyết tại thời điểm biên dịch (không phải trong thời gian chạy). Ngay cả khi chúng ta cố gắng ghi đè phương thức tĩnh, chúng ta sẽ không gặp phải lỗi biên dịch cũng như không bị ảnh hưởng bởi việc ghi đè khi chạy mã số.
30) Trong ví dụ dưới đây, đầu ra sẽ là gì?
public class superclass { public void displayResult() { system.out.println("Printing from superclass"); } } public class subclass extends superclass { public void displayResult() { system.out.println("Displaying from subClass"); super.displayResult(); } public static void main(String args[]) { subclass obj = new subclass(); obj.displayResult(); } }
ans: Đầu ra sẽ là:
Hiển thị từ lớp con
In từ siêu lớp
31) Chuỗi có phải là kiểu dữ liệu trong java không?
String không phải là kiểu dữ liệu nguyên thủy trong Java. Khi một chuỗi được tạo ra trong Java, nó thực sự là một đối tượng của JavaLớp .Lang.String được tạo. Sau khi tạo đối tượng chuỗi này, tất cả các phương thức tích hợp của lớp String có thể được sử dụng trên đối tượng chuỗi.
32) Trong ví dụ dưới đây, có bao nhiêu Đối tượng Chuỗi được tạo?
String s1="I am Java Expert"; String s2="I am C Expert"; String s3="I am Java Expert";
Trong ví dụ trên, hai đối tượng của JavaLớp .Lang.String được tạo. s1 và s3 là các tham chiếu đến cùng một đối tượng.
33) Tại sao phải nhập chuỗi Java được gọi là Bất biến?
Trong java, các đối tượng chuỗi được gọi là bất biến vì một khi giá trị đã được gán cho một chuỗi thì nó không thể thay đổi được và nếu thay đổi, một đối tượng mới sẽ được tạo.
Trong ví dụ bên dưới, tham chiếu str đề cập đến một đối tượng chuỗi có giá trị “Giá trị một”.
String str="Value One";
Khi một giá trị mới được gán cho nó, một đối tượng String mới sẽ được tạo và tham chiếu sẽ được chuyển sang đối tượng mới.
str="New Value";
34) Sự khác biệt giữa mảng và Vector là gì?
Một mảng nhóm dữ liệu có cùng kiểu nguyên thủy và có tính chất tĩnh trong khi các vectơ có tính chất động và có thể chứa dữ liệu thuộc các kiểu dữ liệu khác nhau.
35) Đa luồng là gì?
Đa luồng là một khái niệm lập trình để chạy nhiều tác vụ một cách đồng thời trong một chương trình. Các luồng chia sẻ cùng một ngăn xếp tiến trình và chạy song song. Nó giúp cải thiện hiệu suất của bất kỳ chương trình nào.
36) Tại sao Giao diện Runnable được sử dụng trong Java?
Giao diện Runnable được sử dụng trong Java để triển khai các ứng dụng đa luồng. JavaGiao diện .Lang.Runnable được một lớp triển khai để hỗ trợ đa luồng.
37) Hai cách triển khai đa luồng trong Java?
Các ứng dụng đa luồng có thể được phát triển trong Java bằng cách sử dụng bất kỳ phương pháp nào sau đây:
1) Bằng cách sử dụng JavaGiao diện .Lang.Runnable. Các lớp triển khai giao diện này để kích hoạt đa luồng. Có một phương thức Run() trong giao diện này được triển khai.
2) Bằng cách viết một lớp mở rộng JavaLớp .Lang.Thread.
38) Khi dữ liệu cần có nhiều thay đổi, nên ưu tiên sử dụng thay đổi nào? Chuỗi hoặc chuỗiBuffer?
Kể từ chuỗiBuffers có tính chất động và chúng ta có thể thay đổi các giá trị của ChuỗiBuffer các đối tượng không giống như String là bất biến, nên sử dụng String luôn là một lựa chọn tốtBuffer khi dữ liệu bị thay đổi quá nhiều. Nếu chúng ta sử dụng String trong trường hợp như vậy, thì với mỗi thay đổi dữ liệu, một đối tượng String mới sẽ được tạo, đây sẽ là một chi phí bổ sung.
39) Mục đích sử dụng Break trong từng trường hợp của Switch Statement là gì?
Dấu ngắt được sử dụng sau mỗi trường hợp (ngoại trừ trường hợp cuối cùng) trong một công tắc để mã ngắt sau trường hợp hợp lệ và cũng không chảy trong các trường hợp đang tiến hành.
Nếu break không được sử dụng sau mỗi trường hợp, thì tất cả các trường hợp sau trường hợp hợp lệ cũng được thực thi dẫn đến kết quả sai.
40) Việc thu gom rác được thực hiện như thế nào ở Java?
Trong java, khi một đối tượng không còn được tham chiếu nữa, thu gom rác thải diễn ra và đối tượng sẽ tự động bị phá hủy. Để thu thập rác tự động, java gọi phương thức System.gc() hoặc phương thức Runtime.gc().
41) Làm thế nào chúng ta có thể thực thi bất kỳ mã nào ngay cả trước phương thức chính?
Nếu chúng ta muốn thực thi bất kỳ câu lệnh nào trước khi tạo đối tượng vào thời điểm tải lớp, chúng ta có thể sử dụng khối mã tĩnh trong lớp. Bất kỳ câu lệnh nào bên trong khối mã tĩnh này sẽ được thực thi một lần tại thời điểm tải lớp ngay cả trước khi tạo đối tượng trong phương thức chính.
42) Một lớp có thể đồng thời là siêu lớp và lớp con không? Đưa ra ví dụ.
Nếu có một hệ thống phân cấp kế thừa được sử dụng, một lớp có thể đồng thời là siêu lớp cho một lớp khác và là lớp con cho một lớp khác.
Trong ví dụ dưới đây, lớp lục địa là lớp con của lớp thế giới và là lớp siêu hạng của lớp quốc gia.
public class world { .......... } public class continenet extends world { ............ } public class country extends continent { ...................... }
43) Các đối tượng của một lớp được tạo như thế nào nếu không có hàm tạo nào được định nghĩa trong lớp đó?
Ngay cả khi không có hàm tạo rõ ràng nào được định nghĩa trong lớp java, các đối tượng vẫn được tạo thành công vì hàm tạo mặc định được sử dụng ngầm để tạo đối tượng. Hàm tạo này không có tham số.
44) Trong đa luồng, làm sao chúng ta có thể đảm bảo rằng một tài nguyên không bị nhiều luồng sử dụng cùng lúc?
Trong đa luồng, việc truy cập vào các tài nguyên được chia sẻ giữa nhiều luồng có thể được kiểm soát bằng cách sử dụng khái niệm đồng bộ hóa. Sử dụng từ khóa đồng bộ, chúng tôi có thể đảm bảo rằng tại một thời điểm chỉ có một luồng có thể sử dụng tài nguyên được chia sẻ và những luồng khác chỉ có thể giành quyền kiểm soát tài nguyên khi luồng đó không còn bị luồng khác sử dụng.
45) Chúng ta có thể gọi hàm tạo của một lớp nhiều lần cho một đối tượng không?
Trình xây dựng được gọi tự động khi chúng ta tạo một đối tượng bằng từ khóa mới. Nó chỉ được gọi một lần cho một đối tượng tại thời điểm tạo đối tượng và do đó, chúng ta không thể gọi lại hàm tạo cho một đối tượng sau khi tạo đối tượng đó.
46) Có hai lớp có tên là classA và classB. Cả hai lớp đều nằm trong cùng một gói. Một thành viên riêng của classA có thể được truy cập bởi một đối tượng của classB không?
Các thành viên riêng tư của một lớp không thể truy cập được ngoài phạm vi của lớp đó và bất kỳ lớp nào khác ngay cả trong cùng một gói cũng không thể truy cập chúng.
47) Chúng ta có thể có hai phương thức trong một lớp có cùng tên không?
Chúng ta có thể định nghĩa hai phương thức trong một lớp có cùng tên nhưng có số lượng/loại tham số khác nhau. Phương thức nào được gọi sẽ phụ thuộc vào các tham số được truyền.
Ví dụ trong lớp bên dưới chúng ta có hai phương thức in có cùng tên nhưng tham số khác nhau. Tùy thuộc vào các tham số, một tham số thích hợp sẽ được gọi:
public class methodExample { public void print() { system.out.println("Print method without parameters."); } public void print(String name) { system.out.println("Print method with parameter"); } public static void main(String args[]) { methodExample obj1 = new methodExample(); obj1.print(); obj1.print("xx"); } }
48) Làm thế nào chúng ta có thể tạo bản sao của một đối tượng java?
Chúng ta có thể sử dụng khái niệm nhân bản để tạo bản sao của một đối tượng. Sử dụng bản sao, chúng tôi tạo các bản sao với trạng thái thực tế của một đối tượng.
Clone() là một phương thức của giao diện Cloneable và do đó, giao diện Cloneable cần được triển khai để tạo các bản sao đối tượng.
49) Lợi ích của việc sử dụng tính kế thừa là gì?
Lợi ích chính của việc sử dụng tính kế thừa là khả năng sử dụng lại mã vì tính kế thừa cho phép các lớp con sử dụng lại mã của siêu lớp của nó. Tính đa hình (Khả năng mở rộng) là một lợi ích tuyệt vời khác cho phép giới thiệu chức năng mới mà không ảnh hưởng đến các lớp dẫn xuất hiện có.
50) Công cụ xác định truy cập mặc định cho các biến và phương thức của một lớp là gì?
Trình xác định truy cập mặc định cho các biến và phương thức được bảo vệ gói, tức là các biến và lớp có sẵn cho bất kỳ lớp nào khác nhưng trong cùng một gói, không nằm ngoài gói.
51) Cho ví dụ về việc sử dụng Con trỏ trong Java lớp học.
Không có con trỏ trong Java. Vì vậy chúng ta không thể sử dụng khái niệm con trỏ trong Java.
52) Làm cách nào chúng ta có thể hạn chế tính kế thừa cho một lớp để không lớp nào có thể được kế thừa từ nó?
Nếu chúng ta muốn một lớp không được mở rộng thêm bởi bất kỳ lớp nào, chúng ta có thể sử dụng từ khóa Cuối cùng với tên lớp.
Trong ví dụ sau, lớp Stone là Final và không thể mở rộng
public Final Class Stone { // Class methods and Variables }
53) Phạm vi truy cập của công cụ xác định quyền truy cập được bảo vệ là gì?
Khi một phương thức hoặc một biến được khai báo bằng bộ xác định quyền truy cập được bảo vệ, nó sẽ có thể truy cập được trong cùng một lớp, bất kỳ lớp nào khác của cùng một gói cũng như một lớp con.
thay đổi | Lớp | Bưu kiện | Lớp con | Thế giới |
---|---|---|---|---|
công khai | Y | Y | Y | Y |
bảo vệ | Y | Y | Y | N |
không có sửa đổi | Y | Y | N | N |
riêng | Y | N | N | N |
54) Sự khác biệt giữa Stack và Queue là gì?
Cả ngăn xếp và hàng đợi đều được sử dụng làm trình giữ chỗ cho bộ sưu tập dữ liệu. Sự khác biệt chính giữa ngăn xếp và hàng đợi là ngăn xếp dựa trên nguyên tắc Vào trước ra trước (LIFO) trong khi hàng đợi dựa trên nguyên tắc FIFO (Vào trước ra trước).
55) Trong java, làm thế nào chúng ta có thể không cho phép tuần tự hóa các biến?
Nếu chúng ta muốn các biến nhất định của một lớp không được tuần tự hóa, chúng ta có thể sử dụng từ khóa thoáng qua trong khi khai báo chúng. Ví dụ: biến trans_var bên dưới là biến tạm thời và không thể được tuần tự hóa:
public class transientExample { private transient trans_var; // rest of the code }
56) Làm thế nào chúng ta có thể sử dụng các kiểu dữ liệu nguyên thủy làm đối tượng?
Các kiểu dữ liệu nguyên thủy như int có thể được xử lý như các đối tượng bằng cách sử dụng các lớp bao bọc tương ứng của chúng. Ví dụ: Integer là lớp bao bọc cho kiểu dữ liệu nguyên thủy int. Chúng ta có thể áp dụng các phương thức khác nhau cho một lớp bao bọc, giống như bất kỳ đối tượng nào khác.
57) Những loại ngoại lệ nào được phát hiện tại thời điểm biên dịch?
Các ngoại lệ đã kiểm tra có thể được phát hiện tại thời điểm biên dịch chương trình. Các ngoại lệ đã kiểm tra phải được xử lý bằng cách sử dụng khối thử bắt trong mã để biên dịch mã thành công.
58) Mô tả các trạng thái khác nhau của một sợi dây.
Một chủ đề trong Java có thể ở một trong các trạng thái sau:
- Sẵn sàng: Khi một luồng được tạo, nó ở trạng thái Sẵn sàng.
- Đang chạy: Một luồng hiện đang được thực thi ở trạng thái đang chạy.
- Đang chờ: Một luồng đang chờ một luồng khác giải phóng một số tài nguyên nhất định đang ở trạng thái chờ.
- Đã chết: Một luồng đã chết sau khi thực thi ở trạng thái chết.
59) Chúng ta có thể sử dụng hàm tạo mặc định của một lớp ngay cả khi hàm tạo rõ ràng được xác định không?
Java cung cấp một hàm tạo không có đối số mặc định nếu không có hàm tạo rõ ràng nào được định nghĩa trong một Java lớp học. Nhưng nếu một hàm tạo rõ ràng đã được xác định thì hàm tạo mặc định không thể được gọi và nhà phát triển chỉ có thể sử dụng các hàm tạo đó được xác định trong lớp.
60) Chúng ta có thể ghi đè một phương thức bằng cách sử dụng cùng tên và đối số của phương thức nhưng có kiểu trả về khác nhau không?
Điều kiện cơ bản của ghi đè phương thức là tên phương thức, đối số cũng như kiểu trả về phải giống hệt như phương thức bị ghi đè. Do đó, việc sử dụng kiểu trả về khác sẽ không ghi đè một phương thức.
61) Đoạn mã sau sẽ cho kết quả gì?
public class operatorExample { public static void main(String args[]) { int x = 4; system.out.println(x++); } }
Trong trường hợp này, toán tử postfix ++ được sử dụng, toán tử này trả về giá trị đầu tiên và sau đó tăng dần. Do đó đầu ra của nó sẽ là 4.
61) Một người nói rằng anh ta đã biên dịch thành công một lớp java mà thậm chí không có phương thức main trong đó? Có thể được không?
phương thức chính là một điểm vào của Java Tuy nhiên, lớp này được yêu cầu để thực hiện chương trình; một lớp được biên dịch thành công ngay cả khi nó không có phương thức chính. Tuy nhiên nó không thể chạy được.
62) Chúng ta có thể gọi một phương thức không tĩnh từ bên trong một phương thức tĩnh không?
Các phương thức không tĩnh được sở hữu bởi các đối tượng của một lớp và có phạm vi cấp đối tượng và để gọi các phương thức không tĩnh từ một khối tĩnh (như từ một phương thức chính tĩnh), trước tiên cần phải tạo một đối tượng của lớp. Sau đó, bằng cách sử dụng tham chiếu đối tượng, các phương thức này có thể được gọi.
63) Hai biến môi trường phải được đặt để chạy bất kỳ Java các chương trình?
Java chương trình chỉ có thể được thực thi trong máy một lần sau khi hai biến môi trường được thiết lập đúng:
- Biến PATH
- biến CLASSPATH
64) Các biến có thể được sử dụng trong Java không cần khởi tạo?
In Java, nếu một biến được sử dụng trong mã mà không được khởi tạo trước bằng một giá trị hợp lệ thì chương trình sẽ không biên dịch và đưa ra lỗi vì không có giá trị mặc định nào được gán cho các biến trong Java.
65) Có thể một lớp học trong Java được kế thừa từ nhiều lớp?
In Java, một lớp chỉ có thể được dẫn xuất từ một lớp chứ không phải từ nhiều lớp. Nhiều kế thừa không được hỗ trợ bởi Java.
66) Một hàm tạo có thể có tên khác với tên Lớp trong Java?
Trình xây dựng trong Java phải có cùng tên với tên lớp và nếu tên khác, nó không hoạt động như một hàm tạo và trình biên dịch coi nó như một phương thức thông thường.
67) Đầu ra của Round(3.7) và Ceil(3.7) sẽ là gì?
Round(3.7) trả về 4 và Ceil(3.7) trả về 4.
68) Chúng ta có thể sử dụng goto trong Java để đi đến một dòng cụ thể?
In Java, không có từ khóa goto và Java không hỗ trợ tính năng này để chuyển đến một dòng có nhãn cụ thể.
69) Một thread chết có thể bắt đầu lại được không?
Trong java, một luồng ở trạng thái chết không thể bắt đầu lại được. Không có cách nào để khởi động lại một chủ đề chết.
70) Khai báo lớp sau đây có đúng không?
public abstract final class testClass { // Class methods and variables }
Trả lời: Khai báo lớp trên không chính xác vì lớp trừu tượng không thể được khai báo là Lớp cuối cùng.
71) Mỗi máy có cần phải chạy JDK không? Java chương trình?
JDK là Bộ công cụ phát triển của Java và chỉ được yêu cầu để phát triển và chạy một Java chương trình trên máy, không cần có JDK. Chỉ cần JRE.
72) Sự khác biệt giữa so sánh được thực hiện bằng phương thức bằng và toán tử == là gì?
In JavaPhương thức equals() được sử dụng để so sánh nội dung của hai đối tượng chuỗi và trả về true nếu hai đối tượng có cùng giá trị, trong khi toán tử == so sánh các tham chiếu của hai đối tượng chuỗi.
Trong ví dụ sau, equals() trả về true vì hai đối tượng chuỗi có cùng giá trị. Tuy nhiên, toán tử == trả về false vì cả hai đối tượng chuỗi đều tham chiếu đến các đối tượng khác nhau:
public class equalsTest { public static void main(String args[]) { String str1 = new String("Hello World"); String str2 = new String("Hello World"); if (str1.equals(str2)) { // this condition is true System.out.println("str1 and str2 are equal in terms of values"); } if (str1 == str2) { //This condition is true System.out.println("Both strings are referencing same object"); } else { // This condition is NOT true System.out.println("Both strings are referencing different objects"); } } }
73) Có thể định nghĩa một phương thức trong Java class nhưng cung cấp cách triển khai nó bằng mã của ngôn ngữ khác như C?
Có, chúng tôi có thể thực hiện việc này bằng cách sử dụng các phương pháp gốc. Trong trường hợp phát triển dựa trên phương thức gốc, chúng tôi xác định các phương thức tĩnh công khai trong Java lớp mà không cần triển khai và sau đó việc triển khai được thực hiện bằng ngôn ngữ khác như C một cách riêng biệt.
74) Hàm hủy được định nghĩa như thế nào trong Java?
In Java, không có hàm hủy nào được định nghĩa trong lớp vì không cần thiết phải làm như vậy. Java có cơ chế thu gom rác riêng, thực hiện công việc một cách tự động bằng cách hủy các đối tượng khi không còn được tham chiếu.
Java Câu hỏi và câu trả lời phỏng vấn cho hơn 5 năm kinh nghiệm
75) Một biến có thể là biến cục bộ và biến tĩnh cùng một lúc không?
Không có biến nào không thể tĩnh cũng như cục bộ cùng một lúc. Việc xác định biến cục bộ là tĩnh sẽ gây ra lỗi biên dịch.
76) Chúng ta có thể có các phương thức tĩnh trong Giao diện không?
Các phương thức tĩnh không thể bị ghi đè trong bất kỳ lớp nào trong khi mọi phương thức trong giao diện theo mặc định đều trừu tượng và được cho là sẽ được triển khai trong các lớp đang triển khai giao diện. Vì vậy, thật vô nghĩa khi có các phương thức tĩnh trong một giao diện trong Java.
77) Trong một lớp triển khai giao diện, chúng ta có thể thay đổi giá trị của bất kỳ biến nào được xác định trong giao diện không?
Không, chúng ta không thể thay đổi giá trị của bất kỳ biến nào của giao diện trong lớp triển khai vì tất cả các biến được định nghĩa trong giao diện theo mặc định là public, static và Final và các biến final giống như hằng số không thể thay đổi sau này.
78) Có đúng không khi nói rằng do tính năng thu gom rác trong Java, một chương trình Java không bao giờ hết bộ nhớ?
Mặc dù việc thu gom rác tự động được cung cấp bởi Java, nó không đảm bảo rằng một Java chương trình sẽ không hết bộ nhớ vì có khả năng việc tạo Java các đối tượng đang được thực hiện với tốc độ nhanh hơn so với việc thu gom rác dẫn đến việc lấp đầy tất cả các tài nguyên bộ nhớ có sẵn.
Vì vậy, việc thu gom rác giúp giảm nguy cơ chương trình hết bộ nhớ nhưng nó không đảm bảo điều đó.
79) Chúng ta có thể có bất kỳ kiểu trả về nào khác ngoài void cho phương thức chính không?
Không, Java Phương thức chính của lớp chỉ có thể có kiểu trả về void để chương trình được thực thi thành công.
Tuy nhiên, nếu bạn nhất thiết phải trả về một giá trị khi hoàn thành phương thức chính, bạn có thể sử dụng System.exit(int status)
80) Tôi muốn tiếp cận lại và sử dụng một đối tượng sau khi nó đã được thu gom rác. Làm thế nào nó có thể?
Khi một đối tượng đã bị trình thu gom rác phá hủy, nó sẽ không còn tồn tại trên heap và không thể truy cập lại được. Không có cách nào để tham khảo nó một lần nữa.
81 trong Java lập trình luồng, phương pháp nào là phải triển khai cho tất cả các luồng?
Run() là một phương thức của giao diện Runnable phải được triển khai bởi tất cả các luồng.
82) Tôi muốn kiểm soát các kết nối cơ sở dữ liệu trong chương trình của mình và muốn rằng mỗi lần chỉ có một luồng có thể tạo kết nối cơ sở dữ liệu. Làm cách nào tôi có thể triển khai logic này?
Trả lời: Điều này có thể được thực hiện bằng cách sử dụng khái niệm đồng bộ hóa. Mã liên quan đến cơ sở dữ liệu có thể được đặt trong một phương thức mà hs đồng bộ hóa từ khóa để mỗi lần chỉ có một luồng có thể truy cập nó.
83) Làm thế nào một lập trình viên có thể ném một ngoại lệ theo cách thủ công?
Để ném một ngoại lệ vào một khối mã theo cách thủ công, quăng từ khóa được sử dụng. Sau đó, ngoại lệ này sẽ được bắt và xử lý trong khối bắt.
public void topMethod() { try { excMethod(); } catch (ManualException e) {} } public void excMethod { String name = null; if (name == null) { throw (new ManualException("Exception thrown manually "); } }
84) Tôi muốn lớp của tôi được phát triển theo cách mà không lớp nào khác (ngay cả lớp dẫn xuất) có thể tạo ra các đối tượng của nó. Làm thế nào tôi có thể làm như vậy?
Nếu chúng ta khai báo hàm tạo của một lớp là riêng tư, thì bất kỳ lớp nào khác sẽ không thể truy cập được nó và do đó, không có lớp nào khác có thể khởi tạo nó và việc hình thành đối tượng của nó sẽ chỉ bị giới hạn ở chính nó.
85) Các đồ vật được lưu trữ như thế nào Java?
Trong java, mỗi đối tượng khi được tạo sẽ nhận được một không gian bộ nhớ từ một đống. Khi một đối tượng bị bộ thu gom rác phá hủy, không gian được phân bổ cho nó từ heap sẽ được phân bổ lại vào heap và trở nên sẵn sàng cho bất kỳ đối tượng mới nào.
86) Làm thế nào chúng ta có thể tìm thấy kích thước thực tế của một đối tượng trên heap?
Trong java, không có cách nào để tìm ra kích thước chính xác của một đối tượng trên heap.
87) Lớp nào sau đây sẽ được phân bổ nhiều bộ nhớ hơn?
Lớp A: Ba phương thức, bốn biến, không có đối tượng
Lớp B: Năm phương thức, ba biến, không có đối tượng
Bộ nhớ không được cấp phát trước khi tạo đối tượng. Vì đối với cả hai lớp, không có đối tượng nào được tạo nên không có bộ nhớ nào được phân bổ trên heap cho bất kỳ lớp nào.
88) Điều gì xảy ra nếu một ngoại lệ không được xử lý trong một chương trình?
Nếu ngoại lệ không được xử lý trong chương trình bằng khối try catch, chương trình sẽ bị hủy và không có câu lệnh nào được thực thi sau câu lệnh gây ra ngoại lệ.
89) Tôi có nhiều hàm tạo được định nghĩa trong một lớp. Có thể gọi hàm tạo từ phần thân của hàm tạo khác không?
Nếu một lớp có nhiều hàm tạo, bạn có thể gọi một hàm tạo từ phần thân của lớp khác bằng cách sử dụng cái này().
90) Lớp ẩn danh nghĩa là gì?
Lớp ẩn danh là lớp được xác định mà không có bất kỳ tên nào trong một dòng mã bằng cách sử dụng từ khóa mới.
Ví dụ: trong đoạn mã bên dưới, chúng tôi đã định nghĩa một lớp ẩn danh trong một dòng mã:
public java.util.Enumeration testMethod() { return new java.util.Enumeration() { @Override public boolean hasMoreElements() { // TODO Auto-generated method stub return false; } @Override public Object nextElement() { // TODO Auto-generated method stub return null; } }
91) Có cách nào để tăng kích thước của mảng sau khi khai báo không?
Mảng là tĩnh và một khi chúng ta đã chỉ định kích thước của nó thì chúng ta không thể thay đổi nó. Nếu chúng ta muốn sử dụng các bộ sưu tập mà chúng ta có thể yêu cầu thay đổi kích thước (không có mục nào), chúng ta nên ưu tiên vectơ hơn mảng.
92) Nếu một ứng dụng có nhiều lớp trong đó, liệu có thể có một phương thức chính trong nhiều lớp không?
Nếu có phương thức chính trong nhiều lớp trong một ứng dụng java thì điều đó sẽ không gây ra bất kỳ vấn đề nào vì điểm vào cho bất kỳ ứng dụng nào sẽ là một lớp cụ thể và mã sẽ chỉ bắt đầu từ phương thức chính của lớp cụ thể đó.
93) Tôi muốn lưu trữ dữ liệu của các đối tượng để sử dụng sau này. Cách tốt nhất để thực hiện là gì?
Cách tốt nhất để lưu giữ dữ liệu để sử dụng trong tương lai là sử dụng khái niệm tuần tự hóa.
94) Lớp địa phương trong Java?
In Java, nếu chúng ta định nghĩa một lớp mới bên trong một khối cụ thể, thì nó được gọi là lớp cục bộ. Một lớp như vậy có phạm vi cục bộ và không thể sử dụng được bên ngoài khối được xác định.
95) Chuỗi và chuỗiBuffer cả hai đều đại diện cho các đối tượng String. Chúng ta có thể so sánh Chuỗi và Chuỗi khôngBuffer in Java?
Mặc dù Chuỗi và ChuỗiBuffer cả hai đều đại diện cho các đối tượng String, chúng ta không thể so sánh chúng với nhau và nếu cố gắng so sánh chúng, chúng ta sẽ gặp lỗi.
96) API nào được cung cấp bởi Java cho các hoạt động trên tập hợp các đối tượng?
Java cung cấp API Bộ sưu tập cung cấp nhiều phương thức hữu ích có thể được áp dụng trên một tập hợp đối tượng. Một số lớp quan trọng được Collection API cung cấp bao gồm ArrayList, HashMap, TreeSet và TreeMap.
97) Chúng ta có thể chuyển bất kỳ kiểu nào khác sang Kiểu Boolean bằng cách chuyển kiểu không?
Không, chúng tôi không thể chuyển bất kỳ kiểu nguyên thủy nào khác sang kiểu dữ liệu Boolean cũng như không thể chuyển kiểu dữ liệu Boolean sang bất kỳ kiểu dữ liệu nguyên thủy nào khác.
98) Chúng ta có thể sử dụng các kiểu trả về khác nhau cho các phương thức khi bị ghi đè không?
Yêu cầu cơ bản của việc ghi đè phương thức trong Java là phương thức được ghi đè phải có cùng tên và tham số. Nhưng một phương thức có thể được ghi đè bằng một kiểu trả về khác miễn là kiểu trả về mới mở rộng phương thức ban đầu.
Ví dụ: phương thức trả về một kiểu tham chiếu.
Class B extends A { A method(int x) { //original method } B method(int x) { //overridden method } }
99) Lớp cơ sở của tất cả các lớp ngoại lệ là gì?
In Java, Java.lang.Throwable
là siêu lớp của tất cả các lớp ngoại lệ và tất cả các lớp ngoại lệ đều bắt nguồn từ lớp cơ sở này.
100) Thứ tự gọi các hàm tạo trong kế thừa là gì?
Trong trường hợp kế thừa, khi một đối tượng mới của lớp dẫn xuất được tạo, đầu tiên hàm tạo của siêu lớp được gọi và sau đó hàm tạo của lớp dẫn xuất được gọi.
Chuẩn bị cho cuộc phỏng vấn xin việc của bạn!!! Đi xuyên qua Java Hướng dẫn để được chuẩn bị tốt hơn.
Chi tiết này Java Mock Test Quiz sẽ giúp bạn xóa tan những nghi ngờ về Java câu hỏi phỏng vấn và cũng sẽ giúp bạn vượt qua cuộc phỏng vấn.
Kia là Java và Java 8 câu hỏi phỏng vấn cũng sẽ giúp ích trong viva(oral) của bạn