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

Tiếp theo phần 1. Chúng ta tiếp tục đến với phần 2 loạt các câu hỏi phỏng vẫn khi bạn tham gia tuyển dụng lập trình viên Java, giúp bạn tự tin và ghi điểm với các nhà tuyển dụng.

Nhà tuyển dụng: Bạn hãy liệt kê 5 tính chất (bất kỳ) của Java?
Ứng viên:
Một số tính chất tiêu biểu của Java là:
+ Hướng đối tượng (Object-oriented)
+ Độc lập nền tảng (Không phụ thuộc vào hệ điều hành mà ứng dụng chạy, chạy được trên cả Windows, Linux, Unix)
+ Hỗ trợ lập trình đa luồng (multi-thread)
+ Chạy thông dịch (sau khi biên dịch, Java byte-code chạy thông dịch trên JVM)
+ Độ tin cậy cao (robust). Thể hiện ở khả năng tự động quản lý và thu hồi bộ nhớ (garbage collection), xử lý ngoại lệ, kiểm tra lỗi trong tiến trình thực thi nghiêm ngặt, kiểu dữ liệu strong type (Java không thể chuyển đổi kiểu dữ liệu ngầm định, PHP không phải là ngôn ngữ có kiểu dữ liệu strong type).</dd>

Nhà tuyển dụng:  Tại sao Java có thể xây dựng ứng dụng hiệu suất cao (high performance)?
Ứng viên: Java sử dụng trình biên dịch Just-In-Time (JIT) cho phép thúc đẩy hiệu năng (hiệu suất của ứng dụng). Just-In-Time chuyển mã nguồn Java mà lập trình viên soạn ra thành byte-code, đó là các chỉ thị/lệnh mà chúng có thể đến bộ vi xử lý, hạn chế các bước trung gian.

Nhà tuyển dụng: Tại sao Java có kiến trúc trung lập (architecture neutral)?
Ứng viên: Sau khi biên dịch mã nguồn Java từ các tập tin *.java, byte-code có thể thực thi trên JVM, JVM có thể chạy trên hầu hết các kiến trúc vi xử lý, hầu hết các hệ điều hành.

Nhà tuyển dụng: Kể tên 2 IDE Java mà bạn biết?
Ứng viên: Eclipse, Netbeans

Nhà tuyển dụng: Liệt kê 3 từ khóa bất kỳ dùng trong Java mà không có trong C/C++?
Ứng viên: import, super, finally.

Nhà tuyển dụng: Thế nào là một Java applet?
Ứng viên: Java applet là ứng dụng Java chạy trong trình duyệt web. Một ứng dụng Java applet vận hành tương tự như một chương trình Java thông thường, bởi vì nó có thể gọi rất nhiều các class, phương thức mà thư viện hỗ trợ. Tuy nhiên hiện nay công nghệ này hầu như không được sử dụng, được thay thể bởi Adobe flash, sau nữa là HTML5, Javascript.

Nhà tuyển dụng: Cấu trúc của một class Java?
Ứng viên: Class mô tả chi tiết các đặc điểm, hành vi của đối tượng. Một class chứa các fields (trường, thể hiện tính chất/đặc điểm của đối tượng) và các phương thức (method) mô tả hành vi của đối tượng.

Nhà tuyển dụng: Để biểu diễn nhiệt độ ngoài trời, chúng tôi dùng biến có tên outdoorTemperature. Do sơ suất, lập trình viên quên chưa gán giá trị nhiệt độ ngoài trời. Chương trình dưới đây có biên dịch được không? Nếu biên dịch được thì khi chạy sẽ trả về kết quả gì?

Ứng viên: Chương trình biên dịch được. Thậm chí khi biến float outdoorTemperature chưa được gán giá trị bởi lập trình viên, thì nó đã mang giá trị mặc định là 0.0 . Vì thế mà chương trình ghi ra màn hình console là 0.0 .

Nhà tuyển dụng: Vẫn liên quan đến chương trình trên, nếu thay kiểu dữ liệu float (viết thường) thành Float (viết hoa)? Chương trình có biên dịch được không? Nếu biên dịch được thì khi chạy sẽ trả về kết quả gì?

Ứng viên: Chương trình biên dịch được, chạy được, ghi ra màn hình console là: null. Ở đây khai báo outdoorTemperature là một Object, khác hẳn với trường hợp trên là khai báo 1 biến, vì object outdoorTemperature chưa được khởi tạo, nên nó sẽ là null.

Nhà tuyển dụng: Dưới đây là một ứng dụng đa luồng (multi-thread), có 2 class đặt trong package com.smartJob.demo

File SmartJobThread.java

File FunnyThreads.java

Ứng dụng trên có biên dịch được không? Nếu biên dịch được, kết quả trả về khi chạy method main trong class FunnyThreads là gì? Luồng đi của ứng dụng như thế nào?

Ứng viên: Chương trình trên biên dịch được. Chương trình thực sự bắt đầu khi gọi đến t.start(); Khi đó khởi tạo Thread dẫn đến gọi constructor của SmartJobThread, do đó in ra ký tự SmartJob, sau đó gọi đến method run() trong nội tại, dẫn đến in ra ký tự foo. Kết quả chúng ta có ký tự in ra là: SmartJob foo.

 

Tải về mã nguồn sử dụng trong bài viết: JavaInterview

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. Đội ngũ kỹ thuật SmartJob sẽ giúp bạn.

Đỗ Như Vý – developer tại SmartJob

Mời các bạn đọc tiếp phần 3


câu hỏi phỏng vấn,
câu hỏi phỏng vấn xin việc,
câu hỏi tuyển dụng,
java,
JDK,
JRE,
OOP,