CodeGym /Blog Java /Ngẫu nhiên /Các câu hỏi phức tạp về Java thường gặp khi phỏng vấn
John Squirrels
Mức độ
San Francisco

Các câu hỏi phức tạp về Java thường gặp khi 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 vượt qua bất kỳ kỳ thi lấy chứng chỉ nào (không nhất thiết là về lập trình), thì có lẽ bạn đã nhận thấy rằng các câu hỏi được đưa ra rất cụ thể. Nhiều người trong số họ buộc bạn phải suy nghĩ về thiết kế của ngôn ngữ. Một số được thiết kế để thăm dò chiều sâu kiến ​​thức của bạn. Có những câu hỏi trông giống câu đố hơn bất kỳ câu hỏi nào khác, trong khi những câu hỏi khác liên quan đến các sắc thái của ngôn ngữ rất khó nhận biết nếu không thực hành. Trong bài viết này, nhà phát triển Sarans Sing trình bày một số câu hỏi như vậy về Java. Với câu trả lời, tất nhiên. Những câu hỏi khó về Java thường gặp khi phỏng vấn - 11. Điều gì xảy ra nếu tôi đặt một câu lệnh return hoặc System.exit() trong một khối try/catch? Đây là một câu hỏi Java rất phổ biến và tinh tế. Bí quyết là nhiều lập trình viên tin rằng finallykhối luôn được thực thi. Bằng cách đặt một returntuyên bố trong một try/catchkhối hoặc gọi System.exit()từ bên trong một try/catchkhối, câu hỏi đặt ra nghi ngờ về niềm tin này. Câu trả lời cho câu hỏi hóc búa này là: khối finallysẽ được thực thi khi một returncâu lệnh được đặt trong try/catchkhối, nhưng sẽ không được thực thi khi System.exit()được gọi từ bên trong try/catchkhối. 2. Java có hỗ trợ đa kế thừa không? Đây là một câu hỏi rất hóc búa. Những người phỏng vấn thường hỏi, "Nếu C++ hỗ trợ đa kế thừa trực tiếp thì tại sao Java lại không?" câu trả lờiphứ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. Xét cho cùng, một giao diện Java có thể mở rộng các giao diện khác. Điều đó nói rằng, Java không hỗ trợ nhiều kế thừa triển khai. 3. Nếu một phương thức trong lớp cha ném NullPointerExceptions, nó có thể bị ghi đè bởi một phương thức ném RuntimeExceptions không? Đây là một câu hỏi hóc búa khác liên quan đến quá tải và ghi đè. Trả lời: Một phương thức bị ghi đè có thể ném NullPointerExceptionlớp cha của nó một cách an toàn — RuntimeException, nhưng bạn không thể làm điều tương tự với loại ngoại lệ được kiểm tra như Exception. 4. Làm cách nào để bạn đảm bảo rằng Ncác luồng có thể truy cập Ntài nguyên mà không gặp bế tắc? Nếu viết mã đa luồng không phải sở trường của bạn, bạn có thể thực sự vấp phải câu hỏi này. Nó có thể khó khăn ngay cả đối với một lập trình viên có kinh nghiệm chưa gặp phải bế tắc và điều kiện cuộc đua. Toàn bộ thủ thuật ở đây là theo thứ tự: bạn có thể ngăn chặn bế tắc bằng cách giải phóng các tài nguyên theo thứ tự ngược lại với thứ tự mà chúng được lấy. 5. Sự khác biệt giữa lớp StringBufferStringBuilderlớp trong Java là gì? Đây là một câu hỏi cổ điển về ngôn ngữ Java mà một số nhà phát triển thấy khó và những người khác lại thấy – rất đơn giản. Lớp StringBuilderxuất hiện trong JDK 1.5. Sự khác biệt duy nhất giữa các lớp này là StringBuffercác phương thức của ', chẳng hạn như length(), capacity()append(), được đồng bộ hóa, trong khi các phương thức tương ứng trongStringBuilderkhông. Sự khác biệt cơ bản này có nghĩa là nối chuỗi nhanh hơn với StringBuilderso với StringBuffer. Trên thực tế, việc sử dụng StringBufferkhông được khuyến nghị, vì việc nối chuỗi được thực hiện trên cùng một luồng trong 99% thời gian. 6. Kết quả đánh giá biểu thức 1.0/0.0 là gì? Nó sẽ tạo ra một ngoại lệ hoặc một lỗi biên dịch? Đây là một câu hỏi hóc búa khác về lớp học. Các nhà phát triển Java nhận thức được sự tồn tại của một lớp và kiểu dữ liệu kép nguyên thủy , nhưng khi thực hiện các phép toán dấu chấm động, họ không chú ý đầy đủ đến , , và các quy tắc chi phối các phép tính số học liên quan. Câu trả lời cho câu hỏi này rất đơn giản: mộtNhững câu hỏi khó về Java thường gặp khi phỏng vấn - 2DoubleDoubleDouble.POSITIVE_INFINITYDouble.NEGATIVE_INFINITYNaN-0.0ArithmeticExceptionsẽ không bị ném; biểu thức ước tính thành Double.POSITIVE_INFINITY. 7. Điều gì xảy ra nếu bạn cố chèn một khóa vào một HashMapkhóa đã chứa khóa đó? Câu hỏi hóc búa này là một phần của một câu hỏi thường gặp khác: HashMapJava hoạt động như thế nào? HashMaplà một nguồn phổ biến của các câu hỏi khó hiểu và phức tạp về Java. Đây là câu trả lời: nếu bạn cố gắng chèn lại một khóa vào một HashMap, khóa cũ sẽ được thay thế vì HashMaplớp này không cho phép các khóa trùng lặp. Và cùng một khóa sẽ nhận được cùng một mã băm, có nghĩa là nó sẽ kết thúc ở cùng một vị trí trong nhóm băm. Dựa trên tài liệu Quora
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION