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. Các câu hỏi phỏng vấn Java chung1/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à JREThe 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à:
(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ợ:
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ì?
**Nguồn: kipalog Câu hỏi phỏng vấn Java Threads1/ 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 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ồngTrong quá trình thực thi, một thread có thể có các trạng thái sau:
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:
Các câu hỏi phỏng vấn Java Collections1/ 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à:
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 để:
4/ Bạn hãy giải thích sự khác nhau giữa Iterator và ListIterator
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 Java1/ 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ì?
3/ Hãy cho biết sự khác nhau giữa throw và throwsSự khác nhau giữa throw và throws
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?
Các câu hỏi phỏng vấn Java Applets1/ 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 AppletMột applet có thể ở những trạng thái sau:
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?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:
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. 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. 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. 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;
Ví dụ- Xem xét chương trình Java dưới đây:Consider the below java program:
Đối với chương trình Java này. Bộ nhớ ngăn xếp và heap chiếm bởi Java là - 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?
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:
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:
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ì?
9. Ý bạn là gì khi đóng gói dữ liệu?
10. Hãy cho chúng tôi biết điều gì đó về trình biên dịch JIT.
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ụ -
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. Bây giờ, nếu chúng ta sửa đổi chương trình một chút với - 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.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 -
Sau đó, nó trả về đúng.
Note:
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à:
13. Giải thích ngắn gọn về khái niệm quá tải hàm tạoQuá 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 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.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; 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; 1Hãy xem xét các đoạn mã dưới đây: & nbsp; 216. 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ó. 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.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. 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.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: 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.
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: 6Tuyê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: 7Hoà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: 820. 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à-
21. Xác định đầu ra của chương trình Java và nêu lý do. 9Mã 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?
023. 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?
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.
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 đó.
28. Trình tải lớp là gì?
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; 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();
2Bâ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ớ.
3Cả hai đối tượng này sẽ trỏ đến vị trí bộ nhớ như đã nêu dưới đây - 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; 4Đầu ra - 5Chú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. 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à 7Bâ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 Java70. 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:
Hãy lấy một ví dụ: 8Trong 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: 9Nế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: 071. 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.
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 ‘>> 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 ’: 8 >>> 1 (Shift by one bit) = Num1 = 00000000 00000000 00000000 00000100Num2 = 01111111 11111111 111111 1111111100 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.
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. 1Hà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. 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. 2Hà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. 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: 376. 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: 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.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: 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.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 ...? 6
778. Đ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? 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 Đâ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;
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 -
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.
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;
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.
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:
Sơ đồ sau đây giải thích rõ ràng vòng đời của chủ đề trong Java. 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?
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 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. 9Trong 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.
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?
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? 0Bit 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à:
3Do đó 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. 1Cá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. 2Cá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. 390. Trong chương trình Java dưới đây, có bao nhiêu đối tượng đủ điều kiện để thu gom rác? 4Trong 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ã. 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:
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:
Mẫu hành vi:
Các mẫu J2EE:
Các mẫu sáng tạo:
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 - 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; -
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 Java96. Kiểm tra xem một chuỗi nhất định là palindrom bằng cách sử dụng đệ quy. 597. Viết một chương trình Java để in loạt Fibonacci bằng cách sử dụng đệ quy. 6Trong 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. 799. Viết một chương trình Java để tìm giai thừa của một số nhất định. 8100.Ý 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). 9101. 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ố:
0102. Viết chương trình Java để tạo và ném các ngoại lệ tùy chỉnh. 1Chú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. 2Trong 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. 3Trong 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 4Trong 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. 5Trong 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. 6Trong 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 MCQNgườ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..... |