100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

Ngôn ngữ lập trình Java luôn đứng vững trong danh sách các ngôn ngữ lập trình thông dụng nhất. Chính vì mức độ phổ biến đó mà việc bắt gặp một yêu cầu tuyển dụng lập trình viên Java không phải là quá khó. Tuy nhiên để có sự chuẩn bị cho buổi phỏng vấn tốt nhất dù bạn là người tuyển dụng hay là một lập trình viên Java thì đều cần có sẵn một hệ thống kiến thức nhất định cần - phải - biết để vượt qua được vòng phỏng vấn cơ bản nhấ. Dưới đây là danh sách hơn 100 câu hỏi phỏng vấn Java bạn nên tham khảo trước khi tham gia các cuộc phỏng vấn Java để chắn chắn rằng bạn có một buổi phỏng vấn an toàn.

Show

Dưới đây là Series "Phỏng vấn phải hỏi gì?" với các câu hỏi phỏng vấn cơ bản và cần thiết nhất được team viecTOP gợi ý, ngoài giúp ứng viên thì còn hỗ trợ các HR đánh giá sàng lọc ứng viên trong vị trị LẬP TRÌNH VIÊN JAVA hiệu quả hơn, tránh trường hợp bỏ lỡ nhân tài cho công ty.

100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

Các câu hỏi phỏng vấn Java chung

1/JVM là gì? Tại sao Java được gọi là ngôn ngữ lập trình không phụ thuộc vào nền tảng (Platform Independent Programming Language)?

Câu trả lời: Java Virtual Machine (JVM) là quy trình máy ảo có thể thực thi các Java bytecode. Mỗi một Java source file được biên dịch ra một bytecode file. Java được thiết kế để các chương trình ứng dụng có thể chạy trên bất kỳ nền tảng nào mà không cần phải viết lại chương trình nhờ vào Java JMV. Cũng chính vì vậy mà các ứng dụng Java còn được gọi là WORA (Write Once Run Anywhere – Viết một lần chạy mọi nơi).

2/ Bạn hãy cho biết sự khác nhau giữa JDK và JRE

The Java Runtime Environment (JRE) là trình triển khai của Java Virtual Machine (JVM) nơi mà chương trình Java của bạn được thực thi. Nó cũng bao gồm các plugins trình duyệt để thực thi các applet.

Java Development Kit (JDK) là công nghệ cốt lõi của Software Development Kit của Java. Nó bao gồm JRE, trình biên dịch và các công cụ như JavaDoc, Java Debugger. JDK dùng để phát triển, biên dịch và thực thi các ứng dụng Java

3/ Từ khóa Static có nghĩa là gì? Bạn có thể ghi đè (override) private hay static method trong Java không?

Từ khóa static trong Java được sử dụng chính để quản lý bộ nhớ. Chúng ta có thể áp dụng từ khóa static với các biến, các phương thức, các khối, các lớp lồng nhau(nested class). Từ khóa static thuộc về lớp chứ không thuộc về instance(thể hiện) của lớp.

Trong java, Static có thể là:

  1. Biến static: Khi bạn khai báo một biến là static, thì biến đó được gọi là biến tĩnh, hay biến static.
  2. Phương thức static: Khi bạn khai báo một phương thức là static, thì phương thức đó gọi là phương thức static.
  3. Khối static: Được sử dụng để khởi tạo thành viên dữ liệu static.

(Nguồn: Viettuts)

Bạn không thể ghi đè static method trong Java.

4/ Bạn có thể truy cập một biến non-static trong một ngữ cảnh static (static context) được không?

Một biến static phụ thuộc vào lớp của nó và giá trị của nó sẽ tồn tại (giữ) cho tất cả các thực thể của lớp đó. Biến static được tạo ra khi lớp chứa đó được tải (load) bởi JVM. Nếu cố gắng truy cập vào một biến non-static (trong hàm static) mà không có trong thực thể (instance) nào thì trình biên dịch sẽ báo lỗi, bởi vì những biến non-static đó chưa được khởi tạo và chúng không có ràng buộc với bất kỳ thực thể nào.

**Nguồn: gpcoder

5/ Có những kiểu dữ liệu nào trong Java. Autoboxing và Unboxing là gì?

Có 8 kiểu dữ liệu cơ bản được Java hỗ trợ:

  • byte
  • short
  • int
  • long
  • float
  • double
  • boolean
  • char

Autoboxing là quá trình mà trình biên dịch của Java tự động chuyển đổi giữa kiểu dữ liệu cơ bản (Primitive type) về đối tượng tương ứng với lớp (Wrapper class) của kiểu dữ liệu đó. Ví dụ, trình biên dịch sẽ chuyển đổi kiểu dữ liệu int sang Integer, kiểu double sang Double, …Và ngược lại là unboxing. Đây là tính năng mới của Java 5.

6/ Function Overriding và Overloading là gì trong Java?

Phương thức overloading trong Java xảy ra khi hai hoặc nhiều phương thức trong cùng một lớp có cùng tên nhưng có các biến khác nhau. Trong khi đó, phương thức overriding được định nghĩa trong trường hợp khi một lớp con định nghĩa lại một phương thức đã có mặt ở lớp cha. Các phương thức overriding phải cùng tên, danh sách đối số và kiểu trả về. Phương thức overriding có thể không giới hạn truy cập phương thức mà nó override.

7/ Bạn hãy cho biết Constructor, Constructor Overloading, Copy-Constructor là gì trong Java?

Contractor là một dạng đặc biệt của phương thức được sử dụng để khởi tạo các đối tượng. Java Constructor được gọi tại thời điểm tạo đối tượng. Nó khởi tạo các giá trị để cung cấp dữ liệu cho các đối tượng, đó là lý do tại sao nó được gọi là constructor.

Constructor Overloading là một kỹ thuật trong Java. Bạn có thể tạo nhiều constructor trong cùng một lớp với danh sách tham số truyền vào khác nhau. Trình biên dịch phân biệt các constructor này thông qua số lượng và kiểu của các tham số truyền vào.

Java không hỗ trợ copy constructor như trong C++.

8/ Java có hỗ trợ đa kế thừa (multiple inheritance) không?

Không, Java không hỗ trợ đa kế thừa (và cả kiểu kế thừa lai – Hybrid inheritance) thông qua các class. Tuy nhiên, bạn vẫn có thể đạt được tính đa kế thừa trong Java thông qua các interface.

9/ Truyền theo tham chiếu (Pass by reference) và truyền theo giá trị (pass by value) là gì?

  • Pass-by-value được hiểu là khi thay đổi biến trong hàm thì ngoài hàm sẽ không bị ảnh hưởng. Nó giống như bạn copy giá trị của biến vào biến khác rồi truyền vào hàm.
  • Pass-by-reference là khi thay đổi biến trong hàm cũng làm ngoài hàm bị ảnh hưởng. Nó giống như bạn truyền đúng địa chỉ của biến đó vào hàm.

**Nguồn: kipalog

Câu hỏi phỏng vấn Java Threads

1/ Bạn hãy cho biết sự khác nhau giữa các process và các threads?

Một process là một quá trình thực thi của một chương trình trong khi Thread (Luồng) là một thực thi đơn bên trong một process. Một process có thể có thể có đa luồng (multiple threads). Một Thread có thể được gọi là một Quy Trình Nhẹ (lightweight process).

2/ Bạn hãy cho biết các cách khác nhau để tạo một Luồng (Thread). Bạn thường dùng cách nào và tại sao?

Có ba cách để tạo Thread:

  • Cách 1: tạo luồng bằng cách kế thừa từ lớp thread
  • Cách 2: Tạo luồng bằng cách implement từ Interface Runnable
  • Cách 3: một ứng dụng có thể dụng Executor framework để tạo thread pool

Cách tạo luồng bằng cách implement từ Interface Runnable thường được dùng vì không cần một object thừa kế từ lớp Thread. Trong trường hợp ứng dụng của bạn sử dụng đa thừa kế (multiple inheritance) thì đây là cách duy nhất. Bên cạnh đó, thread pool là rất hiệu quả và có thể dễ dàng thực hiện và sử dụng.

3/ Bạn hãy giải thích ngắn gọn các trạng thái có thể có của một luồng

Trong quá trình thực thi, một thread có thể có các trạng thái sau:

  1. New: Thread ở trạng thái new nếu bạn tạo một instance của lớp Thread nhưng trước khi gọi phương thức start()
  2. Runnable: thread sẵn sang để thực thi nhưng không nhất thiết phải bắt đầu thực thi ngay
  3. Running: vi xử lý bắt đầu thực thi thread code
  4. Non-Runnable (Blocked): bao gồm blocked on I/O và blocked on Synchronization. Đây là trạng thái khi luồng vẫn còn tồn tại, nhưng hiện tại không đủ điều kiện để chạy.
  5. Terminated: kết thúc thực thi.

4/ Bạn hãy giải thích sự khác nhau giữa phương thức đồng bộ (synchronized method) và đồng bộ khối (synchronized block)

Trong lập trình Java, mỗi đối tượng (object) có một khóa (lock). Một luồng có thể nhận được khóa cho một đối tượng bằng cách dùng từ khóa đồng bộ (synchronized keyword). Từ khóa synchronized có thể áp dụng ở cấp độ method (coarse grained lock) hoặc cấp độ block (fine grained lock).

5/ Làm thế nào để việc đồng bộ phương thức xảy ra bên trong một monitor? Các cấp độ nào của việc đồng bộ bạn có thể áp dụng?

JVM sử dụng khóa kết hợp với monitor. Monitor về cơ bản là công cụ giám sát theo dõi một chuỗi mã được đồng bộ hóa và đảm bảo rằng mỗi lần chỉ có một thread thực thi. Mỗi monitor được liên kết với một đối tượng tham chiếu. Thread không được phép thực cho đến khi nó nhận được khóa.

6/ Deadlock là gì?

Deadlock là một trạng thái xảy ra khi có hai processes mà process này chờ cho process kia thực thi xong trước khi tiếp tục. Kết quả là cả hai process đều chờ vô thời hạn.

7/ Làm thế nào để tránh deadlock trong Java?

Để tránh deadlock chúng ta có thể dùng các cách sau:

  • Tránh Nested Locks: một deadlock có thể xảy ra khi bạn cung cấp các khóa cho nhiều thread. Vì vậy cần tránh cấp khóa cho multiple threads nếu đã cấp cho một thread.
  • Tránh các khóa không cần thiết: chỉ cấp khóa cho các đối tượng cần.
  • Dùng Thread.join() với thời gian thực thi tối đa

Các câu hỏi phỏng vấn Java Collections

1/ Bạn hãy cho biết các interface cơ bản của bộ thư viện Java Collections framework.

Java Collections Framework cung cấp một tập hợp các intrefaces và classes được thiết kế để hỗ trợ các hoạt động trên một tập hợp các objects. Các giao diện cơ bản trong Java Collections Framework là:

  • Collection interface:  Collection Interface định nghĩa những phương thức cơ bản khi làm việc với tập hợp, đây là gốc cũng là nền móng để từ đó xây dựng lên cả bộ thư viện Java Collection Framework. Collection Interface được kế thừa từ Iterable Interface nên các bạn có thể dễ dàng duyệt qua từng phần tử thông qua việc sử dụng Iterator.
  • Set interface: Set (tập hợp) là kiểu dữ liệu mà bên trong nó mỗi phần tử chỉ xuất hiện duy nhất một lần (tương tự như tập hợp trong toán học vậy) và Set Interface cung cấp các phương thức để tương tác với set. Set Interface được kế thừa từ Collection Interface nên nó cũng có đầy đủ các phương thức của Collection Interface.
  • List interface: List (danh sách) là cấu trúc dữ liệu tuyến tính trong đó các phần tử được sắp xếp theo một thứ tự xác định. List Interface định nghĩa các phương thức để tương tác với list cũng như các phần tử bên trong list. Tương tự như Set Interface, List Interface cũng được kế thừa và có đầy đủ các phương thức của Collection Interface.
  • Queue interface: Queue (hàng đợi) là kiểu dữ liệu nổi tiếng với kiểu vào ra FIFO (first-in-first-out hay vào trước ra trước), tuy nhiên với Queue Interface thì queue không chỉ còn dừng lại ở mức đơn giản như vậy mà nó cũng cấp cho bạn các phương thức để xây dựng các queue phức tạp hơn nhiều như priority queue (queue có ưu tiên), deque (queue 2 chiều), … Và cũng giống như 2 interface trước, Queue Interface cũng kế thừa và mang đầy đủ phương thức từ Collection Interface
  • Map interface: Map (đồ thị/ánh xạ) là kiểu dữ liệu cho phép ta quản lý dữ liệu theo dạng cặp key-value, trong đó key là duy nhất và tương ứng với 1 key là một giá trị value. Map Interface cung cấp cho ta các phương thức để tương tác với kiểu dữ liệu như vậy. Không giống như các interface ở trên, Map Interface không kế thừa từ Collection Interface mà đây là 1 interface độc lập với các phương thức của riêng mình

