Tổng hợp những câu hỏi phỏng vấn Java (P.5)

Phỏng vấn vẫn là vấn đề rất nhiều bạn ra mới ra trường khá sợ và thiếu tự tin, một phần chủ yếu do thiếu khá nhiều kiến thức nền tảng, một phần là bạn chưa có sự chuẩn bị kỹ càng. Việc đọc qua những câu phỏng vấn là một cách khá hay, giúp bạn trau dồi lại kiến thức của mình cũng như làm quen dần với các câu hỏi bạn sẽ gặp trong cuộc phỏng vấn.

Chương này chúng ta cùng tìm hiểu về 30 câu hỏi phỏng vấn Java tiếp theo.

hoc-lap-trinh-java-co-ban-1

  1. Dưới các điều kiện nào thì một phương thức finalize() của đối tượng được triệu hồi bởi trình dọn rác (Garbage Collector)?

Trình dọn rác triệu hồi một phương thức finalize() của đối tượng khi nó phát hiện rằng đối tượng đã thất bại.

  1. Một Thread đã chết có thể được restart lại như thế nào?

Một Thread đã chết không thể restart lại được.

  1. Các toán tử số học nào có thể gây ra sự kiện ném một ArithmeticException?

Phép chia / và lấy phần dư % số nguyên có thể gây ra sự kiện ném một ArithmeticException.

  1. Biến kiểu Boolean được tự động khởi tạo với giá trị?

Giá trị mặc định của kiểu Boolean là false.

  1. Các lệnh try có thể lồng nhau không?

Có.

  1. ClassLoader là gì?

ClassLoader là một đối tượng mà đảm nhiệm việc tải các lớp. Lớp ClassLoader là một lớp abstract.

  1. Điểm khác nhau giữa một Interface và một lớp Abstract?

Một lớp Abstract là một lớp có thể có các phương thức instance mà triển khai một hành vi mặc định. Một Interface chỉ có thể khai báo các hằng và các phương thức instance, nhưng không thể triển khai hành vi mặc định và tất cả phương thức là abstract ngầm định. Một Interface có tất cả thành viên public và không có trình triển khai.

  1. Điều gì xảy ra nếu Static Modifier bị gỡ bỏ từ phương thức main?

Chương trình ném lỗi NoSuchMethodError tại runtime.

  1. Giá trị mặc định của một tham chiếu đối tượng được khai báo như là một biến instance?

Giá trị Null, trừ khi nó được khai báo tường minh.

  1. Lớp cao nhất có thể là private hoặc protected không?

Không, một lớp cao nhất không thể là private hoặc protected. Nó chỉ có thể là public hoặc không có modifier nào.

  1. Tại sao chúng ta cần các lớp wrapper?

Chúng ta có thể truyền chúng ở dạng các tham số phương thức khi một phương thức chờ đợi một đối tượng. Nó cũng cung cấp các phương thức tiện ích.

  1. Điểm khác nhau giữa Error và Exception?

Một Error là một điều kiện không thể cứu chữa xuất hiện tại runtime, ví dụ OutOfMemory error. Các Exception là các điều kiện mà xuất hiện là do input không phù hợp, hoặc sai, … ví dụ FileNotFoundException sẽ bị ném nếu file đã cho không tồn tại.

  1. Có cần thiết để mỗi khối try phải được theo sau bởi một khối catch không?

Không cần thiết để mỗi khối try phải được theo sau bởi một khối catch. Mỗi khối try nên được theo sau bởi hoặc một khối catch hoặc một khối finally.

  1. Khi một Thread được tạo và bắt đầu, trạng thái ban đầu (initial state) của nó là gì?

Một Thread sau khi được tạo và được bắt đầu, nó trong trạng thái sẵn sàng (ready state).

  1. Lớp Locale là gì?

Lớp Locale được sử dụng để thiết kế đầu ra output của chương trình theo các qui ước của một khu vực địa lý, chính trị, hoặc văn hóa cụ thể.

  1. Phương thức synchronized và lệnh synchronized là gì?

