tải PDF
Chúng tôi đã biên soạn các Câu hỏi và Câu trả lời Phỏng vấn Java thường gặp nhất sẽ giúp bạn chuẩn bị cho các câu hỏi phỏng vấn Java Cơ bản mà người phỏng vấn có thể hỏi bạn trong cuộc phỏng vấn của bạn. Trong danh sách các câu hỏi phỏng vấn Java cơ bản này, chúng tôi đã đề cập đến tất cả các câu hỏi phỏng vấn Core Java cơ bản và nâng cao thường được hỏi với các câu trả lời chi tiết để giúp bạn hoàn thành tốt cuộc phỏng vấn xin việc.
Danh sách sau đây bao gồm 100 câu hỏi phỏng vấn Core Java quan trọng dành cho người mới bắt đầu cũng như các câu hỏi và câu trả lời phỏng vấn Java dành cho các lập trình viên có kinh nghiệm để giúp họ chuẩn bị cho cuộc phỏng vấn. Hướng dẫn chi tiết các câu hỏi phỏng vấn cho Lập trình Java này sẽ giúp bạn giải phỏng vấn xin việc một cách dễ dàng.
Câu hỏi và câu trả lời Phỏng vấn về Core Java dành cho những người làm mới và có kinh nghiệm
Q1. Sự khác biệt giữa Lớp bên trong và Lớp con là gì?
Trả lời: Một lớp bên trong là một lớp được lồng trong một lớp khác. Lớp Bên trong có quyền truy cập cho 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 định nghĩa trong lớp ngoài.
Lớp con là một lớp kế thừa từ một lớp khác được gọi là siêu lớp. 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 lớp siêu của nó.
Quý 2. Các chỉ định truy cập khác nhau cho các lớp Java là gì?
Trả lời: Trong Java, các 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. Public: Class, Method, Field có thể truy cập 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 được truy cập 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ề.
Q3. Mục đích của các phương thức tĩnh và biến tĩnh là gì?
Trả lời: 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 biệt cho từng đối tượng, chúng tôi sử dụng từ khóa static để tạo một phương thức hoặc biến được chia sẻ cho tất cả các đối tượng.
Q4. Đóng gói dữ liệu là gì và ý nghĩa của nó là gì?
Trả lời: Đó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ị duy nhất.
Tính đó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.
Q5. Lớp singleton là gì? Đưa ra một ví dụ thực tế về cách sử dụng của 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 cho 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ụ tốt 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ố giới hạn của trình điều khiển hoặc do bất kỳ vấn đề cấp phép nào.
Q6. Vòng lặp trong Java là gì? Ba loại vòng lặp là gì?
Trả lời: Vòng lặp được sử dụng trong lập trình để thực thi một câu lệnh hoặc một khối câu lệnh lặp đi lặp lại. Có ba loại vòng lặp trong Java:
1) Đối với các vòng lặp
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 thi các câu lệnh.
2) Vòng lặp trong khi
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 lại cho đến khi một điều kiện được thực hiện. Trong vòng lặp while, điều kiện được kiểm tra đầu tiên trước khi thực hiện các câu lệnh.
3) Thực hiện vòng lặp trong khi
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 của vòng lặp do while, các câu lệnh được thực hiện ít nhất một lần.
Q7: Vòng lặp vô hạn là gì? Vòng lặp vô hạn được khai báo như thế nào?
Trả lời: Một vòng lặp vô hạn chạy mà không có bất kỳ điều kiện nào và chạy vô hạ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 phá vỡ nào trong phần thân của các 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}
Q8. Sự khác biệt giữa câu lệnh continue và break là gì?
Trả lời: ngắt và tiếp tục là hai từ khóa quan trọng được sử dụng trong Vòng lặp. Khi một từ khóa break được sử dụng trong một vòng lặp, vòng lặp sẽ bị phá vỡ 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ị phá vỡ và vòng lặp tiếp tục với lần lặp tiếp theo.
Trong ví dụ dưới đây, Vòng lặp bị phá vỡ khi bộ đếm đạt đến 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 đến 4, vòng lặp sẽ chuyển sang lần lặp tiếp theo và bất kỳ câu lệnh nào sau từ khóa continue sẽ 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");}
Q9. Sự khác biệt giữa biến kép và biến float trong Java là gì?
Trả lời: Trong java, float chiếm 4 byte trong bộ nhớ trong khi Double chiếm 8 byte trong bộ nhớ. Float là số thập phân dấu phẩy động có độ chính xác đơn trong khi Double là số thập phân có độ chính xác kép.
Q. 10. Từ khóa cuối cùng trong Java là gì? Cho một ví dụ.
Trả lời: Trong java, một hằng đượ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, không thể thay đổi giá trị của một hằng số.
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ị:
Cuối cùng 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ị các lớp con ghi đè. Phương thức này nhanh hơn bất kỳ phương thức nào khác, vì chúng được giải quyết tại thời điểm tuân thủ.
Khi một lớp được khai báo là cuối cùng, nó không thể được phân lớp. Ví dụ Chuỗi, Số nguyên và các lớp trình bao bọc khác.
Q11. Toán tử bậc ba là gì? Cho một ví dụ.
Trả lời: 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 sẽ 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ụ dưới đây, nếu xếp hạng là 1, trạng thái được gán giá trị là "Hoàn thành" khác 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);}}
Q12: Làm thế nào bạn có thể tạo các số ngẫu nhiên trong Java?
Trả lời:
- 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
Q13. Trường hợp chuyển đổi mặc định là gì? Đưa ra ví dụ.
Trả lời: Trong câu lệnh switch, trường hợp mặc định được thực thi khi không có điều kiện switch 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 sau khi tất cả các trường hợp chuyển mạch 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 được sử dụng.
public class switchExample {int score = 4;public static void main(String args[]) {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");}}}
Q14. Lớp cơ sở trong Java mà tất cả các lớp được dẫn xuất từ đó là gì?
Trả lời: java.lang.object
Q15. Phương thức main () trong Java có thể trả về bất kỳ dữ liệu nào không?
Trả lời: 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.
Q16. Gói Java là gì? Ý nghĩa của các gói là gì?
Trả lời: Trong Java, gói là một tập hợp các lớp và giao diện được gói 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 thích hợp. Khi mã đã được đóng gói trong Gói, nó có thể được nhập trong các lớp khác và sử dụng.
Q17. Chúng ta có thể khai báo một lớp là Abstract mà không có bất kỳ phương thức trừu tượng nào không?
Trả lời: 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 trừu tượng 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ó thậm chí 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ẽ báo lỗi.
Q18. Sự khác biệt giữa Lớp trừu tượng và Giao diện trong Java là gì?
Trả lời: Sự khác biệt cơ bản giữa lớp trừu tượng và giao diện là một giao diện chỉ có thể sở hữu khai báo các phương thức tĩnh công cộng mà không có triển khai cụ thể trong khi một 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à một lớp triển khai một giao diện phải thực thi tất cả các phương thức của giao diện trong khi một lớp kế thừa từ một lớp trừu tượng không yêu cầu thực hiện 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.
Q19. Các tác động về hiệu suất của Giao diện đối với các lớp trừu tượng là gì?
Trả lời: 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ó thêm hướng dẫn cho các giao diện. Một yếu tố quan trọng khác mà các nhà phát triển cần xem xét là bất kỳ lớp nào cũng có thể mở rộng chỉ 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ạo thêm gánh nặng cho các nhà phát triển vì bất cứ khi nào một giao diện được triển khai trong một lớp; nhà phát triển buộc phải thực hiện từng và mọi phương pháp của giao diện.
Q20. Việc nhập một gói có nhập các gói con của nó cũng như trong Java không?
Trả lời: Trong java, khi một gói được nhập, các gói con 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 yêu cầu.
Ví dụ: nếu nhà phát triển nhập một trường đại học gói. *, Tất cả các lớp trong gói có tên trường đại học được tải nhưng không có lớp nào từ gói con được tải. Để tải các lớp từ gói con của nó (giả sử bộ phận), nhà phát triển phải nhập nó một cách rõ ràng như sau:
Trường đại học nhập khẩu. Khoa. *
Q21. Chúng ta có thể khai báo phương thức chính của lớp là private không?
Trả lời: Trong java, phương thức main phải là public static để chạy bất kỳ ứng dụng nào một cách chính xác. Nếu phương thức main được khai báo là private, 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ẽ xuất hiện lỗi thời gian chạy.
Q22. Làm cách nào chúng ta có thể truyền đối số cho một hàm bằng tham chiếu thay vì truyền theo giá trị?
Trả lời: Trong java, chúng ta có thể truyền đối số cho một hàm chỉ bằng giá trị chứ không phải bằng tham chiếu.
Q23. Làm thế nào một đối tượng được tuần tự hóa trong java?
Trả lời: 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 được thực hiện bởi lớp. Tất cả các đối tượng của một lớp thực hiện giao diện có thể tuần tự hóa được tuần tự hóa và trạng thái của chúng được lưu trong luồng byte.
Q24. Khi nào chúng ta nên sử dụng tuần tự hóa?
Trả lời: Serialization được sử dụng khi dữ liệu cần được truyền qua mạng. 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 chuyển qua mạng và đối tượng được tạo lại tại đích.
Q25. Có bắt buộc Khối Thử phải được theo sau bởi Khối Bắt trong Java để xử lý Ngoại lệ không?
Trả lời: Khối try cần phải đượ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 ném ra từ khối try cần phải được nắm bắt trong khối catch hoặc bất kỳ tác vụ cụ thể nào khác phải được thực hiện trước khi phá thai mã được đưa vào khối Cuối cùng.
Q26. 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?
Trả lời: Nếu một ngoại lệ được đưa ra trong khối Thử, quyền điều khiển sẽ chuyển để bắt khối nếu nó tồn tại nếu không thì sẽ chặn cuối cùng. Cuối cùng khối luôn được thực thi khi một 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 Cuối cùng là hủy bỏ mã cưỡng bức bằng cách viết dòng mã sau vào cuối khối thử:
System.exit(0);
Q27. Khi nào hàm tạo của một lớp được gọi?
Trả lờ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 cách sử dụng từ khóa mới 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();}}
Q28. Một lớp có thể có nhiều hàm tạo không?
Trả lời: 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.
Q29. Chúng ta có thể ghi đè các phương thức tĩnh của một lớp không?
Trả lời: Chúng tôi 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 phải 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). mã.
Q30. 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();}}
Trả lời : Đầu ra sẽ là:
Hiển thị từ lớp con
Hiển thị từ lớp cha
Q31. Chuỗi có phải là một kiểu dữ liệu trong java không?
Trả lời: Chuỗi không phải là một kiểu dữ liệu nguyên thủy trong java. Khi một chuỗi được tạo trong java, nó thực sự là một đối tượng của lớp Java.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 sẵn của lớp String có thể được sử dụng trên đối tượng chuỗi.
Q32. 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";
Trả lời: Trong ví dụ trên, hai đối tượng của lớp Java.Lang.String được tạo. s1 và s3 là các tham chiếu đến cùng một đối tượng.
Q33. Tại sao các chuỗi trong Java được gọi là bất biến?
Trả lời: Trong java, các đối tượng chuỗi được gọi là không thay đổi vì một khi giá trị đã được gán cho một chuỗi, nó không thể thay đổi và nếu thay đổi, một đối tượng mới sẽ được tạo.
Trong ví dụ dưới đây, 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 Chuỗi mới sẽ được tạo và tham chiếu được chuyển đến đối tượng mới.
str="New Value";
Q34. Sự khác biệt giữa mảng và Vector là gì?
Trả lời: Một mảng nhóm dữ liệu có cùng kiểu nguyên thủy và có bản chất tĩnh trong khi vectơ có bản chất động và có thể chứa dữ liệu thuộc các kiểu dữ liệu khác nhau.
Q35. Đa luồng là gì?
Trả lời: Đa luồng là một khái niệm lập trình để chạy nhiều tác vụ đồng thời trong một chương trình duy nhất. Các luồng chia sẻ cùng một ngăn xếp quy 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.
Q36. Tại sao Giao diện Runnable được sử dụng trong Java?
Trả lời: Giao diện Runnable được sử dụng trong java để triển khai các ứng dụng đa luồng. Giao diện Java.Lang.Runnable được thực hiện bởi một lớp để hỗ trợ đa luồng.
Q37. Hai cách triển khai đa luồng trong Java là gì?
Trả lời: 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 trong hai phương pháp sau:
1. Bằng cách sử dụng Java.Lang.Runnable Interface. 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 lớp Java.Lang.Thread.
Q38. Khi yêu cầu nhiều thay đổi trong dữ liệu, cái nào nên được ưu tiên sử dụng? String hay StringBuffer?
Trả lời: Vì StringBuffer có bản chất là động và chúng ta có thể thay đổi giá trị của các đối tượng StringBuffer không giống như String là bất biến, nên bạn luôn luôn là một lựa chọn tốt để sử dụng StringBuffer 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, đối với mỗi thay đổi dữ liệu, một đối tượng String mới sẽ được tạo ra sẽ là một chi phí bổ sung.
Q39. Mục đích của việc sử dụng Break trong mỗi trường hợp của Switch Statement là gì?
Trả lời: Ngắt được sử dụng sau mỗi trường hợp (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à không chảy trong các trường hợp tiếp tục.
Nếu break không được sử dụng sau mỗi trường hợp, 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.
Q40. Thu gom rác được thực hiện như thế nào trong Java?
Trả lời: Trong java, khi một đối tượng không được tham chiếu nữa, quá trình thu gom rác sẽ diễn ra và đối tượng bị hủy tự động. Để thu gom rác tự động, java gọi phương thức System.gc () hoặc phương thức Runtime.gc ().
Q41. 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?
Trả lời: Nếu chúng ta muốn thực thi bất kỳ câu lệnh nào trước khi tạo các đối tượng tại thời điểm tải của lớp, chúng ta có thể sử dụng một 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 các đối tượng trong phương thức chính.
Q42. Một lớp có thể đồng thời là lớp siêu và lớp con không? Đưa ra ví dụ.
Trả lời: 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ể là một siêu lớp cho một lớp khác và một lớp con cho một lớp khác cùng một lúc.
Trong ví dụ dưới đây, đẳng cấp châu lục là hạng phụ của đẳng cấp thế giới và đó là hạng siêu hạng của hạng quốc gia.
public class world {… .}public class continenet extends world {… }public class country extends continent {… .}
Q43. Làm thế nào các đối tượng của một lớp được tạo ra nếu không có hàm tạo nào được định nghĩa trong lớp?
Trả lời: Ngay cả khi không có phương thức khởi tạo rõ ràng nào được định nghĩa trong một lớp java, các đối tượng được tạo thành công dưới dạng một phương thức khởi tạo mặc định được sử dụng ngầm định để tạo đối tượng. Hàm tạo này không có tham số.
Q44. Trong đa luồng, làm thế nào chúng ta có thể đảm bảo rằng một tài nguyên không được nhiều luồng sử dụng đồng thời?
Trả lời: Trong đa luồng, quyền 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 được đồng bộ hóa, chúng tôi có thể đảm bảo rằng chỉ một luồng có thể sử dụng tài nguyên được chia sẻ tại một thời điểm và những luồng khác chỉ có thể kiểm soát tài nguyên sau khi nó không còn bị luồng khác sử dụng.
Q45. Chúng ta có thể gọi hàm tạo của một lớp nhiều hơn một lần cho một đối tượng không?
Trả lời: Hàm tạo được gọi tự động khi chúng ta tạo một đối tượng bằng cách sử dụ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.
Q46. Có hai lớp được đặt 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?
Trả lời: Các thành viên riêng của một lớp không thể truy cập được bên 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.
Q47. Chúng ta có thể có hai phương thức trong một lớp có cùng tên không?
Trả lời: 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 / kiểu 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ào.
Ví dụ trong lớp dưới đây, chúng ta có hai phương thức in có cùng tên nhưng khác tham số. Tùy thuộc vào các tham số, một tham số thích hợp sẽ được gọi là:
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");}}
Q48. Làm cách nào chúng ta có thể tạo bản sao của một đối tượng java?
Trả lời: 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 clone, chúng tôi tạo ra 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 có thể sao chép và do đó, giao diện có thể sao chép cần được triển khai để tạo bản sao đối tượng.
Q49. Lợi ích của việc sử dụng tài sản thừa kế là gì?
Trả lời: Lợi ích chính của việc sử dụng kế thừa là khả năng sử dụng lại mã vì 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ó.
Q50. Bộ chỉ đị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ả lời: Bộ chỉ định truy cập mặc định cho các biến và phương thức được bảo vệ bằng 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 phải bên ngoài gói.
Q51. Cho một ví dụ về việc sử dụng Con trỏ trong lớp Java.
Trả lời: Không có con trỏ nào trong Java. Vì vậy, chúng ta không thể sử dụng khái niệm con trỏ trong Java.
Q52. Làm thế nào chúng ta có thể hạn chế kế thừa cho một lớp để không một lớp nào có thể được kế thừa từ nó?
Trả lời: Nếu chúng ta muốn một lớp không bị 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 Final với tên lớp.
Trong ví dụ sau, lớp Đá là Cuối cùng và không thể mở rộng
public Final Class Stone {// Class methods and Variables}
Q53. Phạm vi truy cập của chỉ định Quyền truy cập được Bảo vệ là gì?
Trả lời: Khi một phương thức hoặc một biến được khai báo với chỉ định 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.
bổ nghĩa |
Lớp học |
Gói hàng |
Lớp con |
Thế giới |
công cộng |
Y |
Y |
Y |
Y |
được bảo vệ |
Y |
Y |
Y |
N |
không có bổ ngữ |
Y |
Y |
N |
N |
riêng tư |
Y |
N |
N |
N |
Q54. Sự khác biệt giữa Ngăn xếp và Hàng đợi là gì?
Trả lời: Cả hai ngăn xếp và hàng đợi đều được sử dụng làm trình giữ chỗ cho tập hợp dữ liệu. Sự khác biệt cơ bản giữa ngăn xếp và hàng đợi là ngăn xếp dựa trên nguyên tắc Cuối cùng trong Đầu ra (LIFO) trong khi một hàng đợi dựa trên nguyên tắc FIFO (Đầu tiên Vào trước Xuất trước).
Q55. 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?
Trả lời: Nếu chúng ta muốn các biến nhất định của một lớp không bị tuần tự hóa, chúng ta có thể sử dụng từ khóa transient trong khi khai báo chúng. Ví dụ: biến trans_var bên dưới là một 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}
Q56. 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?
Trả lời: 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 trình bao bọc tương ứng của chúng. Ví dụ, Integer là một 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 wrapper, giống như bất kỳ đối tượng nào khác.
Q57. Những loại ngoại lệ nào được bắt gặp tại thời điểm biên dịch?
Trả lời: Có thể bắt các ngoại lệ đã kiểm tra 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 try catch trong mã để biên dịch mã thành công.
Q58. Mô tả các trạng thái khác nhau của một luồng.
Trả lời: Một luồng trong Java có thể ở một trong các trạng thái sau:
- Sẵn sàng: Khi một chuỗi đượ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 chuỗi đang chờ một chuỗi 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.
Q59. Chúng ta có thể sử dụng một hàm tạo mặc định của một lớp ngay cả khi một hàm tạo rõ ràng được định nghĩa không?
Trả lời: Java cung cấp một phương thức khởi tạo không có đối số mặc định nếu không có phương thức khởi tạo rõ ràng nào được định nghĩa trong một lớp Java. Nhưng nếu một hàm tạo rõ ràng đã được xác định, thì không thể gọi hàm tạo mặc định và nhà phát triển chỉ có thể sử dụng những hàm tạo đã được định nghĩa trong lớp.
Q60. Chúng ta có thể ghi đè một phương thức bằng cách sử dụng cùng một tên phương thức và các đối số nhưng kiểu trả về khác nhau không?
Trả lời: Điều kiện cơ bản của việc ghi đè phương thức là tên phương thức, các đối số cũng như kiểu trả về phải hoàn toàn giống với tên phương thức được ghi đè. Do đó, việc sử dụng một kiểu trả về khác sẽ không ghi đè một phương thức.
Q61. Đầu ra của đoạn mã sau là gì?
public class operatorExample {public static void main(String args[]) {int x = 4;system.out.println(x++);}}
Trả lời: Trong trường hợp này, toán tử postfix ++ được sử dụng để trả về giá trị đầu tiên và sau đó tăng dần. Do đó, đầu ra của nó sẽ là 4.
Q61. Một người nói rằng anh ta đã biên dịch thành công một lớp java mà không cần có phương thức main trong đó? Nó có khả thi không?
Trả lời: phương thức main là một điểm đầu vào của lớp Java và được yêu cầu để thực thi chương trình tuy nhiên; 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. Nó không thể được chạy mặc dù.
Q62. 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?
Trả lời: Các phương thức Non-Static được sở hữu bởi các đối tượng của một lớp và có phạm vi mức đối tượng và để gọi các phương thức không phải là Static từ một khối tĩnh (giống như từ một phương thức chính tĩnh), một đối tượng của lớp cần phải được tạo Đầu tiên. Sau đó, sử dụng tham chiếu đối tượng, các phương thức này có thể được gọi.
Q63. Hai biến môi trường phải được đặt để chạy bất kỳ chương trình Java nào?
Trả lời: Các chương trình Java chỉ có thể được thực thi trong một máy khi hai biến môi trường sau đã được đặt đúng:
- Biến PATH
- Biến CLASSPATH
Q64. Các biến có thể được sử dụng trong Java mà không cần khởi tạo không?
Trả lời: Trong Java, nếu một biến được sử dụng trong mã mà không được khởi tạo trước bởi một giá trị hợp lệ, 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.
Q65. Một lớp trong Java có thể được kế thừa từ nhiều hơn một lớp không?
Trả lời: Trong 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 Java hỗ trợ.
Q66. Một phương thức khởi tạo có thể có tên khác với tên Lớp trong Java không?
Trả lời: Hàm tạo 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 bình thường.
Q67. Đầu ra của Round (3.7) và Ceil (3.7) là bao nhiêu?
Trả lời: Vòng (3.7) trả về 4 và Ceil (3.7) trả về 4.
Q68: Chúng ta có thể sử dụng goto trong Java để đi đến một dòng cụ thể không?
Trả lời: Trong Java, không có từ khóa goto và java không hỗ trợ tính năng đi đến một dòng có nhãn cụ thể này.
Q69. Có thể bắt đầu lại một chuỗi chết không?
Trả lời: Trong java, không thể bắt đầu lại một luồng đang ở trạng thái chết. Không có cách nào để khởi động lại một chuỗi đã chết.
Q70. Khai báo lớp sau có đúng không?
Trả lời:
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ì một lớp trừu tượng không thể được khai báo là Final.
Q71. Có cần JDK trên mỗi máy để chạy chương trình Java không?
Trả lời: 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 chương trình Java trên máy, không cần JDK. Chỉ JRE là bắt buộc.
Q72. 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ì?
Trả lời: Trong Java, phươ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 đang 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 trueSystem.out.println("str1 and str2 are equal in terms of values");}if (str1 == str2) {//This condition is trueSystem.out.println("Both strings are referencing same object");} else{// This condition is NOT trueSystem.out.println("Both strings are referencing different objects");}}}
Q73. Có thể định nghĩa một phương thức trong lớp Java nhưng cung cấp việc triển khai nó trong mã của một ngôn ngữ khác như C không?
Trả lời: Có, chúng tôi có thể làm điều 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 lớp Java của chúng tôi mà không cần triển khai nó và sau đó việc triển khai được thực hiện bằng một ngôn ngữ khác như C riêng biệt.
Q74. Các hàm hủy được định nghĩa như thế nào trong Java?
Trả lời: Trong Java, không có hàm hủy nào được định nghĩa trong lớp vì không cần phải làm như vậy. Java có cơ chế thu gom rác của riêng nó, cơ chế này thực hiện công việc tự động bằng cách hủy các đối tượng khi không còn được tham chiếu.
Q75. Một biến có thể là cục bộ và tĩnh cùng một lúc không?
Trả lời: Không một 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 một biến cục bộ là tĩnh gây ra lỗi biên dịch.
Q76. Chúng ta có thể có các phương thức tĩnh trong một Giao diện không?
Trả lời: Không thể ghi đè các phương thức tĩnh trong bất kỳ lớp nào trong khi bất kỳ phương thức nào trong giao diện theo mặc định là trừu tượng và được cho là được triển khai trong các lớp đang triển khai giao diện. Vì vậy, không có ý nghĩa gì khi có các phương thức tĩnh trong một giao diện trong Java.
Q77. 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?
Trả lời: Không, chúng tôi 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 xác định trong giao diện theo mặc định là công khai, tĩnh và các biến cuối cùng và cuối cùng giống như các hằng số không thể thay đổi sau này.
Q78. Có chính xác 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ớ?
Trả lời: Mặc dù tính năng thu gom rác tự động được cung cấp bởi Java, nó không đảm bảo rằng một chương trình Java sẽ không bị hết bộ nhớ vì có khả năng việc tạo các đối tượng Java đ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 lấp đầy tất cả các tài nguyên bộ nhớ có sẵn.
Vì vậy, 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 đó.
Q79. 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?
Trả lời: Không, phương thức chính của lớp Java 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 hoàn toàn phải trả về một giá trị khi hoàn thành phương thức main, bạn có thể sử dụng System.exit (int status)
Q80. 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ể?
Trả lời: Sau khi một đối tượng đã bị hủy bởi bộ thu gom rác, nó sẽ không còn tồn tại trên heap và không thể truy cập lại. Không có cách nào để tham chiếu lại nó.
Q81. Trong lập trình luồng Java, phương pháp nào là phải triển khai cho tất cả các luồng?
Trả lời: Run () là một phương thức của giao diện Runnable phải được thực hiện bởi tất cả các luồng.
Q82. 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 chỉ một luồng có thể thực hiện kết nối cơ sở dữ liệu tại một thời điểm. Làm thế 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 pháp mà hs đồng bộ từ khóa để chỉ một luồng có thể truy cập nó tại một thời điểm.
Q83. Làm cách nào để lập trình viên có thể ném một ngoại lệ theo cách thủ công?
Trả lời: Để đưa ra một ngoại lệ trong một khối mã theo cách thủ công, từ khóa ném được sử dụng. Sau đó, ngoại lệ này đượ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 ");}}
Q84. Tôi muốn lớp của mình đượ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 các đối tượng của nó. Làm thế nào tôi có thể làm như vậy?
Trả lời: Nếu chúng ta khai báo phương thức khởi tạo của một lớp là private, nó sẽ không thể truy cập được bởi bất kỳ lớp nào khác và do đó, không 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ỉ giới hạn ở chính nó.
Q85. Làm thế nào các đối tượng được lưu trữ trong Java?
Trả lời: 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 heap. 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 cho heap và có sẵn cho bất kỳ đối tượng mới nào.
Q86. Làm thế nào chúng ta có thể tìm thấy kích thước thực của một đối tượng trên heap?
Trả lời: 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.
Q87. Lớp nào sau đây sẽ được cấp phát 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
Trả lời: Bộ nhớ không được cấp phát trước khi tạo các đố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 cấp phát trên heap cho bất kỳ lớp nào.
Q88. Đ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?
Trả lời: Nếu một ngoại lệ không được xử lý trong một chương trình sử dụng khối try catch, chương trình sẽ bị hủy bỏ và không có câu lệnh nào thực thi sau câu lệnh gây ra việc ném ngoại lệ.
Q89. Tôi có nhiều hàm tạo được xác định trong một lớp. Có thể gọi một phương thức khởi tạo từ phần thân của một phương thức khởi tạo khác không?
Trả lời: Nếu một lớp có nhiều hàm tạo, có thể gọi một hàm tạo từ phần thân của một lớp khác bằng cách sử dụng this () .
Q90. Lớp ẩn danh nghĩa là gì?
Trả lời: Lớp ẩn danh là lớp được định nghĩa 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ã dưới đây, chúng tôi đã xác định một lớp ẩn danh trong một dòng mã:
public java.util.Enumeration testMethod(){return new java.util.Enumeration(){@Overridepublic boolean hasMoreElements(){// TODO Auto-generated method stubreturn false;}@Overridepublic Object nextElement(){// TODO Auto-generated method stubreturn null;}}
Q91. Có cách nào để tăng kích thước của một mảng sau khi khai báo không?
Trả lời: Mảng là tĩnh và một khi chúng tôi đã chỉ định kích thước của nó, chúng tôi không thể thay đổi nó. Nếu chúng ta muốn sử dụng các bộ sưu tập như vậy trong đó chúng ta có thể yêu cầu thay đổi kích thước (không có mục), chúng ta nên thích vector hơn mảng.
Q92. Nếu một ứng dụng có nhiều lớp trong đó, liệu có ổn không khi có một phương thức chính trong nhiều lớp?
Trả lời: Nếu có phương thức chính trong nhiều lớp trong ứng dụng java, nó 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ể đó.
Q93. Tôi muốn duy trì dữ liệu của các đối tượng để sử dụng sau này. Cách tốt nhất để làm như vậy là gì?
Trả lời: Cách tốt nhất để duy trì dữ liệu để sử dụng trong tương lai là sử dụng khái niệm tuần tự hóa.
Q94. Lớp Local trong Java là gì?
Trả lời: Trong Java, nếu chúng ta định nghĩa một lớp mới bên trong một khối cụ 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 mà nó được định nghĩa.
Q95. String và StringBuffer đều đại diện cho các đối tượng String. Chúng ta có thể so sánh String và StringBuffer trong Java không?
Trả lời: Mặc dù String và StringBuffer đều đại diện cho các đối tượng String, chúng tôi không thể so sánh chúng với nhau và nếu chúng tôi cố gắng so sánh chúng, chúng tôi sẽ gặp lỗi.
Q96. API nào được Java cung cấp cho các hoạt động trên tập đối tượng?
Trả lời: Java cung cấp một 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 các đối tượng. Một số lớp quan trọng được cung cấp bởi API Collection bao gồm ArrayList, HashMap, TreeSet và TreeMap.
Q97. Chúng ta có thể ép kiểu nào khác sang Kiểu Boolean với kiểu đúc không?
Trả lời: Không, chúng tôi không thể ép kiểu nguyên thủy nào khác sang kiểu dữ liệu Boolean cũng như không thể ép kiểu dữ liệu Boolean sang bất kỳ kiểu dữ liệu nguyên thủy nào khác.
Q98. 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?
Trả lời: 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à các tham số.
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}}
Q99. Lớp cơ sở của tất cả các lớp ngoại lệ là gì?
Trả lời: Trong 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.
Q100. Thứ tự gọi các hàm tạo trong kế thừa là gì?
Trả lời: Trong trường hợp kế thừa, khi một đối tượng mới của một lớp dẫn xuất được tạo ra, đầu tiên phương thức khởi tạo của lớp siêu cấp được gọi và sau đó phương thức khởi 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 !!! Xem qua Hướng dẫn Java để chuẩn bị tốt hơn.
Bản pdf câu hỏi phỏng vấn Java chi tiết này sẽ giúp bạn xóa tan những nghi ngờ về các câu hỏi phỏng vấn Java và cũng sẽ giúp bạn vượt qua cuộc phỏng vấn.