2/ Bạn hãy giải thích tại sao Collection không mở rộng Cloneable và Serializable interfaces?

Lý do là Collection là interface gốc của tất cả các lớp collection (như ArrayList, LinkedList). Nếu collection interface mở rộng Cloneable/Serializable interfaces thì nó bắt buộc tất cả các triển khai cụ thể của interface này để triển khai các cloneable and serializable interfaces. Để mang lại sự tự do cho các lớp triển khai cụ thể, giao diện Collection interface không mở rộng Cloneable hay Serializable interfaces.

3/ Iterator là gì trong Java?

Iterator trong Java là một interface được sử dụng để thay thế Enumerations trong Java Collection Framework. Bạn có thể sử dụng iterator để: 

  • Duyệt các phần tử từ đầu đến cuối của một collection. 
  • Iterator cho phép xóa phần tử khi lặp một collection. 
  • Với một số phương thức của Iterator mà bạn có thể tham khảo.

4/ Bạn hãy giải thích sự khác nhau giữa Iterator và ListIterator

  • Một  Iterator có thể được dùng để duyệt các Set và List collections, trong khi ListIterator chỉ có thể dùng để lặp lại List .
  • Iterator có thể duyệt một collection theo hướng chuyển tiếp trong khi ListIterator có thể duyệt theo hai hướng.
  • ListIterator triển khai Iterator interface và chứa các chức năng bổ sung như thêm phần tử, thay thế phần tử, lấy vị trí index của các phần tử trước và sau…

5/ Bạn hãy cho biết sự khác nhau giữa fail-fast và fail-safe?

Thuộc tính fail-safe của Iterator hoạt động với bản sao của collection bên dưới và do đó, nó không bị ảnh hưởng bởi bất kỳ sửa đổi nào trong collection. Tất cả các collection classes trong gói java.util package là fail-fast, trong khi các collection classes trong java.util.concurrent là fail-safe. Fail-fast iterators Fail-fast iterators cho ra một ConcurrentModificationException, trong khi fail-safe iterator không bao giờ cho ra một ngoại lệ (exception ) như vậy.

Các câu hỏi về xử lý ngoại lệ trong phỏng vấn Java

1/ Bạn hãy cho biết hai kiểu Xử lý ngoại lệ (Exceptions) trong Java và sự khác nhau giữa chúng là gì?

Java có 2 kiểu xử lý ngoại lệ: checked exceptions và unchecked exceptions

Checked Exceptions: Là một ngoại lệ được kiểm tra và thông báo bởi trình biên dịch tại thời điểm biên dịch, chúng cũng có thể được gọi là ngoại lệ thời gian biên dịch (Compile-time Exceptions). Và lập trình viên không thể lường trước.

Ví dụ: Bạn muốn mở một file để đọc nhưng tệp được chỉ định lại không tồn tại. Thì FileNotFoundExeption sẻ xảy ra và trình biên dịch sẽ thông báo tới lập trình viên nhằm xử lý ngoại lệ đó.

Unchecked Exceptions: Là một ngoại lệ không được kiểm tra trong quá trình biên dịch. Chúng cũng được gọi là ngoại lệ thời gian chạy (Runtime Exceptions). Là ngoại lệ có thể tránh được bởi lập trình viên. Unchecked Exceptions kế thừa từ Runtime Exception.

Ví dụ: ArithmaticException, ArrayIndexOutOfBoundsException, NullPointerException,…chúng được kiểm tra tại Runtime.

2/ Sự khác nhau giữa Exception và Error trong Java là gì?

  • Trong Java, Exception là một sự kiện mà phá vỡ luồng chuẩn của chương trình. Nó là một đối tượng mà được ném tại Runtime. Một exception (ngoại lệ) trong Java là một vấn đề xảy ra trong quá trình thực hiện của chương trình. Một ngoại lệ có thể xảy ra với nhiều lý do khác nhau, như dưới đây:
  • Người dùng nhập dữ liệu không hợp lệ.
  • Một file cần được mở nhưng không thể tìm thấy.
  • Kết nối mạng bị ngắt trong quá trình thực hiện giao tiếp hoặc JVM hết bộ nhớ.
  • Lớp Error định nghĩa các ngoại lệ mà chương trình không chấp nhật bắt (hay bẫy). Vấn đề xảy ra vượt quá tầm kiểm soát của lập trình viên hay người dùng. Error được bỏ qua trong code của bạn vì bạn hiếm khi có thể làm gì đó khi chương trình bị error. Ví dụ như OutOfMemoryError, VirtualMachineError, AssertionError, … Nó được bỏ qua trong quá trình Java biên dịch.

3/ Hãy cho biết sự khác nhau giữa throw và throws

Sự khác nhau giữa throw và throws

  • Từ khoá throw trong java được sử dụng để ném ra một ngoại lệ (Exception) cụ thể.
  • Từ khóa throws trong java được sử dụng để khai báo một ngoại lệ. Nó thể hiện thông tin cho lập trình viên rằng có thể xảy ra một ngoại lệ, vì vậy nó là tốt hơn cho các lập trình viên để cung cấp các mã xử lý ngoại lệ để duy trì luồng bình thường của chương trình.

4/ Bạn hãy cho biết sự quan trọng của finally block trong xử lý ngoại lệ

Một finally block luôn được thực thi, bất kể là một ngoại lệ có được xử lý hay không. Ngay cả trong trường hợp không có phát biểu catch và một ngoại lệ được quăng ra, finally block vẫn cứ được thực thi. Ngoài ra, finally block cũng được dùng để giải phóng tài nguyên như I/O buffers, database connections…

5/ Chuyện gì xảy ra đối với Exception object sau khi xử lý ngoại lệ?

Đối tượng ngoại lệ (exception object) sẽ được thu gom trong lần thu gom tiếp theo

6/ Finally block khác thế nào so với phương thức finalize() method?

  • Một finally block được thực thi bất kể một ngoại lệ được quăng ra hay không và được dùng để giải phóng tài nguyện đang bị ứng dụng chiếm giữ
  • Finalize là một phương thức được bảo vệ của lớp object, được gọi bởi Java Virtual Machine (JVM) ngay trước khi một object được trình dọn dẹp garbage collection thu hồi.

Các câu hỏi phỏng vấn Java Applets

1/ Java Applets là gì?

Java Applet là chương trình Java chạy trên trình duyệt Web. Một applet có thể là một ứng dụng Java đầy đủ tính năng bởi vì nó có toàn bộ Java API tại cách bố trí của nó. Applet được sử dụng để tạo các ứng dụng web động và web tương tác.

2/ Bạn hãy mô tả vòng đời của một Applet

Một applet có thể ở những trạng thái sau:

  • Init: Applet được khởi tạo mỗi lần tải.
  • Start: bắt đầu thực thi một applet.
  • Stop: Dừng việc thực thi applet.
  • Destroy: Thực hiện việc dọn dẹp trước khi gỡ bỏ applet.

3/ Chuyện gì xảy ra khi một applet được tải?

Đầu tiên, một phiên bản của lớp điều khiển (controlling class ) của applet được tạo. Sau đó, applet tự khởi tạo và cuối cùng, nó bắt đầu chạy.

4/ Bạn hãy cho biết sự khác nhau giữa một Applet và một ứng dụng Java?

100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

5/ Applet có những hạn chế gì?

Vì lý do bảo mật, Java applets có một số hạn chế sau:

  • Java applet không thể load các thư viện hay định nghĩa các phương thức tự nhiên (native method)
  • Applet không thể đọc hay ghi file trên các máy chủ đang thực thi
  • Applet không thể đọc một số thuộc tính của hệ thống
  • Applet không thể tạo kết nối mạng ngoại trừ với máy chủ mà nó đến.
  • Applet không thể chạy bất cứ chương trình nào trên máy chủ mà nó đang thực thi

6/ Bạn hãy cho biết applet không tin cậy (untrusted applets) là gì?

Untrusted applets là những Java applets không thể truy cập hoặc thực thi các file hệ thống nội bộ. Mặc định tất cả các applets được tải xuống đều được xem là không tin cậy

7/ Applet Classloader là gì và nó có nhiệm vụ gì?

Java Classloader hay còn gọi là Trình nạp lớp là một phần của JRE làm nhiệm vụ tự động nạp các class Java vào JVM. Nó bổ sung tính bảo mật bằng cách tách gói cho các lớp của hệ thống file cục bộ từ các gói được nhập từ các nguồn mạng.

Các câu hỏi phỏng vấn Java trên đây không phải là tất cả những câu hỏi mà bạn cần chuẩn bị cho buổi phỏng vấn. Tuy nhiên bạn có thể tham khảo bộ câu hỏi phỏng vấn Java trên và cần tìm hiểu từ nhiều nguồn khác nhau, chuẩn bị kiến thức cho riêng mình. 

--------------------------------------------------------------------------------------------

Để giảm nguy cơ tuyển dụng nhân sự sai người, việc xây dựng chương trình phỏng vấn phù hợp và chuẩn xác cho mỗi vị trí là một trong những ưu tiên hàng đầu của doanh nghiệp.

Chuỗi bài đăng “Phỏng vấn phải hỏi gì?” tại viecTOP sẽ giúp bạn tìm được ứng viên tài năng cho doanh nghiệp mình.

Xem ưu đãi và nhận tư vấn dịch vụ Đăng tuyển dụng miễn phí

Bạn có những gì cần thiết để phỏng vấn Java không? Chúng tôi ở đây để giúp bạn củng cố kiến ​​thức và khái niệm của bạn trong Java. Trước khi chúng ta bắt đầu, chúng ta hãy hiểu Java là gì.Java. Before we begin, let's understand what Java is all about.

Java là gì? & NBSP;

Java là ngôn ngữ lập trình cấp cao được phát triển bởi James Gosling vào năm 1982. Nó dựa trên các nguyên tắc của lập trình hướng đối tượng và có thể được sử dụng để phát triển các ứng dụng quy mô lớn. Tìm hiểu thêm.Learn More.

Bài viết sau đây sẽ bao gồm tất cả các câu hỏi phỏng vấn Java cốt lõi phổ biến, Câu hỏi phỏng vấn xử lý chuỗi, Câu hỏi phỏng vấn Java 8, Câu hỏi phỏng vấn nhiều luồng Java, Câu hỏi phỏng vấn Java OOPS, Java ngoại lệ xử lý các câu hỏi phỏng vấn, câu hỏi phỏng vấn bộ sưu tập và một số câu hỏi thường gặp câu hỏi.

Đi qua tất cả các câu hỏi để tăng cường cơ hội thực hiện tốt trong các cuộc phỏng vấn. Các câu hỏi sẽ xoay quanh các nguyên tắc cơ bản cơ bản, cốt lõi và tiên tiến của Java.

Vì vậy, hãy để Lặn đi sâu vào rất nhiều câu hỏi và câu trả lời phỏng vấn Java hữu ích cho các ứng cử viên mới và kinh nghiệm theo chiều sâu.Java Interview questions and answers for freshers and experienced candidates in depth.

1. Tại sao Java là một ngôn ngữ độc lập nền tảng?

Ngôn ngữ Java được phát triển theo cách mà nó không phụ thuộc vào bất kỳ phần cứng hoặc phần mềm nào do thực tế là trình biên dịch biên dịch mã và sau đó chuyển đổi nó thành mã byte độc ​​lập với nền tảng có thể chạy trên nhiều hệ thống. was developed in such a way that it does not depend on any hardware or software due to the fact that the compiler compiles the code and then converts it to platform-independent byte code which can be run on multiple systems.

  • Điều kiện duy nhất để chạy mã byte đó là để máy có môi trường thời gian chạy (JRE) được cài đặt trong đó

2. Tại sao Java không phải là một ngôn ngữ định hướng đối tượng thuần túy?

