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.
- Đâu là điểm khác nhau giữa hai phương thức paint() và repaint()?
Phương thức paint() hỗ trợ việc vẽ thông qua một đối tượng Graphics. Phương thức repaint() được sử dụng để làm cho phương thức paint() có thể được triệu hồi bởi AWT Thread.
- Lớp File có mục đích gì?
Nó được sử dụng để tạo các đối tượng mà cung cấp sự truy cập tới các file và thư mục của hệ thống local file.
- Điểm khác nhau giữa cấu trúc lớp Reader/Writer và cấu trúc lớp InputStream/OutputStream.
Cấu trúc lớp Reader/Writer là hướng ký tự (Character-oriented), và cấu trúc lớp InputStream/OutputStream là hướng byte (Byte-oriented).
- Bạn sử dụng lớp nào để lấy thông tin thiết kế về một đối tượng?
Lớp Class được sử dụng để thu được thông tin về thiết kế của một đối tượng và sự thể hiện lớp java.lang.Class biểu diễn các lớp, Interface trong một ứng dụng Java đang chạy.
- Biến static và biến non-static khác nhau ở điểm nào?
Biến static (biến tĩnh) được gắn kết với toàn bộ lớp chứ không phải là instance của một lớp. Các biến non-static nhận các giá trị duy nhất với một sự thể hiện đối tượng.
- Serialization và Deserialization là gì?
Serialization là tiến trình ghi trạng thái của một đối tượng tới một Byte Stream. Deserialization là tiến trình phục hồi các đối tượng này.
- Case là gì?
Nó là một phần của tiến trình phân tích một chương trình và miêu tả một tình huống mà một chương trình có thể gặp phải và chương trình nên thực hiện hành vi nào trong tình huống đó.
- Giải thích sự sử dụng của lớp con trong một chương trình Java?
Các lớp con kế thừa tất cả các phương thức public và protected và triển triển khai. Nó cũng kế thừa tất cả các phương thức modifier mặc định và trình triển khai của chúng.
- Cách thêm menushortcut tới menu item?
Nếu có một sự thể hiện của button được gọi là b1, bạn có thể thêm menushortcut bằng việc gọi phương thức b1.setMnemonic(‘F’), từ đó người sử dụng có thể sử dụng phím tắt Alt+F để nhấn vào button đó.
- Bạn có thể viết môt lớp Java mà có thể được sử dụng như một Applet cũng như một ứng dụng không?
Có, chỉ cần thêm một phương thức main() tới Applet.
- Điểm khác nhau giữa các thành phần Swing và AWT?
Các thành phần AWT là nặng (heavy-weight), trong khi các thành phần Swing là gọn nhẹ (lightweight). Các thành phần nặng phụ thuộc vào bộ công cụ cửa sổ nội bộ (Local Windowing Toolkit). Ví dụ, java.awt.Button là một thành phần nặng, khi nó đang chạy trên nền tảng Java cho nền tảng Unix, nó ánh xạ tới Motif Button thực sự.
- Điểm khác nhau giữa Constructor và các phương thức khác?
Constructor phải có cùng tên với tên lớp và không thể trả về một giá trị. Chúng chỉ được gọi trong khi các phương thức thông thường có thể được gọi nhiều lần.
- Có bất kỳ giới hạn nào khi sử dụng Tính kế thừa (Inheritance)?
Có, khi tính kế thừa là kế thừa mọi thứ từ lớp cha và cả Interface, nhưng đôi khi nó có thể tạo ra đột biến (error-prone) với việc ghi đè động và nạp chồng động trong một số tình huống.
- Khi nào ArrayStoreException được ném?
Khi sao chép các phần tử giữa các mảng khác nhau, nếu tham số source hoặc tham số đích đến không là các mảng hoặc kiểu của chúng là không tương thích, thì khi đó một ArrayStoreException sẽ được ném.
- Bạn có thể gọi một Constructor này từ Constructor khác nến một lớp có nhiều Constructor không?
Có, sử dụng cú pháp this().
- Phương thức sleep() và wait() khác nhau ở điểm nào?
Ví dụ, sleep(2000); làm Thread đợi đúng 2 giây. Trong khi wait(2000); làm thời gian Thread chờ có thể lên tới 2 giây. Một Thread có thể dừng việc chờ đợi sớm hơn nếu nó nhận một lời gọi notify() hoặc notifyAll(). Phương thức wait() được định nghĩa trong lớp Object và phương thức sleep() được định nghĩa trong lớp Thread.
- ArithmeticException được ném khi nào?
ArithmeticException được ném khi chia số nguyên cho số 0 hoặc lấy phần dư của phép chia cho số 0. Nó không bao giờ được ném trong các phép toán về số thực.
- Một biến là transient (tạm thời) là gì?
Một biến transient là một biến mà không thể được xếp theo thứ tự trong Serialization và nó được khởi tạo bởi giá trị mặc định của nó trong Deserialization.
- Synchronization (Đồng bộ hóa) là gì?
Synchronization là khả năng điều khiển truy cập của nhiều Thread tới nguồn đã chia sẻ. Từ khóa synchronized trong Java cung cấp locking để đảm bảo sự truy cập tương hỗ mang tính loại trừ của nguồn đã chia sẻ và ngăn cản Data Race (Tranh đoạt dữ liệu).
- Collection API là gì?
Collection API là một tập hợp các lớp và Interface mà hỗ trợ các hoạt động trên các Collection của đối tượng.
- Trình dọn rác có bảo đảm rằng một chương trình sẽ không chạy hết bộ nhớ?
Trình dọn rác không bảo đảm rằng một chương trình sẽ không chạy hết bộ nhớ. Nó là có thể để cho các chương trình sử dụng hết nguồn bộ nhớ nhanh hơn việc chúng bị thu thập bởi trình dọn rác. Các chương trình cũng là có thể tạo các đối tượng mà không phụ thuộc vào trình dọn rác.
- Lớp cha gần nhất (trực tiếp) của lớp Applet?
Panel là lớp cha gần nhất (trực tiếp). Một panel cung cấp không gian trong đó một ứng dụng có thể đính kèm bất cứ thành phần nào, bao gồm các panel khác.
- Toán tử nào trong Java là Right-Associative?
Toán tử = là Right-Associative. (Nếu bạn chưa hiểu right và left associative, bạn theo dõi: Toán tử = cho phép bạn thực hiện nhiều phép gán trong cùng một lệnh. Ví dụ: a=b=c=d=99;)
- Điểm khác nhau giữa lệnh break và lệnh continue?
Lệnh break chấm dứt một lệnh mà nó áp dụng (switch, for, do, hoặc while). Một lệnh continue được sử dụng để kết thúc vòng lặp hiện tại và trả về điều khiển cho lệnh vòng lặp.
- Nếu một biến được khai báo là private, thì nó có thể được truy cập trong phạm vi nào?
Biến private chỉ có thể được truy cập bên trong lớp mà nó được khai báo.
- Mục đích của lớp System?
Mục đích của lớp System là cung cấp truy cập tới nguồn hệ thống.
- Liệt kê các kiểu gốc trong Java?
Có 8 kiểu dữ liệu gốc trong Java là byte, char, short, int, long, float, double và Boolean.
- Mối quan hệ giữa Clipping và Repainting dưới AWT?
Khi một cửa sổ được repaint bởi AWT Thread, nó thiết lập các khu vực Clipping thành khu vực của cửa sổ mà cần Repainting.
- Lớp nào là lớp cha gần nhất (trực tiếp) của lớp Container?
Lớp Component là lớp cha gần nhất.
- Lớp Exception nào được tạo bởi Java runtime?
Java runtime tạo các RuntimeException và Error.
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!