Các phương thức synchronized là các phương thức được sử dụng để điều khiển truy cập tới một đối tượng. Một lệnh synchronized có thể chỉ được thực thi sau khi một Thread đã thu được lock cho đối tượng hoặc lớp được tham chiếu trong lệnh synchronized đó.

  1. Gửi phương thức động hoặc đa hình tại runtime là gì?

Gửi phương thức động hoặc đa hình tại runtime là một tiến trình trong đó một lời gọi tới một phương thức bị ghi đè được giải quyết tại runtime thay vì tại compile time. Trong tiến trình này, một phương thức bị ghi đè được gọi thông qua biến tham chiếu của một lớp cha.

  1. Dynamic Binding (Late Biding) là gì?

Binding là nói tới việc gắn kết lời gọi một tới code để được thực thi để phản hồi lại lời gọi đó. Dynamic Binding nghĩa là code được liên kết với lời gọi một thủ tục đã cho không được biết cho tới thời điểm của lời gọi đó tại runtime.

  1. Constructor có thể được kế thừa không?

Không, Constructor không thể bị kế thừa.

  1. Lợi thế của ArrayList so với các mảng?

ArrayList có thể tự động tăng kích cỡ và cung cấp một kỹ thuật chèn và tìm kiếm mạnh mẽ hơn khi so sánh với mảng thông thường.

  1. Hoạt động xóa trong LinkedList là nhanh hơn trong ArrayList, tại sao?

Hoạt động xóa trong LinkedList là nhanh hơn bởi vì nó chỉ bao gồm việc cập nhật con trỏ kế tiếp trong node trước node bị xóa và cập nhật con trỏ đằng trước trong node sau node bị xóa.

  1. Bạn quyết định khi nào sử dụng ArrayList và LinkedList?

Nếu bạn cần thường xuyên thêm và xóa các phần tử từ giữa danh sách và chỉ truy cập các phần tử theo dãy, thì LinkedList nên được sử dụng. Nếu bạn cần hỗ trợ truy cập ngẫu nhiên, mà không chèn hoặc xóa các phần tử từ bất kỳ vị trí nào khác ngoài vị trí cuối, thì nên sử dụng ArrayList.

  1. Một Values Collection View là gì?

Nó là một Collection được trả về bởi phương thức values() của Map Interface. Nó bao gồm tất cả đối tượng hiện diện như là các value trong Map đó.

  1. Dot Operator (Toán tử .) là gì?

Dot Operator được sử dụng để truy cập các biến và phương thức instance của các đối tượng lớp. Nó cũng được sử dụng để truy cập các lớp, các package con từ một Package.

  1. Bạn có thể sử dụng Private Constructor ở đâu và như thế nào?

Constructor dạng private được sử dụng nếu bạn không muốn các lớp khác thuyết minh đối tượng và để ngăn cản việc xuất hiện các lớp con.

  1. Type Casting (Ép kiểu) là gì?

Type Casting (Ép kiểu) nghĩa là xem một biến ở một kiểu này như thể nó là kiểu khác.

  1. Miêu tả vòng đời (Life Cycle) của Thread?

Một Thread là một sự thực thi trong một chương trình. Vòng đời của Thread bao gồm:

  • Trạng thái Newborn
  • Trạng thái Runnable
  • Trạng thái Running
  • Trạng thái Blocked
  • Trạng thái Dead
  1. Điểm khác nhau giữa hai toán tử >> và >>> ?

Toán tử >> mang sign bit khi dịch chuyển sang phải. Toán tử >>> điền bit 0 khi đã được dịch chuyển.

  1. Phương thức nào của lớp Component được sử dụng để thiết lập vị trí và kích cỡ của một component?

Sử dụng phương thức setBounds() cho mục đích này.

  1. Dãy giá trị của kiểu short?

Dãy giá trị của kiểu short là từ -(2^15) tới 2^15 – 1.

Cám ơn các bạn đã đọc bài viết này, hẹn gặp lại bạn ở các bài tiếp theo!

Nhận xét