Java hỗ trợ các loại dữ liệu nguyên thủy - byte, boolean, char, short, int, float, dài và gấp đôi và do đó nó không phải là ngôn ngữ định hướng đối tượng thuần túy.object oriented language.

3. Sự khác biệt giữa bộ nhớ HEAP và ngăn xếp trong Java. Và Java sử dụng điều này như thế nào.

Bộ nhớ ngăn xếp là một phần của bộ nhớ được gán cho mọi chương trình riêng lẻ. Và nó đã được sửa. Mặt khác, bộ nhớ Heap là phần không được phân bổ cho chương trình Java nhưng nó sẽ có sẵn để sử dụng chương trình Java khi cần thiết, chủ yếu là trong thời gian chạy của chương trình.

Java sử dụng bộ nhớ này là -& nbsp;

  • Khi chúng tôi viết một chương trình Java thì tất cả các biến, phương thức, vv được lưu trữ trong bộ nhớ ngăn xếp.
  • Và khi chúng ta tạo bất kỳ đối tượng nào trong chương trình Java thì đối tượng đó đã được tạo trong bộ nhớ heap. Và nó được tham chiếu từ bộ nhớ ngăn xếp.

Ví dụ- Xem xét chương trình Java dưới đây:Consider the below java program:

class Main {
   public void printArray(int[] array){
       for(int i : array)
           System.out.println(i);
   }
   public static void main(String args[]) {
       int[] array = new int[10];
       printArray(array);
   }
}

Đối với chương trình Java này. Bộ nhớ ngăn xếp và heap chiếm bởi Java là -

100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

Main và PrintArray là phương pháp sẽ có sẵn trong khu vực ngăn xếp và cũng như các biến được tuyên bố cũng sẽ nằm trong khu vực ngăn xếp. & NBSP;

Và đối tượng (mảng số nguyên có kích thước 10) mà chúng tôi đã tạo, sẽ có sẵn trong khu vực Heap vì không gian đó sẽ được phân bổ cho chương trình trong thời gian chạy. & NBSP;

4. Java có thể được cho là ngôn ngữ lập trình hướng đối tượng hoàn chỉnh không?

Sẽ không sai nếu chúng ta tuyên bố rằng Java là ngôn ngữ lập trình hướng đối tượng hoàn chỉnh. Bởi vì mọi thứ trong Java đều thuộc các lớp học. Và chúng ta có thể truy cập điều đó bằng cách tạo các đối tượng.

Nhưng nếu chúng ta nói rằng Java không phải là ngôn ngữ lập trình hoàn toàn theo định hướng đối tượng vì nó có sự hỗ trợ của các loại dữ liệu nguyên thủy như Int, Float, Char, Boolean, Double, v.v.

Bây giờ cho câu hỏi: Java có phải là ngôn ngữ lập trình hoàn toàn đối tượng không? Chúng ta có thể nói rằng - Java không phải là ngôn ngữ lập trình hướng đối tượng thuần túy, bởi vì nó có quyền truy cập trực tiếp vào các loại dữ liệu nguyên thủy. Và các loại dữ liệu nguyên thủy này không trực tiếp thuộc về các lớp số nguyên.Is java a completely object-oriented programming language? We can say that - Java is not a pure object-oriented programming language, because it has direct access to primitive data types. And these primitive data types don't directly belong to the Integer classes.

5. Java khác với C ++ như thế nào?

  • C ++ chỉ là A & NBSP; ngôn ngữ được biên dịch, trong khi Java được biên dịch cũng như một ngôn ngữ được giải thích.
  • Các chương trình Java là độc lập với máy trong khi chương trình C ++ chỉ có thể chạy trong máy mà nó được biên dịch. & NBSP;
  • C ++ cho phép người dùng sử dụng con trỏ trong chương trình. Trong khi Java không cho phép nó. Java nội bộ sử dụng con trỏ. & NBSP;
  • C ++ hỗ trợ khái niệm nhiều kế thừa trong khi Java không hỗ trợ điều này. Và đó là do tránh sự phức tạp của sự mơ hồ về tên gây ra vấn đề kim cương.

6. Con trỏ được sử dụng trong C/ C ++. Tại sao Java không sử dụng con trỏ?

Con trỏ khá phức tạp và không an toàn để sử dụng bởi các lập trình viên mới bắt đầu. Java tập trung vào sự đơn giản của mã và việc sử dụng các con trỏ có thể khiến nó trở nên khó khăn. Việc sử dụng con trỏ cũng có thể gây ra lỗi tiềm năng. Hơn nữa, bảo mật cũng bị xâm phạm nếu con trỏ được sử dụng vì người dùng có thể truy cập trực tiếp bộ nhớ với sự trợ giúp của con trỏ.

Do đó, một mức độ trừu tượng nhất định được cung cấp bởi không bao gồm các con trỏ trong Java. Hơn nữa, việc sử dụng các con trỏ có thể làm cho thủ tục thu gom rác khá chậm và sai. Java sử dụng các tài liệu tham khảo vì những điều này không thể bị thao túng, không giống như con trỏ.

7. Bạn hiểu gì bởi một biến thể hiện và một biến cục bộ?

Các biến thể hiện là các biến có thể truy cập bằng tất cả các phương thức trong lớp. Chúng được tuyên bố bên ngoài các phương pháp và bên trong lớp. Các biến này mô tả các thuộc tính của một đối tượng và vẫn bị ràng buộc với nó bằng bất cứ giá nào. are those variables that are accessible by all the methods in the class. They are declared outside the methods and inside the class. These variables describe the properties of an object and remain bound to it at any cost.

Tất cả các đối tượng của lớp sẽ có bản sao của các biến để sử dụng. Nếu bất kỳ sửa đổi nào được thực hiện trên các biến này, thì chỉ có trường hợp đó sẽ bị ảnh hưởng bởi nó và tất cả các trường hợp lớp khác tiếp tục không bị ảnh hưởng.

Example:

class Athlete {
public String athleteName;
public double athleteSpeed;
public int athleteAge;
}

Các biến cục bộ là các biến có trong một khối, hàm hoặc hàm tạo và chỉ có thể được truy cập bên trong chúng. Việc sử dụng biến được giới hạn trong phạm vi khối. Bất cứ khi nào một biến cục bộ được khai báo bên trong một phương thức, các phương thức lớp khác không có bất kỳ kiến ​​thức nào về biến cục bộ. are those variables present within a block, function, or constructor and can be accessed only inside them. The utilization of the variable is restricted to the block scope. Whenever a local variable is declared inside a method, the other class methods don’t have any knowledge about the local variable.

Example:

public void athlete() {
String athleteName;
double athleteSpeed;
int athleteAge;
}
100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

8. Các giá trị mặc định được gán cho các biến và phiên bản trong Java là gì?

  • Không có giá trị mặc định được gán cho các biến trong Java. Chúng ta cần khởi tạo giá trị trước khi sử dụng nó. Mặt khác, nó sẽ ném một lỗi biên dịch của (biến có thể không được khởi tạo). & Nbsp;Variable might not be initialized). 
  • Nhưng ví dụ, nếu chúng ta tạo đối tượng, thì giá trị mặc định sẽ được khởi tạo bởi hàm tạo mặc định tùy thuộc vào kiểu dữ liệu. & NBSP;
  • Nếu đó là một tài liệu tham khảo, thì nó sẽ được gán cho null. & Nbsp;
  • Nếu nó là số, thì nó sẽ gán cho 0.
  • Nếu đó là một boolean, thì nó sẽ được gán cho sai. Vân vân.

9. Ý bạn là gì khi đóng gói dữ liệu?

  • Đóng gói dữ liệu là một khái niệm lập trình hướng đối tượng về việc ẩn các thuộc tính dữ liệu và hành vi của chúng trong một đơn vị.
  • Nó giúp các nhà phát triển tuân theo mô -đun trong khi phát triển phần mềm bằng cách đảm bảo rằng mỗi đối tượng độc lập với các đối tượng khác bằng cách có các phương thức, thuộc tính và chức năng riêng của nó.
  • Nó được sử dụng để bảo mật các thuộc tính riêng của một đối tượng và do đó phục vụ mục đích ẩn dữ liệu.
100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

10. Hãy cho chúng tôi biết điều gì đó về trình biên dịch JIT.

  • JIT là viết tắt của đúng lúc và nó được sử dụng để cải thiện hiệu suất trong thời gian chạy. Nó thực hiện nhiệm vụ biên dịch các phần của mã byte có chức năng tương tự đồng thời do đó giảm lượng thời gian biên dịch để mã chạy.
  • Trình biên dịch không có gì ngoài một dịch giả mã nguồn sang mã có thể điều khiển bằng máy. Nhưng điều gì đặc biệt về trình biên dịch JIT? Hãy cho chúng tôi xem nó hoạt động như thế nào:
    • Đầu tiên, chuyển đổi mã nguồn Java (.java) sang mã byte (.Class) xảy ra với sự trợ giúp của trình biên dịch Javac.
    • Sau đó, các tệp .Class được tải theo thời gian chạy bởi JVM và với sự trợ giúp của trình thông dịch, chúng được chuyển đổi thành mã dễ hiểu.
    • Trình biên dịch JIT là một phần của JVM. Khi trình biên dịch JIT được bật, JVM phân tích phương thức gọi trong các tệp .class và biên dịch chúng để có được mã gốc và hiệu quả hơn. Nó cũng đảm bảo rằng các cuộc gọi phương thức ưu tiên được tối ưu hóa.
    • Khi bước trên được thực hiện, JVM thực hiện trực tiếp mã được tối ưu hóa thay vì diễn giải lại mã. Điều này làm tăng hiệu suất và tốc độ của việc thực hiện.
100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

11. Bạn có thể cho biết sự khác biệt giữa phương thức bằng () và toán tử bình đẳng (==) trong java không?

Chúng tôi đã nhận thức được toán tử (==) bằng. Rằng chúng tôi đã sử dụng điều này để so sánh sự bình đẳng của các giá trị. Nhưng khi chúng ta nói về các điều khoản của lập trình hướng đối tượng, chúng ta đối phó với các giá trị dưới dạng các đối tượng. Và đối tượng này có thể chứa nhiều loại dữ liệu. Vì vậy, sử dụng toán tử (==) không hoạt động với trường hợp này. Vì vậy, chúng ta cần phải đi với phương thức .equals ().(==) equals operator. That we have used this to compare the equality of the values. But when we talk about the terms of object-oriented programming, we deal with the values in the form of objects. And this object may contain multiple types of data. So using the (==) operator does not work with this case. So we need to go with the .equals() method.

Cả hai chức năng chính [(==) và .euqals ()] là so sánh các giá trị, nhưng chức năng thứ cấp là khác nhau. & NBSP;[(==) and .euqals()] primary functionalities are to compare the values, but the secondary functionality is different. 

Vì vậy, để hiểu điều này tốt hơn, hãy để xem xét điều này với ví dụ -

String str1 = "InterviewBit";
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);

Mã này sẽ in đúng. Chúng tôi biết rằng cả hai chuỗi đều bằng nên nó sẽ in đúng. Nhưng ở đây (==) Các toán tử don lồng so sánh từng nhân vật trong trường hợp này. Nó so sánh vị trí bộ nhớ. Và vì chuỗi sử dụng nhóm không đổi để lưu trữ các giá trị trong bộ nhớ, cả STR1 và STR2 đều được lưu trữ tại cùng một vị trí bộ nhớ. Xem giải thích chi tiết trong câu hỏi số 73: Liên kết.(==) Operators don’t compare each character in this case. It compares the memory location. And because the string uses the constant pool for storing the values in the memory, both str1 and str2 are stored at the same memory location. See the detailed Explanation in Question no 73: Link.

100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

Bây giờ, nếu chúng ta sửa đổi chương trình một chút với -

String str1 = new String("InterviewBit");
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
trong trường hợp này, nó sẽ in sai. Bởi vì ở đây không còn các khái niệm nhóm liên tục được sử dụng. Ở đây, bộ nhớ mới được phân bổ. Vì vậy, ở đây địa chỉ bộ nhớ là khác nhau, do đó (==) toán tử trả về sai. Nhưng xoắn là các giá trị giống nhau trong cả hai chuỗi. Vậy làm thế nào để so sánh các giá trị? Ở đây phương thức .equals () được sử dụng.
100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

