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.
Bài 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.
- Sự khác nhau giữa hai lớp StringBuffer và StringBuilder?
Sử dụng StringBuilder bất cứ khi nào có thể bởi vì nó nhanh hơn StringBuffer. Nhưng, nếu an toàn luồng (Thread Safety) là cần thiết, thì bạn nên sử dụng các đối tượng StringBuffer.
2. Package nào được sử dụng để so khớp mẫu (Pattern Matching) với Regular Expression trong Java?
Để sử dụng cho mục đích này, bạn dùng java.util.regex.
- util.regex gồm các lớp nào?
java.util.regex gồm ba lớp: lớp Pattern, lớp Matcher và lớp PatternSyntaxException.
- Phương thức finalize() làm gì?
Có thể định nghĩa một phương thức mà sẽ được gọi ngay trước khi hủy đối tượng bởi Garbage Collector (Trình dọn rác). Phương thức này được gọi là finalize(), và nó có thể được sử dụng để bảo đảm rằng đã hoàn toàn kết thúc một đối tượng.
- Exception (Ngoại lệ) là gì?
Một Exception là một vấn đề được tạo ra trong khi thực thi một chương trình. Các Exception được bắt bởi Handler được xác định cùng với lời gọi phương thức của Thread.
- Bạn biết gì về Checked Exception?
Đặc trưng của loại Exception này là một lỗi người dùng hoặc một vấn đề không thể biết trước bởi lập trình viên. Ví dụ, nếu một file đã được mở, nhưng không tìm thấy file đó, thì một Exception xuất hiện. Những Exception này không thể được bỏ qua một cách đơn giản tại thời điểm biên dịch.
- Giải thích Runtime Exception?
Nó là một Exception mà có thể được tránh bởi lập trình viên. Trái ngược với Checked Exception, các Runtime Exception bị bỏ qua tại thời điểm biên dịch.
- Lớp Exception có hai lớp con nào?
Lớp Exception có hai lớp con chính là: lớp IOException và lớp RuntimeException.
- Khi nào từ khoá throws được sử dụng?
Nếu một phương thức không xử lý một Checked Exception, phương thức phải được khai báo với từ khóa throws. Từ khóa throws xuất hiện ở phần cuối một phương thức.
- Khi nào từ khóa throw được sử dụng?
Một Exception có thể được ném, hoặc bởi được thuyết minh hoặc một Exception mà bạn vừa bắt, bởi sử dụng từ khóa throw.
- Cách finally được sử dụng dưới Exception Handling?
Từ khóa finally được sử dụng để tạo một khối code mà theo sau một khối try. Một khối finally luôn luôn thực thi, dù có hay không xuất hiện một Exception?
- Bạn nên ghi nhớ điều gì trong khi tạo Exception cho riêng mình trong Java?
Trong khi tạo riêng cho mình các Exception:
- Tất cả Exception phải là con của Throwable.
- Nếu bạn muốn viết một Checked Exception mà tự động được tuân theo bởi Handler hoặc Declare Rule (Qui tắc khai báo và xử lý ngoại lệ), thì bạn cần kế thừa lớp Exception.
- Nếu bạn muốn viết một Runtime Exception, bạn cần kế thừa lớp RuntimeException.
- Tính kế thừa (Inheritance) là gì?
Nó là một tiến trình mà một đối tượng thu được các thuộc tính của đối tượng khác. Sử dụng tính kế thừa, bạn có thể quản lý dễ dàng hơn với thông tin được tạo ra trong một cấu trúc có thứ bậc.
- Sử dụng từ khóa super khi nào?
Nếu phương thức ghi đè một trong các phương thức của lớp cha, thì phương thức bị ghi đè có thể được triệu hồi thông qua việc sử dụng từ khóa super. Nó cũng có thể được sử dụng để tham chiếu một trường bị ẩn.
- Định nghĩa tính đa hình (Polymorphism)?
Tính đa hình là khả năng giúp cho một đối tượng có nhiều hình thái. Trong OOP, sự sử dụng phổ biến nhất của tính đa hình là khi một tham chiếu lớp cha được sử dụng để tham chiếu tới một đối tượng lớp con.
- Tính trừu tượng (Abstraction) là gì?
Nó liên quan tới khả năng tạo một lớp trừu tượng (lớp abstract) trong OOP. Nó giúp giảm thiểu sự phức tạp và cũng cải thiện khả năng duy trì của hệ thống.
- Lớp Abstract là gì?
Những lớp này không thể được thuyết minh và được triển khai hoặc một phần hoặc không. Lớp này chứa một hoặc nhiều phương thức abstract, mà phần khai báo phương thức được đơn giản hóa với việc không có phần thân.
- Khi nào phương thức abstract được sử dụng?
Nếu bạn muốn một lớp chứa một phương thức cụ thể nhưng bạn muốn trình triển khai thực sự của phương thức đó được quyết định bởi các lớp con, bạn có thể khai báo phương thức trong lớp cha ở dạng abstract.
- Tính bao đóng (Encapsulation) là gì?
Nó là một kỹ thuật tạo các trường trong một lớp private và cung cấp truy cập tới các trường thông qua các phương thức public. Nếu một trường được khai báo là private,, nó không thể được truy cập bởi bất cứ phương thức nào bên ngoài lớp đó, từ đó ẩn các trường bên trong lớp. Vì thế, tính bao đóng cũng được xem như là Data hiding (ẩn dữ liệu).
- Lợi ích chính của tính bao đóng?
Lợi thế chủ yếu của tính bao đóng là khả năng để sửa đổi các code đã được triển khai của bạn mà không phá hủy phần code của ai đó. Nó như là tấm bảo vệ code và tránh code và dữ liệu của bạn bị truy cập một cách ngẫu nhiên từ code bên ngoài. Tính bao đóng cung cấp cho code tính duy trì, tính linh động, và mở rộng.
- Interface là gì?
Một Interface là một tập hợp các phương thức abstract. Một lớp triển khai một Interface, từ đó kế thừa các phương thức abstract của Interface đó.
- Một số đặc điểm của Interface?
Bao gồm:
- Interface không thể được thuyết minh.
- Một Interface không chứa bất cứ Constructor nào.
- Tất cả phương thức trong một Interface là Abtract.
- Trong Java, Package là gì?
Một Package có thể được định nghĩa như là một nhóm các kiểu (lớp, interface, kiểu liệt kê) có liên quan với nhau, cung cấp bảo vệ truy cập và trình quản lý namespace.
- Tại sao Package được sử dụng?
Package được sử dụng trong Java để ngăn ngừa các xung đột khi đặt tên, để điều khiển truy cập, để tìm kiếm và xác định vị trí, và để sử dụng các lớp, Interface, kiểu liệt kê … dễ dàng hơn.
- Bạn hiểu gì về Đa luồng (Multi-Thread)?
Một chương trình đa luồng bao gồm hai hoặc nhiều phần mà có thể chạy đồng thời. Mỗi phần của chương trình đó được gọi là một Thread, và một Thread xác định một trình thực thi khác nhau.
- Thread có thể được tạo bằng hai cách nào?
Thread có thể được tạo bởi: triển khai Runable Interface, kế thừa lớp Thread.
- Applet là gì?
Một Applet (vi mã) là một chương trình Java mà chạy trong một trình duyệt Web. Một Applet có thể là một ứng dụng Java đầy đủ tính năng bởi vì nó có toàn bộ Java API trong bố trí của nó.
- Một Applet kế thừa lớp nào?
Một Applet kế thừa lớp java.applet.Applet.
- Giải thích trình dọn rác (Garbage Collector) trong Java?
Java sử dụng trình dọn rác để giải phóng bộ nhớ. Bằng việc xóa bỏ các đối tượng mà không còn được sử dụng bởi bất cứ chương trình nào.
- Định nghĩa đối tượng không thể biến đổi?
Một đối tượng không thể biến đổi (immutable object) là không thể bị thay đổi từ khi nó được tạo.
Cám ơn bạn đã đọc bài viết này, hẹn gặp lại bạn ở bài viết tiếp theo!