Câu hỏi phỏng vấn java (Phần 1)

1570

Bài viết được sự cho phép của tác giả Tin Tran

  10 Java Web Framework tốt nhất
  11 mẹo đơn giản để tăng hiệu suất Java cấp tốc

1) Java là gì?

Java là ngôn ngữ lập trình cấp cao, hướng đối tượng, mạnh mẽ, an toàn, độc lập với nền tảng, hiệu suất cao, đa luồng và ngôn ngữ lập trình di động. Nó được phát triển bởi James Gosling vào tháng 6 năm 1991. Nó cũng có thể được gọi là nền tảng vì nó cung cấp JRE và API của riêng nó.

2) Liệt kê các tính năng của ngôn ngữ lập trình Java.

Có các tính năng sau trong Ngôn ngữ lập trình Java.

Đơn giản: Java rất dễ học. Cú pháp của Java dựa trên C ++, giúp viết chương trình trong đó dễ dàng hơn.

Hướng đối tượng: Java tuân theo mô hình hướng đối tượng cho phép chúng ta duy trì mã của mình dưới dạng kết hợp của các loại đối tượng khác nhau kết hợp cả dữ liệu và hành vi.

Portable: Java hỗ trợ cách tiếp cận đọc một lần-ghi-bất cứ nơi nào. Chúng ta có thể thực hiện chương trình Java trên mọi máy. Chương trình Java (.java) được chuyển đổi thành mã byte (. Class) có thể dễ dàng chạy trên mọi máy.

Nền tảng độc lập: Java là ngôn ngữ lập trình độc lập nền tảng. Nó khác với các ngôn ngữ lập trình khác như C và C ++ cần một nền tảng để được thực thi. Java đi kèm với nền tảng mà mã của nó được thực thi. Java không phụ thuộc vào hệ điều hành được thực thi.

Bảo mật: Java được bảo mật vì nó không sử dụng các con trỏ rõ ràng. Java cũng cung cấp khái niệm về xử lý ByteCode và Exception giúp nó được bảo mật hơn.

Mạnh mẽ: Java là ngôn ngữ lập trình mạnh vì nó sử dụng quản lý bộ nhớ mạnh. Các khái niệm như thu gom rác tự động, xử lý ngoại lệ, vv làm cho nó mạnh mẽ hơn.

Architecture Neutral: Java là kiến ​​trúc trung lập vì nó không phụ thuộc vào kiến ​​trúc. Trong C, kích thước của các loại dữ liệu có thể thay đổi theo kiến ​​trúc (32 bit hoặc 64 bit) không tồn tại trong Java.

Interpreted: Java sử dụng trình thông dịch Just-in-time (JIT) cùng với trình biên dịch để thực hiện chương trình.

Hiệu suất cao: Java nhanh hơn các ngôn ngữ lập trình truyền thống khác vì mã byte của Java “gần” với mã gốc. Nó vẫn chậm hơn một chút so với ngôn ngữ được biên dịch (ví dụ: C ++).

Đa luồng: Chúng ta có thể viết các chương trình Java xử lý nhiều tác vụ cùng một lúc bằng cách xác định nhiều luồng. Ưu điểm chính của đa luồng là nó không chiếm bộ nhớ cho mỗi luồng. Nó chia sẻ một vùng nhớ chung. Chủ đề rất quan trọng đối với đa phương tiện, ứng dụng Web, v.v.

Phân tán: Java được phân phối vì nó tạo điều kiện cho người dùng tạo các ứng dụng phân tán trong Java. RMI và EJB được sử dụng để tạo các ứng dụng phân tán. Tính năng này của Java làm cho chúng ta có thể truy cập các tệp bằng cách gọi các phương thức từ bất kỳ máy nào trên internet.

Động: Java là một ngôn ngữ động. Nó hỗ trợ tải động của các lớp. Nó có nghĩa là các lớp được tải theo yêu cầu. Nó cũng hỗ trợ các chức năng từ các ngôn ngữ bản địa của nó, tức là, C và C ++.

3) Bạn hiểu gì về máy ảo Java?

Máy ảo Java là một máy ảo cho phép máy tính chạy chương trình Java. JVM hoạt động như một công cụ thời gian chạy gọi phương thức chính có trong mã Java. JVM được thực hiện trong hệ thống máy tính. Mã Java được JVM biên dịch thành một Bytecode độc lập với máy và gần với mã gốc.

4) Sự khác biệt giữa JDK, JRE và JVM là gì?

a) JVM

JVM là từ viết tắt của Java Virtual Machine, nó là một máy trừu tượng cung cấp môi trường thời gian chạy trong đó mã byte Java có thể được thực thi. Đây là chỉ định hoạt động của Máy ảo Java. Việc triển khai của nó đã được cung cấp bởi Oracle và các công ty khác. Việc thực hiện của nó được gọi là JRE.

JVM có sẵn cho nhiều nền tảng phần cứng và phần mềm (vì vậy JVM phụ thuộc vào nền tảng). Nó là một cá thể thời gian chạy được tạo khi chúng ta chạy lớp Java. Có ba khái niệm về JVM: đặc tả, triển khai và cá thể.