Then in this case, it will print false. Because here no longer the constant pool concepts are used. Here, new memory is allocated. So here the memory address is different, therefore ( == ) Operator returns false. But the twist is that the values are the same in both strings. So how to compare the values? Here the .equals() method is used.

Phương thức .equals () so sánh các giá trị và trả về kết quả tương ứng. & nbsp; nếu chúng tôi sửa đổi mã trên với -& nbsp; method compares the values and returns the result accordingly.  If we modify the above code with - 

System.out.println(str1.equals(str2));

Sau đó, nó trả về đúng.

equals() ==
Đây là một phương thức được xác định trong lớp đối tượng. & NBSP;Nó là một nhà điều hành nhị phân ở Java.
Phương thức .equals () có mặt trong lớp đối tượng, vì vậy chúng ta có thể ghi đè phương thức .equals () tùy chỉnh của chúng ta trong lớp tùy chỉnh, để so sánh các đối tượng.Nó không thể được sửa đổi. Các hashcode luôn luôn so sánh.
Phương pháp này được sử dụng để kiểm tra sự bình đẳng của nội dung giữa hai đối tượng theo logic kinh doanh được chỉ định.Toán tử này được sử dụng để so sánh địa chỉ (hoặc tài liệu tham khảo), tức là kiểm tra xem cả hai đối tượng đều chỉ vào cùng một vị trí bộ nhớ.

Note:

  • Trong các trường hợp phương thức bằng không được ghi đè trong một lớp, thì lớp sử dụng việc triển khai mặc định của phương thức bằng gần nhất với lớp cha.
  • Lớp đối tượng được coi là lớp cha của tất cả các lớp Java. Việc triển khai phương thức bằng trong lớp đối tượng sử dụng toán tử == để so sánh hai đối tượng. Việc thực hiện mặc định này có thể được ghi đè theo logic kinh doanh.

12. Làm thế nào một vòng lặp vô hạn được tuyên bố trong Java?

Vòng lặp vô hạn là những vòng lặp chạy vô hạn mà không có bất kỳ điều kiện phá vỡ nào. Một số ví dụ về việc tuyên bố một cách có ý thức Vòng lặp vô hạn là:

  • Sử dụng cho vòng lặp:
for (;;)
{
   // Business logic
   // Any break logic
}
  • Sử dụng trong khi vòng lặp:
while(true){
   // Business logic
   // Any break logic
}
  • Sử dụng vòng lặp trong khi
do{
   // Business logic
   // Any break logic
}while(true);

13. Giải thích ngắn gọn về khái niệm quá tải hàm tạo

Quá tải hàm tạo là quá trình tạo nhiều hàm tạo trong lớp bao gồm cùng tên với sự khác biệt trong các tham số hàm tạo. Tùy thuộc vào số lượng tham số và các loại tương ứng của chúng, phân biệt các loại cấu trúc khác nhau được thực hiện bởi trình biên dịch.

Các hàm tạo
class Hospital {
int variable1, variable2;
double variable3;
public Hospital(int doctors, int nurses) {
 variable1 = doctors;
 variable2 = nurses;
}
public Hospital(int doctors) {
 variable1 = doctors;
}
public Hospital(double salaries) {
 variable3 = salaries
}
}
three được xác định ở đây nhưng chúng khác nhau trên cơ sở loại tham số và số của chúng.
100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

Three constructors are defined here but they differ on the basis of parameter type and their numbers.

14. Xác định hàm tạo bản sao trong Java.

Sao chép Constructor là hàm tạo được sử dụng khi chúng ta muốn khởi tạo giá trị thành đối tượng mới từ đối tượng cũ của cùng một lớp. & NBSP;

class Athlete {
public String athleteName;
public double athleteSpeed;
public int athleteAge;
}
0

Ở đây chúng tôi đang khởi tạo giá trị đối tượng mới từ giá trị đối tượng cũ trong hàm tạo. Mặc dù, điều này cũng có thể đạt được với sự trợ giúp của nhân bản đối tượng.

15. Phương pháp chính có thể bị quá tải không?

Có, có thể làm quá tải phương pháp chính. Chúng ta có thể tạo ra nhiều phương pháp chính quá tải mà chúng ta muốn. Tuy nhiên, JVM có một phương thức gọi được xác định trước mà JVM sẽ chỉ gọi phương thức chính với định nghĩa của -& nbsp;

class Athlete {
public String athleteName;
public double athleteSpeed;
public int athleteAge;
}
1

Hãy xem xét các đoạn mã dưới đây: & nbsp;

class Athlete {
public String athleteName;
public double athleteSpeed;
public int athleteAge;
}
2

16. Nhận xét về quá tải phương pháp và ghi đè bằng cách trích dẫn các ví dụ có liên quan.

Trong Java, quá tải phương thức được thực hiện bằng cách giới thiệu các phương thức khác nhau trong cùng một lớp bao gồm cùng một tên. Tuy nhiên, tất cả các hàm khác nhau về số lượng hoặc loại tham số. Nó diễn ra bên trong một lớp và tăng cường khả năng đọc chương trình.method overloading is made possible by introducing different methods in the same class consisting of the same name. Still, all the functions differ in the number or type of parameters. It takes place inside a class and enhances program readability.

Sự khác biệt duy nhất trong loại trả về của phương thức không thúc đẩy quá tải phương thức. Ví dụ sau đây sẽ cung cấp cho bạn một bức tranh rõ ràng về nó.

class Athlete {
public String athleteName;
public double athleteSpeed;
public int athleteAge;
}
3Both Các chức năng có cùng tên nhưng khác nhau về số lượng đối số. Phương pháp đầu tiên tính toán diện tích của hình chữ nhật, trong khi phương pháp thứ hai tính toán diện tích của một hình khối.
100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

Both the functions have the same name but differ in the number of arguments. The first method calculates the area of the rectangle, whereas the second method calculates the area of a cuboid.

Ghi đè phương thức là khái niệm trong đó hai phương pháp có cùng một chữ ký phương thức có mặt trong hai lớp khác nhau trong đó có mối quan hệ thừa kế. Một triển khai phương thức cụ thể (đã có trong lớp cơ sở) có thể cho lớp dẫn xuất bằng cách sử dụng phương thức ghi đè. Hãy xem xét ví dụ này: is the concept in which two methods having the same method signature are present in two different classes in which an inheritance relationship is present. A particular method implementation (already present in the base class) is possible for the derived class by using method overriding.
Let’s give a look at this example:

Các phương thức lớp
class Athlete {
public String athleteName;
public double athleteSpeed;
public int athleteAge;
}
4Both có tên đi bộ và cùng tham số, khoảng cách và thời gian. Nếu phương thức lớp dẫn xuất được gọi, thì phương thức cơ sở đi bộ được ghi đè bởi phương pháp của lớp dẫn xuất.
100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

Both class methods have the name walk and the same parameters, distance, and time. If the derived class method is called, then the base class method walk gets overridden by that of the derived class.

17. Một khối thử duy nhất và nhiều khối bắt có thể cùng tồn tại trong chương trình Java. Giải thích.

Có, nhiều khối bắt có thể tồn tại nhưng các cách tiếp cận cụ thể sẽ đến trước cách tiếp cận chung vì chỉ khối bắt đầu tiên thỏa mãn điều kiện bắt được thực hiện. Mã đã cho minh họa giống nhau:

class Athlete {
public String athleteName;
public double athleteSpeed;
public int athleteAge;
}
5

Ở đây, khối đánh bắt thứ hai sẽ được thực thi vì phân chia 0 (i / x). Trong trường hợp X lớn hơn 0 thì khối đánh bắt đầu tiên sẽ thực thi vì đối với các vòng chạy cho đến khi I = N và chỉ số mảng cho đến N-1.

18. Giải thích việc sử dụng từ khóa cuối cùng trong biến, phương thức và lớp.

Trong Java, từ khóa cuối cùng được sử dụng như xác định một cái gì đó là hằng số /cuối cùng và đại diện cho công cụ sửa đổi không truy cập.

  • Biến cuối cùng:
    • Khi một biến được khai báo là cuối cùng trong Java, giá trị có thể được sửa đổi sau khi nó được gán.
    • Nếu bất kỳ giá trị nào chưa được gán cho biến đó, thì nó chỉ có thể được gán bởi hàm tạo của lớp.
  • Phương pháp cuối cùng:
    • Một phương pháp được tuyên bố là cuối cùng không thể được ghi đè bởi các lớp học của trẻ em.
    • Một hàm tạo không thể được đánh dấu là cuối cùng vì bất cứ khi nào một lớp được kế thừa, các hàm tạo không được thừa hưởng. Do đó, đánh dấu nó cuối cùng không có ý nghĩa. Java ném lỗi biên dịch nói -
      System.out.println(str1.equals(str2));
      7
  • Lớp học cuối cùng:
    • Không có lớp nào có thể được kế thừa từ lớp được tuyên bố là cuối cùng. Nhưng lớp cuối cùng đó có thể mở rộng các lớp khác để sử dụng.

19. Làm cuối cùng, cuối cùng và hoàn thiện các từ khóa có cùng chức năng?

Tất cả ba từ khóa đều có tiện ích riêng trong khi lập trình.

Cuối cùng: Nếu có bất kỳ hạn chế nào được yêu cầu cho các lớp, biến hoặc phương thức, từ khóa cuối cùng có ích. Kế thừa của một lớp cuối cùng và ghi đè một phương pháp cuối cùng bị hạn chế bởi việc sử dụng từ khóa cuối cùng. Giá trị biến trở nên cố định sau khi kết hợp từ khóa cuối cùng. Thí dụ: If any restriction is required for classes, variables, or methods, the final keyword comes in handy. Inheritance of a final class and overriding of a final method is restricted by the use of the final keyword. The variable value becomes fixed after incorporating the final keyword. Example:

class Athlete {
public String athleteName;
public double athleteSpeed;
public int athleteAge;
}
6

Tuyên bố thứ hai sẽ ném lỗi.

Cuối cùng: Đó là khối có mặt trong một chương trình trong đó tất cả các mã được viết bên trong, nó được thực thi không phân biệt việc xử lý các ngoại lệ. Thí dụ: It is the block present in a program where all the codes written inside it get executed irrespective of handling of exceptions. Example:

class Athlete {
public String athleteName;
public double athleteSpeed;
public int athleteAge;
}
7

Hoàn thiện: Trước khi thu thập rác của một đối tượng, phương pháp hoàn thiện được gọi là để hoạt động dọn dẹp được thực hiện. Thí dụ: Prior to the garbage collection of an object, the finalize method is called so that the clean-up activity is implemented. Example:

class Athlete {
public String athleteName;
public double athleteSpeed;
public int athleteAge;
}
8

20. Có thể là khối ‘cuối cùng sẽ không được thực thi? Nếu có thì hãy liệt kê trường hợp.

& nbsp; vâng. Có thể là khối ‘cuối cùng sẽ không được thực thi. Các trường hợp là-

  • Giả sử chúng ta sử dụng System.exit () trong câu lệnh trên.System.exit() in the above statement.
  • Nếu có các lỗi nghiêm trọng như Overflow Stack, lỗi truy cập bộ nhớ, v.v.

21. Xác định đầu ra của chương trình Java và nêu lý do.

class Athlete {
public String athleteName;
public double athleteSpeed;
public int athleteAge;
}
9

Mã trên sẽ tạo ra lỗi thời gian biên dịch tại dòng 7 nói - [Lỗi: Biến tôi có thể đã được khởi tạo]. Đó là bởi vì biến ’i, là biến cuối cùng. Và các biến cuối cùng chỉ được phép khởi tạo một lần và điều đó đã được thực hiện trên dòng số 5.[error: variable i might already have been initialized]. It is because variable ‘i’ is the final variable. And final variables are allowed to be initialized only once, and that was already done on line no 5.

22. Khi nào bạn có thể sử dụng Super Keyword?

  • Từ khóa siêu được sử dụng để truy cập các trường ẩn và các phương thức hoặc thuộc tính được ghi đè của lớp cha.
  • Sau đây là các trường hợp khi từ khóa này có thể được sử dụng:
    • Truy cập các thành viên dữ liệu của lớp cha khi tên thành viên của lớp và các lớp con của nó giống nhau.
    • Để gọi hàm xây dựng mặc định và tham số hóa của lớp cha trong lớp con.
    • Truy cập các phương thức lớp cha khi các lớp con đã ghi đè lên chúng.
  • Ví dụ sau đây cho thấy cả 3 trường hợp khi sử dụng từ khóa siêu.
