JavaRush /Blog Java /Random-VI /Những câu hỏi Java phức tạp thường được hỏi trong các cuộ...

Những câu hỏi Java phức tạp thường được hỏi trong các cuộc phỏng vấn

Xuất bản trong nhóm
Nếu bạn đã từng chuẩn bị cho một cuộc phỏng vấn cho vị trí lập trình viên Java hoặc tham gia bất kỳ kỳ thi nào (không nhất thiết là về lập trình) để lấy chứng chỉ, thì rất có thể bạn đã nhận thấy rằng các câu hỏi họ hỏi rất cụ thể. Nhiều trong số chúng khiến bạn phải suy nghĩ về cấu trúc của ngôn ngữ, một số được thiết kế cho kiến ​​thức sâu. Ngoài ra còn có những thứ giống như câu đố hoặc liên quan đến các sắc thái rất khó cảm nhận nếu không thực hành. Trong bài viết này, nhà phát triển Saraans Singh cung cấp một số câu hỏi Java như vậy. Tất nhiên là có câu trả lời. Những câu hỏi Java hóc búa thường được hỏi khi phỏng vấn - 11. Điều gì xảy ra nếu bạn đặt câu lệnh return hoặc System.exit() trong khối try/catch? Đây là một câu hỏi "bắt kịp" rất phổ biến trong Java. Bí quyết là nhiều lập trình viên tin rằng khối này finallysẽ được thực thi trong mọi trường hợp. Câu hỏi này thách thức khái niệm này bằng cách đặt một câu lệnh returntrong một khối try/catchhoặc gọi từ một khối try/catchcâu lệnh System.exit (). Câu trả lời cho câu hỏi khó này: khối finallysẽ được thực thi khi một câu lệnh được đặt returntrong một khối try/catchvà sẽ không được thực thi khi được gọi từ một khối try/catchcâu lệnh System.exit (). 2. Java có hỗ trợ đa kế thừa không? Đây là một câu hỏi rất khó khăn. Người phỏng vấn thường nói: nếu C++ có thể hỗ trợ đa kế thừa trực tiếp thì tại sao Java lại không? Câu trả lời phức tạp hơn một chút so với vẻ ngoài của nó, vì Java hỗ trợ kế thừa nhiều kiểu, bởi vì một giao diện trong đó có thể mở rộng các giao diện khác. Nhưng ngôn ngữ Java không hỗ trợ đa kế thừa các triển khai. 3. Trong trường hợp một phương thức ném ngoại lệ NullPointerExceptionvào lớp cha, liệu phương thức đó có thể ghi đè nó bằng phương thức ném ngoại lệ đó không RuntimeException? Một câu hỏi phức tạp khác liên quan đến khái niệm quá tải và ghi đè. Trả lời: Bạn có thể ném một ngoại lệ của lớp cha một cách an toàn vào một phương thức được ghi đè NullPointerException – RuntimeException, nhưng bạn không thể làm điều tương tự với một ngoại lệ được kiểm tra thuộc loại Exception. 4. Làm thế nào để đảm bảo rằng các luồng có thể truy cập tài nguyên mà không bị bế tắc? NN Nếu bạn không giỏi viết mã đa luồng thì câu hỏi này sẽ thực sự khó đối với bạn. Nó có thể là thách thức ngay cả đối với một lập trình viên giàu kinh nghiệm, người chưa từng giải quyết các bế tắc và điều kiện đua. Bí quyết ở đây là ở thứ tự: bế tắc có thể được ngăn chặn bằng cách giải phóng tài nguyên theo thứ tự ngược lại với thứ tự chúng được mua. 5. Sự khác biệt giữa các lớp StringBufferStringBuildertrong ngôn ngữ Java là gì? Một câu hỏi kinh điển về ngôn ngữ Java, được một số nhà phát triển cho là khó nhưng một số khác lại cho là rất đơn giản. Lớp này StringBuilderđược giới thiệu trong JDK 1.5 và điểm khác biệt duy nhất giữa chúng là các phương thức của lớp StringBuffer, chẳng hạn như length()hoặc capacity(), append()được đồng bộ hóa, trong khi các phương thức tương ứng của lớp StringBuilderthì không. Vì sự khác biệt cơ bản này nên việc nối chuỗi StringBuildersẽ nhanh hơn với StringBuffer. Trên thực tế, StringBufferđiều này không được khuyến khích sử dụng vì trong 99% trường hợp sử dụng, việc nối chuỗi được thực hiện trên cùng một luồng. 6. Biểu thức 1.0/0.0 trả về kết quả gì? Liệu nó có đưa ra một ngoại lệ hoặc gây ra lỗi biên dịch không? Một câu hỏi khó khác về lớp học Double. Mặc dù các nhà phát triển Java biết đến kiểu dữ liệu đơn giản double và lớp Double, nhưng khi thực hiện các phép toán dấu phẩy động, họ không chú ý đầy đủ đến Double.INFINITY, NaN, -0.0và các quy tắc chi phối các phép tính số học liên quan đến chúng. Câu trả lời cho câu hỏi này rất đơn giản: không có ngoại lệ nào ArithmeticExceptionđược đưa ra, giá trị sẽ được trả về Double.INFINITY. 7. Điều gì xảy ra nếu bạn cố gắng chèn HashMapmột đối tượng khóa vào một đối tượng khóa đã tồn tại trong đó? Câu hỏi khó này là một phần của một câu hỏi thường gặp khác: chúng hoạt động như thế nào HashMaptrong Java? HashMaplà một chủ đề phổ biến dành cho những câu hỏi khó hiểu và phức tạp về ngôn ngữ Java. Câu trả lời là nếu bạn cố lắp lại một khóa vào HashMap, nó sẽ thay thế khóa cũ vì lớp HashMapkhông cho phép các khóa trùng lặp. Và cùng một khóa có nghĩa là cùng một mã băm, vì vậy nó sẽ kết thúc ở cùng một vị trí trong phân đoạn băm. Dựa trên tài liệu từ Quora
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION