post-image

Câu hỏi phỏng vấn lập trình viên Java (phần 1)

1. Tổng quan

Nhà tuyển dụng: Java là tên một loại cafe được trồng trên đảo Java của Indonesia đúng không?
Ứng viên: Không anh ạ. Java là ngôn ngữ lập trình bậc cao, được sáng lập và phát triển bởi Sun Microsystems và phát hành vào năm 1995. Java chạy được trên hầu hết các nền tảng máy tính phổ biến Windows, Linux, Unix (Ví dụ như MacOS hay Solaris).

Nhà tuyển dụng: Thế nào là biến tĩnh (static variable)?
Ứng viên: Biến trong class được coi là biến tĩnh (static) nếu nó được khai báo với từ khóa “static” ở phía trước, bên ngoài phương thức (method), hàm tạo (constructor) hoặc khối lệnh.

Nhà tuyển dụng: Tại sao StringBuffer được gọi là “khả biến” (mutable: có khả năng biến đổi, khả biến)?
Ứng viên: Class java.lang.String là bất biến (immutable). Một khi đối tượng (object) thuộc kiểu String thì bất biến. Nếu cần thao tác trên xâu ký tự (xóa, thêm, sửa, v.v..) chúng ta sẽ dùng đối tượng xâu ký tự “khả biến” (immutable), đó là java.lang.StringBuffer .

Nhà tuyển dụng: Bốn tính chất cơ bản của lập trình hướng đối tượng là gì?
Ứng viên: Kế thừa (Inheritance) – Trừu tượng (Abstract) – Đa hình (Polymorphism) – Bao đóng (Encapsulation ).

Nhà tuyển dụng: Có các đối tượng trong thực tế được thể hiện trong các class Java là: Xe máy nói chúng  —> Motorbike.java , Xe máy Honda Wave –> WaveMotor.java,  Xe máy Suzuki Viva –> VivaMotor.java . Để tận dụng sức mạnh của Lập trình hướng đối tượng, bạn sử dụng 1 trong 4 tính chất kể trên. Đó là tính chất nào?
Ứng viên: Sử dụng tính chất “Kế thừa”. Mọi xe máy đều có 2 bánh, có 2 phanh, có 1 bình acquy, có 4 đèn xi-nhan.
Xe máy Honda (class WaveMotor) được “extend” từ class Motorbike, có thêm thuộc tính (properties) nhà sản xuất (manufacture) là Honda. Xe máy Suzuki (class VivaMotor) được “extend” từ class Motorbike, có thêm thuộc tính (properties) nhà sản xuất (manufacture) là Suzuki.

Nhà tuyển dụng: Thế nào là Wrapper class?
Ứng viên: Là các class cho phép các kiểu dữ liệu nguyên thủy (primitive type) có thể được truy cập như đối tượng (object). Ví dụ: java.lang.Integer, java.lang.Character, java.lang.Double, java.lang.Boolean v.v.. Tất cả các class wrapper là bất biến (không có khả năng biến đổi: immutable).

Nhà tuyển dụng: Sự khác nhau của throw và throws ?
Ứng viênthrow được sử dụng để cảnh báo một ngoại lệ/lỗi có thể kiểm soát (checked exception). “throws” được dùng để cảnh báo những lỗi/ngoại lệ không có khả năng kiểm soát (unchecked exception).

Nhà tuyển dụng: Cho biết sự khác nhau của 4 loại tầm vực (visible/ access modifer): public, default, private, protected tác động lên một phương thức?
Ứng viên: Phạm vi truy cập của phương thức được mô tả trong ma trận sau

java-member-access-levels

Nhà tuyển dụng: So sánh checked và unchecked exception?
Ứng viên: Checked exception: là các lỗi được phát hiện ngay trong khi biên dịch.

Unchekced exception: Các lỗi xảy ra trong quá trình vận hành, dù chương trình đã biên dịch thành công.

Hỏi: Tại sao Java không hỗ trợ đa kế thừa (Java programming language does not permit you to extend more than one class)?

Hỏi: Cho ví dụ minh họa sự khác nhau giữa nạp chồng (override) và quá tải (overload) phương thức (method)?

Hỏi: So sánh sự giống và khác nhau giữa ArrayList và Vector?

Hỏi: Kỹ thuật design pattern nổi bật nhất được sử dụng trong Struts2 framework là gì?

Hỏi: Bạn có thể override một static method trong Java không?

Hỏi: Java là ngôn ngữ lập trình biên dịch (compile) hay thông dịch (scripting language)?

Hỏi: Sự khác nhau giữa JDK và JRE?

Hỏi: Thế nào là JIT compiler (Just In Time)?

Hỏi: Thế nào là classloader?

Hỏi: Tầm vực của class/biến/phương thức và tính bao đóng (encapsulation, một tính chất của lập trình hướng đối tượng) có liên quan gì với nhau không?

Hỏi: Thế nào là constructor, constructor có phải là một phương thức không?

Hỏi: Thế nào là phương thức tĩnh (static method)?

Hỏi: Phương thức void là gì?

Hỏi: Có thể lập trình ứng dụng sử dụng công nghệ EJB (Enterprise Java Bean) sau đó đóng gói rồi chạy trên máy chủ Apache Tomcat 8 không?

Hỏi: Để mapping giữa cơ sở dữ liệu quan hệ (SQL database) và đối tượng (Entity) bằng công nghệ Hibernate, có 2 cách: Mapping dùng các tập tin XML và dùng annotation (tính năng được hỗ trợ từ Java 5). Ưu, nhược điểm của mỗi phương pháp là gì?

Hỏi: Tại sao phương thức main là static?

Hỏi: Java có hỗ trợ con trỏ (pointer) như C++ không?

Hỏi: Có thể overload phương thức main không?

Hỏi: Thế nào là final method?

v.v..

Nếu bạn có bất kỳ vướng mắc hay sự chia sẻ nào liên quan đến nội dung bài viết, hãy comment phía dưới.

Tham gia KHOÁ HỌC CGC JAVA TRỞ THÀNH LẬP TRÌNH VIÊN JAVA FULL-STACK TRONG 6 THÁNG

Leave a Reply

Your email address will not be published. Required fields are marked *