public void athlete() {
String athleteName;
double athleteSpeed;
int athleteAge;
}
0

23. Các phương pháp tĩnh có thể bị quá tải không?

Đúng! Có thể có hai hoặc nhiều phương thức tĩnh trong một lớp có cùng tên nhưng các tham số đầu vào khác nhau.

24. Tại sao phương pháp chính là tĩnh trong java?

Phương pháp chính luôn là tĩnh vì các thành viên tĩnh là những phương pháp thuộc về các lớp, không phải đối với một đối tượng riêng lẻ. Vì vậy, nếu phương pháp chính sẽ không tĩnh thì đối với mọi đối tượng, nó có sẵn. Và điều đó không được JVM chấp nhận. JVM gọi phương thức chính dựa trên chính tên lớp. Không phải bằng cách tạo đối tượng.

Bởi vì chỉ phải có 1 phương pháp chính trong chương trình Java khi việc thực hiện bắt đầu từ phương thức chính. Vì vậy, vì lý do này, phương pháp chính là tĩnh. & Nbsp;

25. Các phương thức tĩnh có thể được ghi đè không?

  • Không! Tuyên bố các phương pháp tĩnh có cùng chữ ký có thể được thực hiện trong lớp con nhưng tính đa hình thời gian chạy không thể diễn ra trong những trường hợp như vậy.
  • Ghi đè hoặc đa hình động xảy ra trong thời gian chạy, nhưng các phương thức tĩnh được tải và tra cứu thời gian biên dịch tĩnh. Do đó, các phương pháp này không thể bị ghi đè.

26. Sự khác biệt giữa các phương pháp tĩnh, các biến tĩnh và các lớp tĩnh trong Java.

  • Các phương thức tĩnh và biến tĩnh là các phương pháp và biến thuộc nhóm của chương trình Java, không phải đối tượng của lớp. Điều này nhận được bộ nhớ nơi lớp được tải. Và những thứ này có thể được gọi trực tiếp với sự trợ giúp của tên lớp. are those methods and variables that belong to the class of the java program, not to the object of the class. This gets memory where the class is loaded. And these can directly be called with the help of class names.
    • Ví dụ: Chúng tôi đã sử dụng các hàm toán học trong chương trình Java như - Max (), min (), sqrt (), pow (), v.v. và nếu chúng tôi nhận thấy rằng, chúng tôi sẽ thấy rằng chúng tôi gọi nó trực tiếp với lớp với lớp Tên. Giống như - math.max (), math.min (), v.v. để đó là phương pháp tĩnh. & nbsp; và các biến tĩnh tương tự chúng tôi đã sử dụng như (độ dài) cho mảng để có độ dài. Vì vậy, đó là phương pháp tĩnh.
  • Các lớp tĩnh - Một lớp trong chương trình Java không thể là tĩnh trừ khi đó là lớp bên trong. Nếu đó là một lớp tĩnh bên trong, thì nó chính xác hoạt động như các thành viên tĩnh khác của lớp.- A class in the java program cannot be static except if it is the inner class. If it is an inner static class, then it exactly works like other static members of the class.

27. Mục tiêu chính của bộ sưu tập rác là gì?

Mục tiêu chính của quá trình này là giải phóng không gian bộ nhớ bị chiếm bởi các đối tượng không cần thiết và không thể truy cập trong quá trình thực hiện chương trình Java bằng cách xóa các đối tượng không thể truy cập đó.

  • Điều này đảm bảo rằng tài nguyên bộ nhớ được sử dụng hiệu quả, nhưng nó không đảm bảo rằng sẽ có đủ bộ nhớ để thực hiện chương trình.

28. Trình tải lớp là gì?

  • Java Classloader là chương trình thuộc về JRE (Môi trường thời gian chạy Java). Nhiệm vụ của trình tải lớp là tải các lớp và giao diện cần thiết cho JVM khi được yêu cầu. & NBSP;
  • Ví dụ- Để nhận đầu vào từ bảng điều khiển, chúng tôi yêu cầu lớp máy quét. Và lớp máy quét được tải bởi trình tải lớp. To get input from the console, we require the scanner class. And the Scanner class is loaded by the ClassLoader.

29. Phần nào của bộ nhớ - Stack hoặc Heap - được làm sạch trong quy trình thu gom rác?

Heap.

30. Bản sao nông và bản sao sâu trong Java là gì?

Để sao chép dữ liệu của đối tượng, chúng tôi có một số phương thức như bản sao sâu và bản sao nông. & NBSP;

Ví dụ -& nbsp;

public void athlete() {
String athleteName;
double athleteSpeed;
int athleteAge;
}
1

Đối tượng cho lớp hình chữ nhật này - hình chữ nhật obj1 = hình chữ nhật mới ();Rectangle obj1 = new Rectangle();

  • Bản sao nông - Bản sao nông chỉ tạo ra một tham chiếu mới và trỏ đến cùng một đối tượng. Ví dụ - Đối với bản sao nông, chúng ta có thể làm điều này bằng cách - - The shallow copy only creates a new reference and points to the same object. Example - For Shallow copy, we can do this by -
public void athlete() {
String athleteName;
double athleteSpeed;
int athleteAge;
}
2

Bây giờ bằng cách này, những gì sẽ xảy ra là tài liệu tham khảo mới được tạo với tên OBJ2 và điều đó sẽ chỉ vào cùng một vị trí bộ nhớ.

  • Sao chép sâu - Trong một bản sao sâu, chúng tôi tạo một đối tượng mới và sao chép giá trị đối tượng cũ vào đối tượng mới. Thí dụ - - In a deep copy, we create a new object and copy the old object value to the new object. Example -
public void athlete() {
String athleteName;
double athleteSpeed;
int athleteAge;
}
3

Cả hai đối tượng này sẽ trỏ đến vị trí bộ nhớ như đã nêu dưới đây -

100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

Bây giờ, nếu chúng ta thay đổi các giá trị trong bản sao nông thì chúng cũng ảnh hưởng đến tài liệu tham khảo khác. Hãy xem với sự trợ giúp của một ví dụ -& nbsp;

public void athlete() {
String athleteName;
double athleteSpeed;
int athleteAge;
}
4

Đầu ra -

public void athlete() {
String athleteName;
double athleteSpeed;
int athleteAge;
}
5

Chúng ta có thể thấy rằng trong mã trên, nếu chúng ta thay đổi các giá trị của Object1, thì các giá trị Object2 cũng bị thay đổi. Đó là vì tài liệu tham khảo.

Bây giờ, nếu chúng ta thay đổi mã thành bản sao sâu, thì sẽ không có ảnh hưởng đến Object2 nếu nó thuộc loại Deep Sao chép. Hãy xem xét một số đoạn trích được thêm vào trong mã trên.

public void athlete() {
String athleteName;
double athleteSpeed;
int athleteAge;
}
6

Đoạn trích trên sẽ không ảnh hưởng đến các giá trị đối tượng2. Nó có các giá trị riêng biệt của nó. Đầu ra sẽ là

public void athlete() {
String athleteName;
double athleteSpeed;
int athleteAge;
}
7

Bây giờ chúng ta thấy rằng chúng ta cần viết số lượng mã cho bản sao sâu này. Vì vậy, để giảm điều này, trong Java, có một phương thức gọi là clone (). & Nbsp;clone(). 

Bản sao () sẽ thực hiện bản sao sâu này trong nội bộ và trả về một đối tượng mới. Và để làm điều này, chúng ta chỉ cần viết 1 dòng mã. Đó là - hình chữ nhật obj2 = obj1.clone ();clone() will do this deep copy internally and return a new object. And to do this we need to write only 1 line of code. That is - Rectangle obj2 = obj1.clone();

Câu hỏi phỏng vấn nâng cao Java

70. Mặc dù kế thừa là một khái niệm OOPS phổ biến, nhưng nó ít thuận lợi hơn so với thành phần. Giải thích.

Kế thừa tụt lại phía sau thành phần trong các kịch bản sau:

  • Nhiều khả năng tự nhiên là không thể trong Java. Các lớp chỉ có thể mở rộng từ một siêu lớp. Trong trường hợp yêu cầu nhiều chức năng, ví dụ - để đọc và ghi thông tin vào tệp, mô hình thành phần được ưa thích. Người viết, cũng như các chức năng của người đọc, có thể được sử dụng bằng cách coi chúng là thành viên tư nhân.
  • Thành phần hỗ trợ trong việc đạt được tính linh hoạt cao và ngăn chặn sự phá vỡ đóng gói.
  • Kiểm tra đơn vị là có thể với thành phần và không kế thừa. Khi một nhà phát triển muốn kiểm tra một lớp sáng tác một lớp khác, thì đối tượng giả có thể được tạo để biểu thị lớp sáng tác để tạo điều kiện kiểm tra. Kỹ thuật này là không thể với sự trợ giúp của sự kế thừa vì lớp dẫn xuất không thể được kiểm tra mà không có sự trợ giúp của siêu lớp trong kế thừa.
  • Bản chất kết hợp lỏng lẻo của thành phần là thích hợp hơn bản chất kết hợp chặt chẽ của thừa kế.

Hãy lấy một ví dụ:

public void athlete() {
String athleteName;
double athleteSpeed;
int athleteAge;
}
8

Trong ví dụ trên, kế thừa được tuân theo. Bây giờ, một số sửa đổi được thực hiện cho lớp hàng đầu như thế này:

public void athlete() {
String athleteName;
double athleteSpeed;
int athleteAge;
}
9

Nếu việc triển khai mới của lớp hàng đầu được tuân thủ, một lỗi thời gian biên dịch sẽ xảy ra trong lớp dưới cùng. Loại trả về không tương thích là có chức năng Top.Stop (). Các thay đổi phải được thực hiện cho lớp trên cùng hoặc lớp dưới cùng để đảm bảo khả năng tương thích. Tuy nhiên, kỹ thuật thành phần có thể được sử dụng để giải quyết vấn đề đã cho:

String str1 = "InterviewBit";
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
0

71. Sự khác biệt giữa các nhà khai thác ‘>> và‘ >>> trong Java là gì?

2 này là các toán tử thay đổi bên phải bitwise. Mặc dù cả hai nhà khai thác trông giống nhau. Nhưng có một sự khác biệt tối thiểu giữa hai toán tử thay đổi bên phải này.

  • ‘>> Toán tử thay đổi bên phải bitwise- toán tử này chuyển từng bit sang vị trí bên phải của nó. Và điều này duy trì bit đã ký.- This operator shifts each bit to its right position. And this maintains the signed bit.
  • ‘>>> Toán tử thay đổi bên phải bitwise với số không- toán tử này cũng thay đổi từng bit sang phải. Nhưng điều này không duy trì bit đã ký. Toán tử này làm cho bit quan trọng nhất là 0.- This operator also shifts each bit to its right. But this doesn’t maintain the signed bit. This operator makes the Most significant bit to 0.

Ví dụ- num1 = 8, num2 = -8. Num1 = 8, Num2 = -8.

Vì vậy, dạng nhị phân của các số này là -& nbsp;

Num1 = 00000000 00000000 00000000 00001000 & nbsp; num2 = 11111111 11111111 11111111 & nbsp; 11111000
Num2 = 11111111 11111111 11111111  11111000

‘>> toán tử của người khác: 8 >> 1 (dịch chuyển theo một bit): & nbsp; : 8 >> 1 (Shift by one bit) : 

Num1 = 00000000 00000000 00000000 00000100Num2 = 111111 11111111 11111111 & NBSP; 11111100
Num2 = 11111111 11111111 11111111  11111100

: 8 >>> 1 (Shift by one bit) = 

Num1 = 00000000 00000000 00000000 00000100Num2 = 01111111 11111111 111111 1111111100
Num2 = 01111111 11111111 11111111 11111100

72. Thành phần và tập hợp là gì? Nêu sự khác biệt.

