Avatar's hoanglien304

Ghi chép của hoanglien304

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

Bạn ghé thăm SmartJob.vn, có thể bạn đang tìm một công việc liên quan đến lập trình Java. Sau khi ứng tuyển, một vòng phỏng vấn đã ở phía trước. Việc học tủ những câu hỏi phỏng vấn thường gặp là một sự chuẩn bị rất hữu ích.

Nhà tuyển dụngJava là tên một loại cafe được trồng trên đảo Java của Indonesia đúng không?
Ứng viênKhô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ụngThế 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-levelsGiải thích tiêu đề hàng đầu tiên:
class: trong cùng 1 class
package: trong cùng 1 gói (package)
subclass: gọi trong class kế thừa (class con)
world: toàn cục (nơi bất kỳ trong ứng dụng)
Giải thích tiêu đề cột đầu tiên:
public: toàn cục
protected: chỉ các class con, kế thừa từ class con mới được truy cập method của class cha
no modifier*: ta hiểu là mặc định, tức không có từ khóa tầm vực đứng phía trước
private: chỉ trong nội bộ class mới gọi được.

v.v..

java_interview_question

 

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. Nếu đoạn mã nào đó trong phương thức đẩy ra một “checked exception”, để xử lý các lỗi này, dùng từ khóa “throws”. Ví dụ sau sẽ minh họa trực quan hơn.