b) JRE

JRE là viết tắt của Java Runtime Environment . Đây là việc thực hiện JVM. Môi trường chạy Java là một tập hợp các công cụ phần mềm được sử dụng để phát triển các ứng dụng Java. Nó được sử dụng để cung cấp môi trường thời gian chạy. Đây là việc thực hiện JVM. Nó tồn tại về mặt vật lý. Nó chứa một tập hợp các thư viện + các tệp khác mà JVM sử dụng trong thời gian chạy.

c) JDK

JDK là từ viết tắt của Java Development Kit. Đây là một môi trường phát triển phần mềm được sử dụng để phát triển các ứng dụng Java. Nó tồn tại về mặt vật lý. Nó chứa các công cụ phát triển JRE +. JDK.

5) Có bao nhiêu loại vùng nhớ được phân bổ bởi JVM?

Nhiều loại:

Class(Method) Area : Vùng lưu trữ các cấu trúc trên mỗi lớp như nhóm hằng số thời gian chạy, trường, dữ liệu phương thức và mã cho các phương thức.

Heap: Đây là vùng dữ liệu thời gian chạy trong đó bộ nhớ được phân bổ cho các đối tượng

Stack: Java Stack lưu trữ các khung. Nó chứa các biến cục bộ và kết quả một phần, và đóng một phần trong việc gọi và trả về phương thức. Mỗi luồng có một ngăn xếp JVM riêng, được tạo cùng lúc với luồng. Một khung mới được tạo ra mỗi khi một phương thức được gọi. Một khung bị phá hủy khi việc gọi phương thức của nó hoàn thành.

Thanh ghi bộ đếm chương trình: Thanh ghi PC (bộ đếm chương trình) chứa địa chỉ của lệnh máy ảo Java hiện đang được thực thi.

Ngăn xếp phương thức gốc: Nó chứa tất cả các phương thức riêng được sử dụng trong ứng dụng.

6) Trình biên dịch JIT là gì?

Trình biên dịch Just-In-Time (JIT): Nó được sử dụng để cải thiện hiệu suất. JIT biên dịch các phần của mã byte có chức năng tương tự cùng một lúc và do đó làm giảm lượng thời gian cần thiết để biên dịch. Ở đây, thuật ngữ của trình biên dịch mã số Viking dùng để chỉ một trình dịch từ tập lệnh của máy ảo Java (JVM) sang tập lệnh của một CPU cụ thể.

7) Platform là gì?

Platform là môi trường phần cứng hoặc phần mềm trong đó một phần mềm được thực thi. Có hai loại platform, dựa trên phần mềm và dựa trên phần cứng. Java cung cấp platform dựa trên phần mềm.

8) Sự khác biệt chính giữa nền tảng Java và các nền tảng khác là gì?

Có những khác biệt sau đây giữa nền tảng Java và các nền tảng khác.

Java là nền tảng dựa trên phần mềm trong khi các nền tảng khác có thể là nền tảng phần cứng hoặc nền tảng dựa trên phần mềm.
Java được thực thi trên đỉnh của các nền tảng phần cứng khác trong khi các nền tảng khác chỉ có thể có các thành phần phần cứng.

9) Điều gì mang lại cho Java bản chất ‘viết một lần và chạy mọi nơi’?

Mã byte. Trình biên dịch Java chuyển đổi các chương trình Java thành tệp class (Mã Byte) là ngôn ngữ trung gian giữa mã nguồn và mã máy. Mã byte này không phải là nền tảng cụ thể và có thể được thực thi trên bất kỳ máy tính nào.

10) Trình nạp lớp ( Classloader ) là gì?

Classloader là một hệ thống con của JVM, được sử dụng để tải các tệp lớp. Bất cứ khi nào chúng ta chạy chương trình java, nó sẽ được tải trước bởi trình nạp lớp. Có ba trình nạp lớp tích hợp trong Java.

Bootstrap ClassLoader: Đây là trình nạp lớp đầu tiên là superclass của trình nạp lớp mở rộng. Nó tải tệp rt.jar chứa tất cả các tệp lớp của Java Standard Edition như các lớp gói java.lang, các lớp gói java.net, các lớp gói java.util, các lớp gói java.io, các lớp gói java.sql, v.v.
Trình mở rộng lớp tải: Đây là trình nạp lớp con của Bootstrap và trình nạp lớp cha của trình nạp lớp hệ thống. Nó tải các tệp jar nằm trong thư mục $ JAVA_HOME / jre / lib / ext.
Trình tải lớp hệ thống / ứng dụng: Đây là trình nạp lớp con của trình nạp lớp mở rộng. Nó tải các tệp lớp từ đường dẫn lớp. Theo mặc định, classpath được đặt thành thư mục hiện tại. Bạn có thể thay đổi đường dẫn lớp bằng cách sử dụng chuyển đổi “-cp” hoặc “-classpath”. Nó còn được gọi là trình nạp lớp ứng dụng.

Bài viết gốc được đăng tải tại chickencodes.com

Có thể bạn quan tâm:

Xem thêm các việc làm Java hấp dẫn tại TopDev

Báo cáo bài viết vi phạm bản quyền>>