Thành phần và tập hợp giúp xây dựng (có - mối quan hệ) giữa các lớp và đối tượng. Nhưng cả hai không giống nhau cuối cùng. Hãy cùng hiểu với sự trợ giúp của một ví dụ. & NBSP;Let’s understand with the help of an example. 

  • Hãy coi trường đại học là một lớp có một số khoa trong đó. Vì vậy, trường đại học sẽ là đối tượng container. Và các bộ phận trong đó sẽ chứa các đối tượng. Bây giờ trong trường hợp này, nếu đối tượng container phá hủy thì các đối tượng chứa cũng sẽ bị phá hủy tự động. & nbsp; vì vậy ở đây chúng ta có thể nói rằng có một mối liên hệ mạnh mẽ giữa các đối tượng. Vì vậy, sự liên kết mạnh mẽ này được gọi là sáng tác.Composition.
  • Bây giờ hãy xem xét thêm một ví dụ. Giả sử chúng ta có một bộ phận lớp học và có một số đối tượng của giáo sư ở đó trong bộ phận. Bây giờ nếu lớp bộ bị phá hủy thì đối tượng của giáo sư sẽ trở nên tự do liên kết với các đối tượng khác. Bởi vì các đối tượng container (bộ phận) chỉ giữ các tài liệu tham khảo của các đối tượng có chứa (Giáo sư từ). Vì vậy, đây là mối liên hệ yếu giữa các đối tượng. Và hiệp hội yếu này được gọi là tổng hợp.Aggregation.

73. Làm thế nào là tạo ra một chuỗi sử dụng mới () khác với một chuỗi theo nghĩa đen?

Khi một chuỗi được hình thành như một nghĩa đen với sự hỗ trợ của toán tử gán, nó sẽ đi vào nhóm không đổi chuỗi để có thể thực hiện chuỗi chuỗi. Cùng một đối tượng trong heap sẽ được tham chiếu bởi một chuỗi khác nếu nội dung giống nhau cho cả hai.

String str1 = "InterviewBit";
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
1

Hàm séc () sẽ trả về true vì cùng một nội dung được tham chiếu bởi cả hai biến.

100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

Ngược lại, khi một sự hình thành chuỗi diễn ra với sự trợ giúp của toán tử mới (), việc thực tập không diễn ra. Đối tượng được tạo trong bộ nhớ heap ngay cả khi cùng một đối tượng nội dung có mặt.

String str1 = "InterviewBit";
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
2

Hàm kiểm tra () sẽ trả về sai vì cùng một nội dung không được tham chiếu bởi cả hai biến.

100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

74. Toán tử ’mới khác với toán tử‘ newinstance () trong Java?

Cả hai toán tử ’mới và‘ newinstance () đều được sử dụng để tạo các đối tượng. Sự khác biệt là- rằng khi chúng ta đã biết tên lớp mà chúng ta phải tạo đối tượng thì chúng ta sử dụng toán tử mới. Nhưng giả sử chúng tôi không biết tên lớp mà chúng tôi cần tạo đối tượng hoặc chúng tôi lấy tên lớp từ đối số dòng lệnh hoặc cơ sở dữ liệu hoặc tệp. Sau đó, trong trường hợp đó, chúng tôi sử dụng toán tử ‘newinstance ().new’ and ‘newInstance()’ operators are used to creating objects. The difference is- that when we already know the class name for which we have to create the object then we use a new operator. But suppose we don’t know the class name for which we need to create the object, Or we get the class name from the command line argument, or the database, or the file. Then in that case we use the ‘newInstance()’ operator.

Từ khóa ‘newinstance () ném một ngoại lệ mà chúng ta cần xử lý. Đó là bởi vì có nhiều khả năng định nghĩa lớp không tồn tại và chúng tôi nhận được tên lớp từ thời gian chạy. Vì vậy, nó sẽ ném một ngoại lệ.newInstance()’ keyword throws an exception that we need to handle. It is because there are chances that the class definition doesn’t exist, and we get the class name from runtime. So it will throw an exception.

75. Có vượt quá giới hạn bộ nhớ có thể trong một chương trình mặc dù có bộ thu gom rác không?

Có, chương trình có thể thoát khỏi bộ nhớ bất chấp sự hiện diện của một người thu gom rác. Bộ sưu tập rác hỗ trợ nhận ra và loại bỏ những đối tượng không cần thiết trong chương trình nữa, để giải phóng các tài nguyên được sử dụng bởi chúng.

Trong một chương trình, nếu một đối tượng không thể truy cập được, thì việc thực hiện bộ sưu tập rác diễn ra đối với đối tượng đó. Nếu lượng bộ nhớ cần thiết để tạo một đối tượng mới là không đủ, thì bộ nhớ sẽ được giải phóng cho các đối tượng không còn trong phạm vi với sự trợ giúp của bộ thu gom rác. Giới hạn bộ nhớ vượt quá cho chương trình khi bộ nhớ được phát hành là không đủ để tạo các đối tượng mới.

Hơn nữa, sự kiệt sức của bộ nhớ heap diễn ra nếu các đối tượng được tạo theo cách mà chúng vẫn ở trong phạm vi và tiêu thụ bộ nhớ. Nhà phát triển nên đảm bảo bỏ đi đối tượng sau khi công việc của nó được hoàn thành. Mặc dù người thu gom rác đã nỗ lực tốt nhất để lấy lại bộ nhớ càng nhiều càng tốt, giới hạn bộ nhớ vẫn có thể được vượt quá.

Hãy cùng xem ví dụ sau:

String str1 = "InterviewBit";
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
3

76. Tại sao đồng bộ hóa cần thiết? Giải thích với sự trợ giúp của một ví dụ có liên quan.

Thực hiện đồng thời các quá trình khác nhau được thực hiện bằng cách đồng bộ hóa. Khi một tài nguyên cụ thể được chia sẻ giữa nhiều luồng, các tình huống có thể phát sinh trong đó nhiều luồng yêu cầu cùng một tài nguyên được chia sẻ.

Đồng bộ hóa hỗ trợ giải quyết vấn đề và tài nguyên được chia sẻ bởi một luồng tại một thời điểm. Hãy để một ví dụ để hiểu rõ hơn. Ví dụ: bạn có một URL và bạn phải tìm ra số lượng yêu cầu thực hiện cho nó. Hai yêu cầu đồng thời có thể làm cho số lượng thất thường.

Không đồng bộ hóa:

String str1 = "InterviewBit";
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
4if một luồng luồng1 xem số lượng là 10, nó sẽ được tăng từ 1 đến 11. Đồng thời, nếu một luồng khác 2 xem số lượng là 10, nó sẽ được tăng lên 1 đến 11. Do đó, sự không nhất quán trong các giá trị đếm diễn ra vì Giá trị cuối cùng dự kiến ​​là 12 nhưng giá trị cuối cùng thực tế chúng tôi nhận được sẽ là 11.
100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

If a thread Thread1 views the count as 10, it will be increased by 1 to 11. Simultaneously, if another thread Thread2 views the count as 10, it will be increased by 1 to 11. Thus, inconsistency in count values takes place because the expected final value is 12 but the actual final value we get will be 11.

Bây giờ, chức năng tăng () được thực hiện đồng bộ để không thể truy cập đồng thời.

Với đồng bộ hóa:

String str1 = "InterviewBit";
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
5 nếu một luồng1 xem số đếm là 10, nó sẽ được tăng lên 1 đến 11, sau đó luồng2 sẽ xem số lượng là 11, nó sẽ được tăng lên 1 đến 12. Do đó, tính nhất quán trong các giá trị đếm diễn ra.
100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

If a thread Thread1 views the count as 10, it will be increased by 1 to 11, then the thread Thread2 will view the count as 11, it will be increased by 1 to 12. Thus, consistency in count values takes place.

77. Trong mã đã cho dưới đây, tầm quan trọng của ...?

String str1 = "InterviewBit";
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
6
  • Khả năng cung cấp
    System.out.println(str1.equals(str2));
    8 là một tính năng gọi là varargs (đối số biến) được giới thiệu như một phần của Java 5.
  • Hàm có
    System.out.println(str1.equals(str2));
    8 trong ví dụ trên chỉ ra rằng nó có thể nhận được nhiều đối số của chuỗi dữ liệu.
  • Ví dụ, FooBarmethod có thể được gọi theo nhiều cách và chúng ta vẫn có thể có một phương pháp để xử lý dữ liệu như được hiển thị bên dưới:
String str1 = "InterviewBit";
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
7

78. Điều gì sẽ là đầu ra của chương trình Java dưới đây và xác định các bước thực hiện chương trình Java với sự trợ giúp của mã dưới đây?

String str1 = "InterviewBit";
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
8

Đầu ra chúng tôi nhận được bằng cách thực hiện chương trình này sẽ

Khối tĩnh 1. Giá trị của J = 0 Phương thức
Static method. 
Static Block 2. Value of j = 10
Instance Block 1. Value of i = 0
Instance Block 2. Value of i = 5
Instance method. 
Welcome to InterviewBit

Đây là một câu hỏi phỏng vấn khó khăn của Java thường gặp trong các cuộc phỏng vấn của Java cho kinh nghiệm. Đầu ra sẽ như thế này bởi vì, khi chương trình Java được biên dịch và được thực thi, thì có nhiều bước khác nhau để thực hiện. Và các bước là -& nbsp;

  • Xác định các thành viên tĩnh từ trên xuống dưới.
  • Thực hiện gán biến tĩnh và một khối tĩnh từ trên xuống dưới.
  • Thực hiện phương pháp chính.
  • Xác định các thành viên thể hiện từ trên xuống dưới.
  • Thực hiện khối gán biến và khối biểu hiện từ trên xuống dưới.
  • Thực hiện hàm tạo.

Trong các bước trên từ 4 đến 6, sẽ được thực hiện cho mọi tạo đối tượng. Nếu chúng ta tạo nhiều đối tượng thì cho mọi đối tượng, các bước này sẽ được thực hiện.

Bây giờ từ mã trên, việc thực thi sẽ xảy ra như thế này -& nbsp;

1. Trong bước xác định của các thành viên tĩnh. Nó được tìm thấy rằng -

  • tĩnh in in j.
  • Khối tĩnh.
  • Phương pháp chính.
  • Phương pháp tĩnh_2.

Trong quá trình nhận dạng, JVM sẽ gán giá trị mặc định trong biến int j tĩnh. Sau đó, nó hiện đang ở trong tình trạng đọc và viết gián tiếp. Bởi vì giá trị ban đầu không được gán.

2. Trong bước tiếp theo, nó sẽ thực thi khối tĩnh và gán giá trị trong các biến tĩnh.

  • Khối tĩnh đầu tiên Nó sẽ in và vì thực hiện từ trên xuống dưới và giá trị ban đầu trong j không được gán. Vì vậy, nó sẽ in giá trị mặc định là 0.
  • Sau khi thực hiện Khối tĩnh 1. Nó sẽ thực thi Phương thức tĩnh_1 vì nó được gọi từ khối tĩnh 1.
  • Sau đó, nó sẽ gán giá trị ban đầu là 5 trong biến j. Và thực thi khối tĩnh còn lại.

3. Bây giờ nó sẽ thực hiện phương pháp chính. Trong đó nó sẽ tạo ra một đối tượng cho cuộc phỏng vấn lớp. Và sau đó việc thực hiện các trường hợp sẽ xảy ra.

4. Xác định các biến thể hiện và các khối từ trên xuống dưới. & NBSP;

  • int i.
  • Khối trường hợp 1.
  • Phương thức thể hiện_1.

Giống như một biến tĩnh, biến thể hiện cũng đã được khởi tạo với giá trị mặc định 0 và sẽ ở trạng thái đọc và viết gián tiếp.

5. Nó sẽ thực thi các phương thức thể hiện và gán giá trị ban đầu cho biến thể hiện.

  • In khối trường hợp 1. và giá trị hiện tại của I không được gán cho đến bây giờ, vì vậy nó sẽ in 0.
  • Gán giá trị ban đầu cho i. Sau đó in khối trường hợp 2. và sau phương thức phiên bản đó sẽ được gọi và in vì nó đang được gọi trong khối thể hiện.

6. Và ở bước cuối cùng, hàm tạo sẽ được gọi và các dòng sẽ được thực thi trong hàm tạo.

Đây là cách chương trình Java được thực hiện.

79. Xác định System.out.println ().

System.out.println () được sử dụng để in tin nhắn trên bảng điều khiển. Hệ thống - Đây là một lớp có trong gói java.lang. Out là biến tĩnh của lớp PrintStream có trong lớp hệ thống. println () là phương thức có trong lớp PrintStream. is used to print the message on the console. System - It is a class present in java.lang package. Out is the static variable of type PrintStream class present in the System class. println() is the method present in the PrintStream class.

