Tổng hợp câu hỏi phỏng vấn Java (Phần 1)

NỘI DUNG BÀI VIẾT

Java Core – java cơ bản


1. Sự khác nhau giữa JDK,JRE và JVM?

JVM

JVM (viết tắt của Java Virtual Machine) là một thiết bị trừu tượng (ảo) có thể giúp máy tính chạy các chương trình Java. Nó cung cấp môi trường runtime mà trong đó Java Bytecode có thể được thực thi.

JRE

JRE (là viết tắt của Java Runtime Environment) được sử dụng để cung cấp môi trường runtime. Nó là trình triển khai của JVM. JRE bao gồm tập hợp các thư viện và các file khác mà JVM sử dụng tại runtime. Trình triển khai của JVM cũng được công bố bởi các công ty khác ngoài Sun Micro Systems.

JDK

JDK (là viết tắt của Java Development Kit) bao gồm JRE và các Development Tool.

2. Sự khác nhau giữa bộ nhớ heap và stack trong java?

Stack là một vùng nhớ được sử dụng để lưu trữ các tham số và các biến local của phương thức mỗi khi một phương thức được gọi ra.

Heap là một vùng nhớ trong bộ nhớ được sử dụng để lưu trữ các đối tượng khi từ khóa new được gọi ra, các biến static và các biến toàn cục (biến instance)

3. Trình biên dịch JIT là gì?

Trình biên dịch JIT (Just-In-Time) được sử dụng để tăng hiệu suất biên dịch chương trình. Trình JIT biên dịch từng phần của byte code có chức năng giống nhau tại cùng một thời điểm, do đó sẽ giảm được thời gian biên dich. Ở đây, thuật ngữ “trình biên dịch” dùng để chỉ trình dịch từ tập lệnh của một máy ảo Java (JVM) tới tập lệnh của một CPU cụ thể.

4. Platform là gì?

Bất cứ môi trường phần cứng hoặc phần mềm nào mà trong đó có một chương trình chạy, thì được hiểu như là một Platform. Với môi trường runtime riêng cho mình (JRE) và API, Java được gọi là Platform

5. Sự khác nhau giữa Java platform và các platform khác?

Java platform khác với hầu hết các nền tảng khác theo nghĩa nó là một nền tảng dựa trên phần mềm chạy trên các nền tảng phần cứng khác. Nó có hai thành phần:

  1. Môi trường thực thi (Runtime)
  2. API(Application Programming Interface)

6. Tính chất “viết một lần chạy nhiều nơi” của java là gì?

Java code được biên dịch thành một byte code, là ngôn ngữ trung gian giữa mã nguồn và mã máy. Byte code này không phải là nền tảng cụ thể và do đó có thể được thông dịch cho bất kỳ nền tảng nào.

7. Classloader trong java là gì?

Classloader là một hệ thống con của JVM được sử dụng để tải các lớp và các interface. Có rất nhiều loại Classloader ví dụ: Bootstrap classloader, Extension classloader, System classloader, Plugin classloader…

class A{  
    public static void main(String args[]){  
        System.out.println("Hello java");  
    }
}  

Tham khảo khoá học lập trình web trong vòng 6 tháng, đảm bảo 100% công việc đầu ra!

8. File có tên trống “.java” có hợp lệ không?

Có, bạn có thể lưu file java với tên “.java”, sau đó biên dịch bằng lệnh javac .java và chạy bằng lệnh java ten_lop. Ví dụ:

9. Các từ delete, next, main, exit và null có phải là từ khóa trong java không?

Không.

10. Nếu không cung cấp bất kỳ đối số nào trên command line, thì mảng String của hàm main là empty hay null?

Mảng String là empty, không phải null.

11. Chuyện gì xảy ra nếu khai báo static public void thay vì public static void?

Chương trình được biên dịch và run đúng.

12. Giá trị mặc định của các biến local là gì?

Các biến local không được khởi tạo với bất kỳ giá trị mặc định nào, bất kể là nguyên thủy hay tham chiếu đối tượng.

Java Core – các khái niệm về OPPs

Có hơn 50 câu hỏi phỏng vấn OPPs, chúng được phân chia thành các nhóm bao gồm câu hỏi phỏng vấn constructor, câu hỏi phỏng vấn static, câu hỏi phỏng vấn kế thừa, câu hỏi phỏng vấn đa hình, câu hỏi phỏng vấn trừu tượng…

1. Sự khác biệt giữa ngôn ngữ lập trình hướng đối tượng và ngôn ngữ lập trình dựa trên đối tượng là gì?

Ngôn ngữ lập trình dựa trên đối tượng thực hiện theo tất cả các tính năng của OOPs ngoại trừ tính kế thừa. Ví dụ về các ngôn ngữ lập trình dựa trên đối tượng là JavaScript, VBScript,…

2. Giá trị khởi tạo của biến tham chiếu đối tượng được định nghĩa là biến instance là gì?

Trong java, các tham chiếu của đối tượng được khởi tạo là null.

Java Core – các khái niệm về OPPs: Câu hỏi phỏng vấn Constructor

1. Constructor là gì?

Constructor giống như một phương thức được sử dụng để khởi tạo trạng thái của một đối tượng. Nó được gọi ra vào thời điểm tạo ra đối tượng.

2. Mục đích của constructor là gì?

Constructor mặc định cung cấp các giá trị mặc định cho các đối tượng. Trình biên dịch java tạo ra một constructor mặc định chỉ khi không có constructor nào trong lớp.

3. Constructor trả về kiểu giá trị gì?

Constructor trả về thể hiện của lớp hiện tại.

4. Constructor được kế thừa không?

Không, constructor không được kế thừa.

5. Có thể tạo constructor final không?

không, constructor không thể là final.

Java Core – các khái niệm về OPPs: Câu hỏi phỏng vấn từ khóa static

1. Biến static là gì?

  • Biến static có thể được sử dụng để tham chiếu thuộc tính chung của tất cả đối tượng (mà không là duy nhất cho mỗi đối tượng), ví dụ như tên công ty của nhân viên, tên trường học của các sinh viên, …
  • Biến static lấy bộ nhớ chỉ một lần trong Class Area tại thời gian tải lớp đó.

2. Phương thức static là gì?

  • Một phương thức static thuộc lớp chứ không phải đối tượng của lớp.
  • Một phương thức static gọi mà không cần tạo một instance của một lớp.
  • Phương thức static có thể truy cập biến static và có thể thay đổi giá trị của nó.

3. Tại sao phương thức main là static?

Bởi vì không cần thiết phải tạo đối tượng để gọi phương thức static. Nếu nó là phương thức non-static, JVM đầu tiên tạo đối tượng và sau đó gọi phương thức main() mà có thể gây ra vấn đề về cấp phát bộ nhớ bộ nhớ phụ.

4. Khối static là gì?

  • Được sử dụng để khởi tạo thành viên dữ liệu static.
  • Nó được thực thi trước phương thức main tại lúc tải lớp.

5. Chúng ta có thể thực thi một chương trình không có phương thức main() không?

Có, một cách khác là sử dụng khối static.

6. Chuyện gì xảy ra khi phương thức main không có static?

Chương trình được biên dịch, nhưng gặp lỗi ngoại lệ tại runtime là “NoSuchMethodError”.

Nguồn: https://viettuts.vn/interview/list-cau-hoi-phong-van-java-core

Bài viết liên quan

Leave a Reply

Your email address will not be published.