Vì vậy, nếu chúng ta biện minh cho tuyên bố, thì chúng ta có thể nói rằng nếu chúng ta muốn in bất cứ thứ gì trên bảng điều khiển thì chúng ta cần gọi phương thức println () có mặt trong lớp PrintStream. Và chúng ta có thể gọi nó bằng cách sử dụng đối tượng đầu ra có trong lớp hệ thống.println() method that was present in PrintStream class. And we can call this using the output object that is present in the System class.

80. Bạn có thể giải thích vòng đời chủ đề Java không?

Java Thread Life Vòng đời như sau:

  • MỚI - Khi thể hiện của luồng được tạo và phương thức start () chưa được gọi, luồng được coi là còn sống và do đó ở trạng thái mới. – When the instance of the thread is created and the start() method has not been invoked, the thread is considered to be alive and hence in the NEW state.
  • Runnable - Sau khi phương thức start () được gọi, trước khi phương thức Run () được gọi bởi JVM, luồng được cho là ở trạng thái Runnable (Sẵn sàng để chạy). Trạng thái này cũng có thể được nhập từ trạng thái chờ hoặc trạng thái ngủ của sợi chỉ. – Once the start() method is invoked, before the run() method is called by JVM, the thread is said to be in RUNNABLE (ready to run) state. This state can also be entered from the Waiting or Sleeping state of the thread.
  • Chạy - Khi phương thức Run () đã được gọi và luồng bắt đầu thực thi, luồng được cho là ở trạng thái chạy. – When the run() method has been invoked and the thread starts its execution, the thread is said to be in a RUNNING state.
  • Không chạy được (bị chặn/chờ đợi)-khi chủ đề không thể chạy mặc dù thực tế là sự sống động của nó, chủ đề được cho là ở trạng thái không thể chạy. Lý tưởng nhất, sau một thời gian tồn tại của nó, chủ đề sẽ đi đến trạng thái có thể chạy được. – When the thread is not able to run despite the fact of its aliveness, the thread is said to be in a NON-RUNNABLE state. Ideally, after some time of its aliveness, the thread should go to a runnable state.
    • Một luồng được cho là ở trạng thái bị chặn nếu nó muốn nhập mã được đồng bộ hóa nhưng nó không thể vì một luồng khác đang hoạt động trong khối được đồng bộ hóa trên cùng một đối tượng. Chủ đề đầu tiên phải đợi cho đến khi luồng khác thoát ra khỏi khối đồng bộ.
    • Một luồng được cho là ở trạng thái chờ nếu nó đang chờ tín hiệu thực thi từ một luồng khác, tức là nó chờ công việc cho đến khi nhận được tín hiệu.
  • Chấm dứt - Sau khi thực hiện phương thức Run () được hoàn thành, luồng được cho là nhập bước chấm dứt và được coi là không còn sống. – Once the run() method execution is completed, the thread is said to enter the TERMINATED step and is considered to not be alive.

Sơ đồ sau đây giải thích rõ ràng vòng đời của chủ đề trong Java.

100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

81. Điều gì có thể là sự đánh đổi giữa việc sử dụng một mảng không có thứ tự so với việc sử dụng một mảng được đặt hàng?

  • Ưu điểm chính của việc có một mảng được đặt hàng là độ phức tạp thời gian tìm kiếm giảm là
    for (;;)
    {
       // Business logic
       // Any break logic
    }
    0 trong khi độ phức tạp của thời gian trong một mảng không có thứ tự là
    for (;;)
    {
       // Business logic
       // Any break logic
    }
    1.
  • Hạn chế chính của mảng theo thứ tự là thời gian chèn tăng của nó là O (n) do thực tế là phần tử của nó phải được sắp xếp lại để duy trì thứ tự mảng trong mỗi lần chèn trong khi độ phức tạp của thời gian trong mảng không có thứ tự chỉ là O (1 ).
  • Xem xét 2 điểm chính trên và tùy thuộc vào loại kịch bản mà nhà phát triển yêu cầu, cấu trúc dữ liệu phù hợp có thể được sử dụng để thực hiện.

82. Có thể nhập cùng một lớp hoặc gói hai lần trong Java và điều gì xảy ra với nó trong thời gian chạy?

Tuy nhiên, có thể nhập một lớp hoặc gói nhiều lần, tuy nhiên, nó là dự phòng vì JVM chỉ tải gói hoặc lớp một lần.

83. Trong trường hợp gói có các gói phụ, liệu có đủ để nhập gói chính không? ví dụ. Nhập com.mymainpackage.* Cũng nhập com.mymainpackage.mysubpackage.*?

Đây là một không lớn. Chúng ta cần hiểu rằng việc nhập các gói phụ của gói cần được thực hiện rõ ràng. Nhập gói cha mẹ chỉ dẫn đến việc nhập các lớp trong đó chứ không phải nội dung của các gói con/phụ của nó.

84. Khối cuối cùng sẽ được thực thi nếu hệ thống mã.exit (0) được viết ở cuối khối thử?

KHÔNG. Việc kiểm soát bài chương trình

for (;;)
{
   // Business logic
   // Any break logic
}
2 ngay lập tức biến mất và chương trình bị chấm dứt, đó là lý do tại sao khối cuối cùng không bao giờ được thực thi.

85. Bạn hiểu gì về giao diện đánh dấu trong Java?

Giao diện đánh dấu, còn được gọi là giao diện gắn thẻ là những giao diện không có phương thức và hằng số được xác định trong chúng. Họ ở đó để giúp trình biên dịch và JVM có được thông tin liên quan đến thời gian chạy liên quan đến các đối tượng.

86. Giải thích thuật ngữ khởi tạo gấp đôi gấp đôi trong Java?

Đây là một phương tiện thuận tiện để khởi tạo bất kỳ bộ sưu tập nào trong Java. Hãy xem xét các ví dụ dưới đây.

String str1 = "InterviewBit";
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
9

Trong ví dụ trên, chúng ta thấy rằng các chuỗi đã được khởi tạo bằng cách sử dụng niềng răng đôi.

  • Nẹp đầu tiên thực hiện nhiệm vụ tạo ra một lớp bên trong ẩn danh có khả năng truy cập hành vi của lớp cha. Trong ví dụ của chúng tôi, chúng tôi đang tạo lớp con của Hashset để nó có thể sử dụng phương thức ADD () của Hashset.
  • Niềng răng thứ hai thực hiện nhiệm vụ khởi tạo các trường hợp.

Cần cẩn thận trong khi khởi tạo thông qua phương pháp này vì phương pháp liên quan đến việc tạo các lớp bên trong ẩn danh có thể gây ra vấn đề trong quá trình thu thập rác hoặc tuần tự hóa và cũng có thể dẫn đến rò rỉ bộ nhớ.

87. Tại sao người ta nói rằng phương thức độ dài () của lớp chuỗi không trả về kết quả chính xác?

  • Phương thức độ dài trả về số lượng đơn vị unicode của chuỗi. Hãy hiểu các đơn vị Unicode là gì và sự nhầm lẫn dưới đây là gì.
  • Chúng tôi biết rằng Java sử dụng UTF-16 để biểu diễn chuỗi. Với unicode này, chúng ta cần hiểu các thuật ngữ liên quan đến unicode dưới đây:
    • Điểm mã: Điều này thể hiện một số nguyên biểu thị một ký tự trong không gian mã.
    • Đơn vị mã: Đây là một chuỗi bit được sử dụng để mã hóa các điểm mã. Để làm điều này, một hoặc nhiều đơn vị có thể được yêu cầu để biểu diễn điểm mã.
  • Theo sơ đồ UTF-16, các điểm mã được chia thành 17 mặt phẳng và mặt phẳng đầu tiên được gọi là mặt phẳng đa ngôn ngữ cơ bản (BMP). BMP có các ký tự cổ điển - U+0000 đến U+FFFF. Phần còn lại của các ký tự- u+10000 đến u+10ffff được gọi là các ký tự bổ sung vì chúng được chứa trong các mặt phẳng còn lại.
    • Mã các điểm từ mặt phẳng đầu tiên được mã hóa bằng một đơn vị mã 16 bitone 16-bit code unit
    • Mã các điểm từ các mặt phẳng còn lại được mã hóa bằng hai đơn vị mã.two code units.

Bây giờ nếu một chuỗi chứa các ký tự bổ sung, hàm độ dài sẽ được tính là 2 đơn vị và kết quả của hàm độ dài () sẽ không theo những gì được mong đợi.

Nói cách khác, nếu có 1 ký tự bổ sung của 2 đơn vị, độ dài của ký tự đơn đó được coi là hai - để ý sự không chính xác ở đây? Theo tài liệu Java, nó được mong đợi, nhưng theo logic thực sự, nó không chính xác.

88. Đầu ra của mã dưới đây là gì và tại sao?

String str1 = new String("InterviewBit");
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
0

Bit bit có thể là kết quả được in nếu các chữ cái được sử dụng trong các trình điều khiển kép (hoặc các chữ theo chuỗi). Nhưng câu hỏi có các chữ ký tự (trích dẫn đơn) đang được sử dụng, đó là lý do tại sao việc kết hợp sẽ không xảy ra. Các giá trị ASCII tương ứng của mỗi ký tự sẽ được thêm vào và kết quả của số tiền đó sẽ được in. Các giá trị ASCII của ‘B,‘ I, ’T, là:
The ASCII values of ‘b’, ‘i’, ‘t’ are:

  • Bọ = 98
  • Tôi là tôi = 105
  • ‘Tát = 116

for (;;)
{
   // Business logic
   // Any break logic
}
3

Do đó 319 sẽ được in.

89. Những cách có thể để làm cho đối tượng đủ điều kiện cho Bộ sưu tập rác (GC) trong Java là gì?

Cách tiếp cận đầu tiên: Đặt các tham chiếu đối tượng cho NULL sau khi mục đích tạo đối tượng được phục vụ. Set the object references to null once the object creation purpose is served.

String str1 = new String("InterviewBit");
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
1

Cách tiếp cận thứ hai: Chỉ biến tham chiếu đến một đối tượng khác. Làm điều này, đối tượng mà biến tham chiếu đã tham chiếu trước khi đủ điều kiện cho GC. Point the reference variable to another object. Doing this, the object which the reference variable was referencing before becomes eligible for GC.

String str1 = new String("InterviewBit");
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
2

Cách tiếp cận thứ ba: Phương pháp cách ly đảo cách ly: Khi 2 biến tham chiếu chỉ vào các trường hợp của cùng một lớp và các biến này chỉ đề cập đến nhau và các đối tượng được chỉ ra bởi 2 biến này không có bất kỳ tài liệu tham khảo nào khác, thì nó được cho là có Được thành lập một hòn đảo cô lập của người Hồi giáo và 2 đối tượng này đủ điều kiện cho GC.Island of Isolation Approach: When 2 reference variables pointing to instances of the same class, and these variables refer to only each other and the objects pointed by these 2 variables don't have any other references, then it is said to have formed an “Island of Isolation” and these 2 objects are eligible for GC.

String str1 = new String("InterviewBit");
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
3

90. Trong chương trình Java dưới đây, có bao nhiêu đối tượng đủ điều kiện để thu gom rác?

String str1 = new String("InterviewBit");
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
4

Trong chương trình trên, tổng cộng 7 đối tượng sẽ đủ điều kiện để thu gom rác. Hãy để trực quan hiểu những gì đang xảy ra trong mã.

100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022
100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

Trong hình trên trên dòng 3, chúng ta có thể thấy rằng trên mỗi chỉ mục mảng, chúng ta đang khai báo một mảng mới để tham chiếu sẽ là của mảng mới trên tất cả 3 chỉ mục. Vì vậy, mảng cũ sẽ được chỉ ra bởi không có. Vì vậy, ba người này đủ điều kiện để thu gom rác. Và trên dòng 4, chúng tôi đang tạo một đối tượng mảng mới trên tham chiếu cũ hơn. Vì vậy, điều đó sẽ chỉ ra một mảng mới và các đối tượng đa chiều cũ sẽ trở thành đủ điều kiện để thu gom rác.

91. Cách tốt nhất để tiêm phụ thuộc là gì? Ngoài ra, nêu lý do.

Không có giới hạn cho việc sử dụng một lần tiêm phụ thuộc cụ thể. Nhưng phương pháp được đề xuất là -& nbsp;

Các setters chủ yếu được khuyến nghị cho các phụ thuộc tùy chọn tiêm, và các đối số của hàm tạo được khuyến nghị cho các đối số bắt buộc. Điều này là do việc tiêm nhà xây dựng cho phép tiêm các giá trị vào các trường bất biến và cho phép đọc chúng dễ dàng hơn.

92. Làm thế nào chúng ta có thể đặt phạm vi đậu lò xo. Và nó có phạm vi hỗ trợ nào?

Một phạm vi có thể được đặt bằng một chú thích như chú thích @scope hoặc thuộc tính "phạm vi" trong tệp cấu hình XML. Spring Bean hỗ trợ năm phạm vi sau:

  • Singleton
  • Nguyên mẫu
  • Lời yêu cầu
  • Phiên họp
  • Global-session

93. Các loại khác nhau của các mẫu thiết kế Java là gì?

Các mẫu thiết kế Java được phân loại thành các loại khác nhau sau. Và đó cũng được phân loại thêm là & nbsp;

Mô hình cấu trúc:

  • Bộ chuyển đổi
  • Cầu
  • Lọc
  • Tổng hợp
  • Người trang trí
  • Mặt tiền
  • Trọng lượng bay
  • Ủy quyền

Mẫu hành vi:

  • Thông dịch viên
  • Phương pháp/ mẫu mẫu
  • Chuỗi trách nhiệm
  • Mô hình lệnh
  • Mẫu vòng lặp
  • Mô hình chiến lược
  • Mô hình khách truy cập

Các mẫu J2EE:

  • Mẫu MVC
  • Mẫu đối tượng truy cập dữ liệu
  • Mẫu điều khiển phía trước
  • Chặn mẫu bộ lọc
  • Chuyển mẫu đối tượng

Các mẫu sáng tạo:

  • Phương pháp/mẫu nhà máy
  • Nhà máy trừu tượng
  • Người xây dựng
  • Nguyên mẫu
  • Singleton

94. Rò rỉ bộ nhớ là gì? Thảo luận về một số nguyên nhân phổ biến của nó.

Trình thu gom rác Java (GC) thường loại bỏ các đối tượng không sử dụng khi chúng không còn cần thiết, nhưng khi chúng vẫn được tham chiếu, các đối tượng không sử dụng không thể được gỡ bỏ. Vì vậy, điều này gây ra vấn đề rò rỉ bộ nhớ. Ví dụ - xem xét một danh sách được liên kết như cấu trúc bên dưới -Example - Consider a linked list like the structure below -

100 câu hỏi phỏng vấn java hàng đầu dành cho người mới bắt đầu năm 2022

Trong hình trên, có những đối tượng không sử dụng không được tham chiếu. Nhưng sau đó cũng thu gom rác sẽ không giải phóng nó. Bởi vì nó đang tham khảo một số đối tượng được tham chiếu hiện có. Vì vậy, đây có thể là tình huống rò rỉ bộ nhớ.

Một số nguyên nhân phổ biến của rò rỉ bộ nhớ là -& nbsp;

  • Khi có bộ nhớ cache không giới hạn.
  • Trao đổi trang quá mức được thực hiện bởi hệ điều hành.
  • Cấu trúc dữ liệu tùy chỉnh bằng văn bản không đúng.
  • Chèn vào một đối tượng thu thập mà không cần xóa nó trước.ETC.
    etc.

95. Giả sử một luồng có khóa trên nó, gọi phương thức Sleep () trên chủ đề đó sẽ giải phóng khóa?

Một chủ đề có khóa sẽ không được phát hành ngay cả sau khi nó gọi Sleep (). Mặc dù chủ đề ngủ trong một khoảng thời gian xác định, khóa sẽ không được giải phóng.

Câu hỏi phỏng vấn lập trình Java

96. Kiểm tra xem một chuỗi nhất định là palindrom bằng cách sử dụng đệ quy.

String str1 = new String("InterviewBit");
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
5

97. Viết một chương trình Java để in loạt Fibonacci bằng cách sử dụng đệ quy.

String str1 = new String("InterviewBit");
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
6

Trong mã trên, chúng tôi đang in các giá trị cơ sở 2 Fibonacci 0 và 1. và sau đó dựa trên độ dài của fibonacci sẽ được in, chúng tôi đang sử dụng hàm trợ giúp để in đó.

98. Viết một chương trình Java để kiểm tra xem hai chuỗi có phải là đảo chữ không.

Ý tưởng chính là xác nhận độ dài của chuỗi và sau đó nếu được tìm thấy bằng nhau, hãy chuyển đổi chuỗi thành mảng char và sau đó sắp xếp các mảng và kiểm tra xem cả hai đều bằng nhau.

String str1 = new String("InterviewBit");
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
7

99. Viết một chương trình Java để tìm giai thừa của một số nhất định.

String str1 = new String("InterviewBit");
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
8

100.

Ý tưởng là tìm tổng n số tự nhiên bằng cách sử dụng công thức và sau đó tìm tổng số số trong mảng đã cho. Trừ hai khoản tiền này dẫn đến số đó là số còn thiếu thực tế. Điều này dẫn đến độ phức tạp thời gian O (n) và độ phức tạp không gian O (1).

String str1 = new String("InterviewBit");
String str2 = "InterviewBit";
 
System.out.println(str1 == str2);
9

101. Viết chương trình Java để kiểm tra xem có số có số ma thuật hay không. Một số được cho là một số ma thuật nếu sau khi thực hiện tổng số chữ số trong mỗi bước và inturn thực hiện tổng số các chữ số đó, kết quả cuối cùng (khi chỉ còn lại một chữ số) là 1.

Ví dụ, xem xét số:

  • Bước 1: 163 => 1+6+3 = 10
  • Bước 2: 10 => 1+0 = 1 => Do đó 163 là số ma thuật
System.out.println(str1.equals(str2));
0

102. Viết chương trình Java để tạo và ném các ngoại lệ tùy chỉnh.

System.out.println(str1.equals(str2));
1

Chúng tôi đã tạo lớp ngoại lệ được đặt tên với CustomException và được gọi là hàm tạo ngoại lệ cơ sở với thông báo lỗi mà chúng tôi muốn in. Và để tránh xử lý các ngoại lệ trong phương thức chính, chúng tôi đã sử dụng từ khóa ném trong khai báo phương thức.

103. Viết một chương trình Java để đảo ngược một chuỗi.

System.out.println(str1.equals(str2));
2

Trong mã trên, chúng tôi đang lưu trữ ký tự cuối cùng từ chuỗi đến giá trị đầu tiên và giá trị đầu tiên đến cuối cùng trong mảng ký tự đầu ra. Và làm điều tương tự trong vòng lặp cho các ký tự 2 đến N-1 còn lại. Đây là cách chuỗi sẽ được đảo ngược.

104. Viết chương trình Java để xoay mảng 90 độ theo chiều kim đồng hồ bằng cách lấy ma trận từ đầu vào của người dùng.

System.out.println(str1.equals(str2));
3

Trong mã trên, để xoay ma trận sang & nbsp; 90 độ, trước tiên chúng ta chuyển ma trận để hàng trở thành cột. Và sau đó, chúng tôi đang đảo ngược từng hàng trong ma trận. Vì vậy, đây là cách ma trận được xoay.

105. Viết chương trình Java để kiểm tra xem có số nào được đưa ra dưới dạng đầu vào không phải là tổng của 2 số nguyên tố.

Thí dụ :

Đầu vào - 18

Đầu ra -& nbsp;

18 = 13 + 518 = 11 + 7
18 = 11 + 7

System.out.println(str1.equals(str2));
4

Trong mã trên, đối với bất kỳ số N nào, chúng tôi tìm thấy tất cả 2 cặp số được thêm vào với nhau dẫn đến n. Và mỗi số kiểm tra nếu nó là Prime. Nếu đó là Prime thì chúng ta đang in nó. n, we find all the 2 pairs of numbers that are added together resulting in n. And each checking number if it is prime. If it is prime then we are printing that.

106. Viết một chương trình Java để giải quyết vấn đề Tháp Hà Nội.

System.out.println(str1.equals(str2));
5

Trong mã trên, trước tiên chúng tôi di chuyển đĩa N-1 từ tháp A sang tháp B, sau đó di chuyển đĩa thứ n đó từ tháp A sang tháp C, và cuối cùng, đĩa N-1 còn lại từ tháp B sang tháp C. và chúng tôi đang làm điều này một cách đệ quy cho đĩa N-1.n-1 disk from Tower A to Tower B, then moving that nth disk from Tower A to Tower C, and finally, the remaining n-1 disk from Tower B to Tower C. And we are doing this recursively for the n-1 disk.

107. Thực hiện tìm kiếm nhị phân trong Java bằng cách sử dụng đệ quy.

System.out.println(str1.equals(str2));
6

Trong mã trên, chúng tôi đang tìm phần tử giữa mỗi lần và kiểm tra xem phần tử ở giữa hay không. Nếu không, thì chúng tôi kiểm tra phía nào từ giữa nó tồn tại. Và tìm kiếm đệ quy trên Subarray cụ thể. Vì vậy, bằng cách này, chúng tôi đang giảm 2 không gian tìm kiếm mỗi lần. Vì vậy, thời gian tìm kiếm rất thấp.

Java MCQ

Người phiên dịch không là gì ngoài trình biên dịch JIT.

Nó hoạt động như trung bình giữa JVM và JIT.

Nó thực hiện chuyển đổi mã byte thành mã máy.

Nó đọc mã cấp cao và thực thi chúng.

Sự kết hợp

Tập hợp

Thành phần

Đóng gói

Phương pháp int-float

Phương pháp float-int

Dịch lỗi

Lỗi runtime

0

1

Dịch lỗi

Lỗi runtime

Lỗi runtime

Bộ sưu tập rác không xảy ra trong quá trình thực hiện chủ đề.

Chủ đề tạm dừng trong khi quá trình thu gom rác chạy.

Cả hai quá trình diễn ra đồng thời và không can thiệp vào việc thực hiện của nó.

Không có gì xảy ra, chủ đề tiến hành thực thi.

sai sai

đúng rồi

đúng sai

sai đúng

Nó gọi các hàm tạo.

Nó có cùng chức năng của toán tử mới.

Nó tạo đối tượng nếu lớp không có hàm tạo được xác định.

Các câu hỏi phỏng vấn cơ bản trong Java cho Freshers là gì?

Câu hỏi phỏng vấn Java cơ bản cho Freshers..
Q1. Giải thích JDK, JRE và JVM ?.
Q2. Giải thích void static void chính (chuỗi args []) trong java ..
Q3. Tại sao Java là nền tảng độc lập ?.
Q4. Tại sao Java không hướng đối tượng 100% ?.
Q5. Các lớp trình bao bọc trong Java là gì ?.
Q6. Các nhà xây dựng trong Java là gì ?.
Q7. ....

Các câu hỏi Java cơ bản được hỏi trong cuộc phỏng vấn là gì?

Câu hỏi và câu trả lời phỏng vấn Java phổ biến nhất..
Q #1) Java là gì?....
Q #2) Các tính năng của Java là gì?....
Q #3) Java cho phép hiệu suất cao như thế nào?....
Q #4) Đặt tên cho Java IDE?....
Q #5) Bạn có nghĩa là gì khi xây dựng?....
Q #6) Biến cục bộ và biến thể hiện có nghĩa là gì?....
Q #7) Lớp học là gì ?.

Tôi nên chuẩn bị gì cho cuộc phỏng vấn Java?

Những chủ đề nào để chuẩn bị cho các cuộc phỏng vấn Java ?..
Nguyên tắc cơ bản của Java ..
Cấu trúc dữ liệu và thuật toán ..
Các khái niệm hướng đối tượng ..
MultiThreading, đồng thời và cơ bản chủ đề ..
Khung bộ sưu tập Java ..
Chuyển đổi loại ngày và các nguyên tắc cơ bản ..
Array..
Thu gom rác thải..

Trang web nào tốt nhất cho các câu hỏi phỏng vấn Java?

10 trang web và địa điểm để thực hành các vấn đề mã hóa cho các cuộc phỏng vấn vào năm 2022..
LeetCode.Leetcode là một trang web tuyệt vời và tương đối mới với một số lượng lớn các câu hỏi.....
Geekforgeeks.....
Hackerrank.....
Javarevisited.....
Sự quan tâm.....
Mã nghề nghiệp Blog.....
Java67.....