50 câu hỏi phỏng vấn java hàng đầu năm 2022
You go to any Java interview, senior or junior, experience or freshers, you are bound to see a couple of questions from the thread, concurrency, and multi-threading. In fact, this built-in concurrency support is one of the strongest points of the Java programming language and helped it to gain popularity among the enterprise world and programmers equally. Most of the lucrative Java developer position demands excellent core Java multi-threading skills and
experience in developing, debugging, and tuning high-performance low latency concurrent Java applications. This is the reason, it is one of the most important topics in Java interviews. Multithreading and concurrency are also hard to master the concept and only good developers with solid experience can effectively deal with concurrency issues. Show
Java memory model, higher-order concurrency utilities introduced in JDK 1.5, principles and design patterns of concurrent Java applications, classical multi-threading problems like producer-consumer, dining philosopher, reader-writer, or simply bounded buffer problems. Since it's also not enough just to know the basics of threading, you must know how to deal with concurrency problems like deadlock, race conditions, memory inconsistency, and various thread safety-related issues. These skills are thoroughly get tested by presenting various multi-threading and concurrency problems. Many Java developers are used to only looking and reading interview questions before going for the interview, which is not bad but you should not be too far away. Also collecting questions and going through the same exercise is too time-consuming, that's why I have created this list of the top 50 Java multi-threading and concurrency-related questions, collected from various interviews. I am only going to add new and recent interview questions as and when I am going to discover them. Though you need good knowledge and solid experience to do well on Java interviews focused on advanced multithreading and concurrency skill, I strongly recommend Java programmers to read Effective Java and Java Concurrency in Practice twice before going to an interview. They do not only help you to answer questions better but also help you to present your idea clearly. And, if you are serious about mastering Java multi-threading and concurrency then I also suggest you take a look at these best Java Multithreading courses for experienced developers. It's a collection of advanced Java courses to become an expert in Multithreading, concurrency, and Parallel programming in Java with a strong emphasis on high performance By the way, I have not provided answers to some questions here, Why? because I expect most Java developers to know the answers to this question and if not, also answers are widely available by using Google. If you don't find the answer to any particular question, you can always ask me in the comments section. You can even find answers to a few questions on the link provided or my earlier post Top 12 Java Thread Questions with Answers. 50 Interview questions from Java Multithreading and Concurrency with AnswersHere is our list of top questions from Java thread, concurrency, and multi-threading. You can use this list to prepare well for your Java interview. 1) What is Thread in Java?
(answer) 2) What is the difference between Thread and Process in Java? (answer) 3) How do you implement Thread in Java? (answer) Since the Thread class itself implement Runnable, you can override the run() method either by extending the Thread class or just implementing the Runnable interface. For a detailed answer and discussion see this article. 4) When to use Runnable vs Thread in Java? (answer) This means it's better to implement Runnable than extend Thread if you also want to extend another class e.g. Canvas or CommandListener. For more points and discussion you can also refer to this post. 6) What is the difference between the start() and run() method of the Thread class? (answer) When you invoke run() as a normal method, it's called in the same thread, no new thread is started, which is the case when you call the start() method. Read this answer for a much more detailed discussion. 7) What is the difference between Runnable and Callable in Java? (answer) 8) What is the difference between CyclicBarrier and CountDownLatch in Java? (answer) 9) What is the Java Memory
model? (answer) Java Memory Model provides some guarantee on which changes made by one thread should be visible to others, one of them is the happens-before relationship. This relationship defines several rules which allow programmers to anticipate and reason the behavior of concurrent Java programs. For example, happens-before relationship guarantees :
I strongly suggest reading Chapter 16 of Java Concurrency in Practice to understand the Java Memory model in more detail. 10) What is a volatile variable in Java? (answer) Volatile variable guarantees that a write will happen before any subsequent read: as stated: "volatile variable rule" in the previous question. Read this answer to learn more about volatile variables and when to use them. 11) What is thread-safety? is
Vector a thread-safe class? (Yes, see details) Apparently, you can also divide collection classes into two categories, thread-safe and non-thread-safe. Vector is indeed a thread-safe class and it achieves thread-safety by synchronizing methods that modify the state of Vector, on the other hand, its counterpart ArrayList is not thread-safe. 12) What is a race condition in Java? Given one example? (answer) This is one of the hardest bugs to find and re-produce because of the random nature of racing between threads. One example of race conditions is out-of-order processing, see this answer for some more examples of race conditions in Java programs. 13) How to stop a thread in Java? (answer(answer) Programmers mainly rely on the fact that thread stops automatically as soon as they finish execution of run() or call() method. To manually stop, programmers either take advantage of volatile boolean variables and check in every iteration if the run method has loops or interrupt threads to abruptly cancel tasks. See this tutorial for a sample code of stopping thread in Java. 14) What happens when an Exception occurs in a thread? (answer) When a thread is about to terminate due to an uncaught exception the Java Virtual Machine will query the thread for its UncaughtExceptionHandler using Thread.getUncaughtExceptionHandler() and will invoke the handler's uncaughtException() method, passing the thread and the exception as arguments. 15) How do you share data between two threads in Java? (answer) 16) What is the difference between notify and notifyAll in Java? (answer) There notify() method doesn't provide any way to choose a particular thread, that's why it's only useful when you know that there is only one thread is waiting. On the other hand, notifyAll() sends a notification to all threads and allows them to compete for locks, which ensures that at least one thread will proceed further. See my blog post on a similar topic for a more detailed answer and code example. 17) Why wait, notify, and notifyAll are not inside the thread class? (answer) One reason which is obvious is that Java provides lock at the object level, not at the thread level. Every object has a lock, which is acquired by a thread. Now if the thread needs to wait for a certain lock it makes sense to call wait() on that object rather than on that thread. Had wait() method declared on Thread class, it was not clear for which lock thread was waiting. In short, since wait, notify and notifyAll operate at lock level, it makes sense to define it on object class because the lock belongs to object. You can also see this article for a more elaborate answer to this question. 18) What is the ThreadLocal variable in Java? (answer) By providing each thread their own copy, you shoot two birds with one arrow. First, you reduce the number of instances of expensive objects by reusing a fixed number of instances, and Second, you achieve thread safety without paying the cost of synchronization or immutability. Another good example of a thread-local variable is ThreadLocalRandom class, which reduces the number of instances of expensive-to-create Random objects in a multi-threading environment. See this answer to learn more about thread-local variables in Java. 19) What is FutureTask in Java? (answer) The result can only be retrieved when the computation has been completed; the get methods will block if the computation has not yet been completed. A FutureTask object can be used to wrap a Callable or Runnable object. Since FutureTask also implements Runnable, it can be submitted to an Executor for execution. 20) What is the difference between
the interrupted() and isInterrupted() method in Java? (answer) When interrupted thread checks for an interrupt by invoking the static method Thread.interrupted(), interrupt status is cleared. The non-static isInterrupted() method, which is used by one thread to query the interrupt status of another, does not change the interrupt status flag. By convention, any method that exits by throwing an InterruptedException clears interrupt status when it does so. However, it's always possible that interrupt status will immediately be set again, by another thread invoking interrupt 21) Why wait and notify methods are called from the synchronized block? (answer) 22) Why should you check the condition for waiting in a
loop? (answer) That's why it is always better to call the wait() method from a loop, you can even create a template for calling wait and notify in Eclipse. To learn more about this question, I would recommend you to read Effective Java items on thread and synchronization. 23) What is the difference between synchronized and concurrent collection in
Java? (answer) Java 5 introduced concurrent collections like ConcurrentHashMap, which not only provides thread safety but also improves scalability by using modern techniques like lock stripping and partitioning internal tables. See this answer for more differences between synchronized and concurrent collection in Java. 24) What is the difference between Stack and Heap in Java? (answer) Each thread has its own stack, which is used to store local variables, method parameters, and call stack. Variable stored in one Thread's stack is not visible to other. On another hand, the heap is a common memory area that is shared by all threads. Objects whether local or at any level is created inside the heap. To improve performance thread tends to cache values from the heap into their stack, which can create problems if that variable is modified by more than one thread, this is where volatile variables come into the picture. volatile suggest threads read the value of variable always from main memory. See this article for learning more about stack and heap in Java to answer this question in greater detail. 25) What is a thread pool? Why should you thread pool in Java? (answer) This pool of thread is known as "thread pool" and threads are known as a worker thread. From JDK 1.5 release, Java API provides Executor framework, which allows you to create different types of thread pools e.g. single thread pool, which processes one task at a time, fixed thread pool (a pool of fixed number of threads), or cached thread pool (an expandable thread pool suitable for applications with many short-lived tasks). See this article to learn more about thread pools in Java to prepare a detailed answer to this question. 26) Write code to solve Producer Consumer problems in Java? (answer) 27) How do you avoid deadlock in Java? Write Code? In order for the deadlock to happen, the following four conditions must be true:
The easiest way to avoid deadlock is to prevent Circular wait, and this can be done by acquiring locks in a particular order and releasing them in reverse order so that a thread can only proceed to acquire a lock if it held the other one. Check this tutorial for the actual code example and detailed discussion on techniques for avoiding deadlock in Java. 28) What is the difference between livelock and deadlock in Java? (answer) Livelock is a special case of resource starvation. A real-world example of livelock occurs when two people meet in a narrow corridor, and each tries to be polite by moving aside to let the other pass, but they end up swaying from side to side without making any progress because they both repeatedly move the same way at the same time. In short, the main difference between livelock and deadlock is that in the former state of process change but no progress is made. 30) How do you take thread dump in Java? (answer) 31) Which JVM parameter is used to control the stack size of a thread? (answer) 32) What is the difference between synchronized and ReentrantLock in Java? (answer) Java 5 solves this problem by providing more sophisticated control via the Lock interface. ReentrantLock is a common implementation of the Lock interface and provides re-entrant mutual exclusion Lock with the same basic behavior and semantics as the implicit monitor lock accessed using synchronized methods and statements, but with extended capabilities. See this article to learn about those capabilities and some more differences between synchronized vs ReentrantLock in Java. 33) There are three threads T1, T2, and T3? How do you ensure sequence T1, T2, T3 in Java? (answer) 34) What does the yield method of the Thread class do? (answer) 35) What is the concurrency level of ConcurrentHashMap in
Java? (answer) Its optional parameter of ConcurrentHashMap constructor and its default value is 16. The table is internally partitioned to try to permit the indicated number of concurrent updates without contention. To learn more about concurrency level and internal resizing, see my post How ConcurrentHashMap works in Java. However, no actual permit objects are used; the Semaphore just keeps a count of the number available and acts accordingly. Semaphore is used to protect an expensive resource that is available in fixed numbers e.g. database connection in the pool. See this article to learn more about counting Semaphore in Java. 37) What happens if you submit a task when the queue of the thread pool is already filled? (answer) 38) What is the difference between the submit() and execute() method thread pool in Java? (answer) On other hand submit() is an overloaded method, it can take either Runnable or Callable task and can return Future object which can hold the pending result of the computation. This method is defined on ExecutorService interface, which extends Executor interface, and every other thread pool class e.g. ThreadPoolExecutor or ScheduledThreadPoolExecutor gets these methods. To learn more about thread pools you can check this article. 39) What is the blocking method in Java? (answer) 40) Is Swing thread-safe? What do you mean by Swing thread-safe? (answer) All updates to GUI components have to be done on the AWT thread, and Swing provides synchronous and asynchronous callback methods to schedule such updates. You can also read my article to learn more about swing and thread safety to better answer this question. Even next two questions are also related to this concept. 41) What is the difference between invokeAndWait and invokeLater in Java? (answer) If progress is tracked in a different thread, it has to call invokeAndWait() to schedule an update of that component by the Event dispatcher thread. On another hand, invokeLater() is an asynchronous call to update components. You can also refer to this answer for more points. 42) Which method of Swing API is thread-safe in Java? (answer) 43) How to create an Immutable object in Java? (answer) Unfortunately, there is no @Immutable annotation in Java, which can make your object immutable, hard work must be done by Java developers. You need to keep basics like initializing state in the constructor, no setter methods, no leaking of reference, keeping a separate copy of the mutable object to create an Immutable object. For step by step guide see my post, how to make an object Immutable in Java. This will give you enough material to answer this question with confidence. 44) What is ReadWriteLock in Java? (answer) A ReadWriteLock maintains a pair of associated locks, one for read-only operations and one for writing. The read lock may be held simultaneously by multiple reader threads, so long as there are no writers. The write lock is exclusive. If you want you can implement this interface with your own set of rules, otherwise you can use ReentrantReadWriteLock, which comes along with JDK and supports a maximum of 65535 recursive write locks and 65535 read locks. 45) What is a busy spin in multi-threading? (answer) In a multi-core system, it's possible for a paused thread to resume on a different core, which means rebuilding the cache again. To avoid the cost of rebuilding cache, programmers prefer to wait for a much smaller time doing busy spin. You can also see this answer to learn more about this question. For example, the count++ operation will not become atomic just by declaring the count variable as volatile. On the other hand, AtomicInteger class provides an atomic method to perform such compound operation atomically e.g. getAndIncrement() is the atomic replacement of increment operator. It can be used to atomically increment the current value by one. Similarly, you have an atomic version for other data types and reference variables as well. 47) What happens if a thread throws an Exception inside a synchronized block? (answer) To answer this question, no matter how you exist synchronized block, either normally by finishing execution or abruptly by throwing an exception, the thread releases the lock it acquired while entering that synchronized block. This is actually one of the reasons I like synchronized block over lock interface, which requires explicit attention to release lock, generally, this is achieved by releasing the lock in a finally block. 48) What is double-checked locking of Singleton? (answer) This is actually an old way of creating a thread-safe singleton, which tries to optimize performance by only locking when the Singleton instance is created the first time, but because of complexity and the fact it was broken for JDK 1.4, I personally don't like it. Anyway, even if you do not prefer this approach it's good to know from an interview point of view. Since this question deserves a detailed answer, I have answered in a separate post, you can read my post how double-checked locking on Singleton works to learn more about it. 49) How to create thread-safe Singleton in Java? (answer) There is actually man, you can take advantage of class loading and static variable initialization feature of JVM to create an instance of Singleton, or you can leverage powerful enumeration type in Java to create Singleton. I actually preferred that way, you can also read this article to learn more about it and see some sample code. 50) List down 3 multi-threading best practices you follow? (answer)
51) How do you force to start a thread in Java? (answer) 52) What is the fork-join framework in Java? (answer) The goal is to use all the available processing power to enhance the performance of your application. One significant advantage of The fork/join framework is that it uses a work-stealing algorithm. Worker threads that run out of things to do can steal tasks from other threads that are still busy. See this article for a much more detailed answer to this question. 53) What is the difference between the calling wait() and sleep() method in Java multi-threading? (answer) On the other hand sleep() method is just to relinquish CPU or stop the execution of the current thread for a specified time duration. The calling sleep method doesn't release the lock held by the current thread. You can also take look at this article to answer this question with more details. That's all on this list of top 50 Java multi-threading and concurrency interview questions. I have not shared answers to all the questions but provided enough hints and links to explore further and find answers by yourself. As I said, let me know if you don't find an answer to any particular question and I will add an answer here. You can use this list not only to prepare for your core Java and programming interviews but also to check your knowledge about the basics of threads, multi-threading, concurrency, design patterns, and threading issues like race conditions, deadlock, and thread-safety problems. My intention is to make this list of questions as the mother of all list of Java Multi-threading questions, but this can not be done without your help. You can also share any question with us, which has been asked to you or any question for which you have yet to find an answer. This master list is equally useful to Java developers of all levels of experience. You can read through this list even if you have 2 to 3 years of working experience as a junior developer or 5 to 6 years as a senior developer. It's even useful for freshers and beginners to expand their knowledge. I will add new and latest multi-threading questions as and when I come across them, and I request you all to ask, share and answer questions via comments to keep this list relevant to all Java programmers. Other Java Interview Questions list you may want to check
These questions will not only help you to understand multithreading and concurrency in Java better but also encourage you to find out more about Thread and various related classes and concurrency design patterns. If you have any other Thread or Concvurrency based Java questions, which were asked to you in an interview, feel free to share with us. P. S. - If you are preparing for Java Interviews and looking for some interesting questions for practice, then you can also check out these best Java Interview online courses, and books that contain more than 200+ real-world questions from Java interviews and their explanation. Java là ngôn ngữ lập trình được sử dụng rộng rãi nhất & NBSP; trong ngành CNTT hiện tại. Một lý do chính cho số lượng lớn người mới bắt đầu và các chuyên gia trong lĩnh vực lập trình là tiềm năng nghề nghiệp mà kiến thức Java đi kèm. Bài viết này được dành riêng cho cùng một mục đích. Dưới đây là một hướng dẫn đầy đủ về cách giúp bạn bẻ khóa các câu hỏi phỏng vấn Java thường gặp nhất. Vì vậy, hãy để bắt đầu với bộ câu hỏi phỏng vấn kỹ thuật Core Java cơ bản đầu tiên rất hữu ích cho những người mới. C ++ không độc lập với nền tảng; Nguyên tắc đằng sau lập trình C ++ là Viết một lần, biên dịch ở bất cứ đâu. Ngược lại, vì mã byte được tạo bởi trình biên dịch Java không phụ thuộc vào nền tảng, nó có thể chạy trên bất kỳ máy nào, các chương trình Java được viết một lần và chạy khắp nơi. Cũng đọc: Tìm hiểu lập trình C ++ C ++ là ngôn ngữ lập trình dựa trên ngôn ngữ lập trình C. Hầu hết các ngôn ngữ cấp cao khác đều tương thích với C ++. Hầu hết các ngôn ngữ của Java là không tương thích. Java có thể so sánh với những người của C và C ++. Nó có thể truy cập trực tiếp vào các thư viện hệ thống gốc trong C ++. Do đó, nó tốt hơn để lập trình ở cấp hệ thống. Các thư viện gốc của Java không cung cấp hỗ trợ cuộc gọi trực tiếp. Bạn có thể sử dụng giao diện gốc Java hoặc truy cập các thư viện. C ++ phân biệt chính nó bằng cách có các tính năng tương tự như các ngôn ngữ theo thủ tục và hướng đối tượng. Đặc điểm khiến Java khác biệt là bộ sưu tập rác tự động. Java không hỗ trợ những kẻ phá hủy vào lúc này. Các loại nguyên thủy và đối tượng trong C ++ có cùng loại ngữ nghĩa. Mặt khác, các lớp nguyên thủy và đối tượng và các lớp của Java không nhất quán. Java đề cập đến một ngôn ngữ được biên dịch và giải thích. Ngược lại, C ++ chỉ là một ngôn ngữ được biên dịch. Trong Java, mã nguồn là đầu ra được biên dịch là mã byte độc lập với nền tảng. Trong C ++, chương trình nguồn được biên dịch thành mã đối tượng được thực hiện thêm để tạo ra đầu ra. Một vài trong số các tính năng quan trọng của ngôn ngữ lập trình Java là: Dễ dàng: Java là một ngôn ngữ được coi là dễ học. Một khái niệm cơ bản của OOP Java có một sự hiểu biết để hiểu. Tính năng được bảo mật: Java có tính năng bảo mật giúp phát triển hệ thống không có vi-rút và không giả mạo cho người dùng. OOP: OOP là viết tắt của ngôn ngữ lập trình hướng đối tượng. OOP biểu thị rằng, trong Java, mọi thứ được coi là một đối tượng. Nền tảng độc lập: Java không được biên dịch thành một máy cụ thể của nền tảng; Thay vào đó, nó được biên dịch thành mã byte độc lập với nền tảng. Mã này được giải thích bằng máy ảo mà nền tảng chạy. Chúng tôi nhận được hai điều chính cùng với tệp tải xuống Java. & NBSP; JDK - Bộ phát triển Java JRE - Môi trường thời gian chạy Java JDK JRE Chữ viết tắt cho Bộ phát triển Javadevelopment Viết tắt cho môi trường thời gian chạy Java JDK là một bộ dụng cụ chuyên dụng để phát triển phần mềm duy nhất JRE là một bộ phần mềm và thư viện được thiết kế để thực hiện các chương trình Java Không giống như JVM, JDK phụ thuộc vào nền tảng Không giống như JVM, JRE cũng phụ thuộc vào nền tảng Gói JDK là một bộ công cụ để gỡ lỗi và phát triển Gói JRE là một gói chỉ hỗ trợ các tệp và thư viện cho môi trường thời gian chạy & NBSP; Gói JDK sẽ được cung cấp một tệp trình cài đặt Gói JRE không nhận được trình cài đặt nhưng chỉ có môi trường thời gian chạy Trình tải lớp trong Java là một hệ thống con của máy ảo Java, dành riêng cho việc tải các tệp lớp khi một chương trình được thực thi; Class Loader là người đầu tiên tải tệp thực thi. Java có bootstrap, mở rộng và tải lớp ứng dụng. Cũng đọc: Bootstrap là gì và làm thế nào để nhúng bootstrap vào góc? Java có năm loại phân bổ bộ nhớ quan trọng. Stack bộ nhớ trong cấu trúc dữ liệu là & nbsp; lượng bộ nhớ được phân bổ cho từng chương trình riêng lẻ. Đó là một không gian bộ nhớ cố định. Ngược lại, bộ nhớ heap là phần không được gán cho mã Java nhưng sẽ có sẵn để sử dụng mã Java khi cần thiết, thường là trong thời gian chạy của chương trình. Có, chương trình sẽ thực hiện thành công nếu được viết như vậy. Bởi vì, trong Java, không có quy tắc cụ thể nào cho thứ tự của các nhà xác định Cả các biến cục bộ và bất kỳ tài liệu tham khảo nguyên thủy và đối tượng nào cũng có bất kỳ giá trị mặc định nào được lưu trữ trong chúng. & NBSP; lớp công khai SimpleLearn & nbsp; & nbsp; & nbsp; { & nbsp; { & nbsp; & nbsp; } } Các câu trả lời cho hai câu lệnh in như sau. Một hiệp hội có thể được định nghĩa là một mối quan hệ không có quyền sở hữu đối với người khác. Ví dụ, một người có thể được liên kết với nhiều ngân hàng và một ngân hàng có thể liên quan đến những người khác nhau, nhưng không ai có thể sở hữu người kia. Thuật ngữ tổng hợp đề cập đến mối quan hệ giữa hai lớp được mô tả tốt nhất là một mối quan hệ toàn bộ/một phần của người Hồi giáo. Loại này là phiên bản chuyên biệt nhất của mối quan hệ hiệp hội. Nó chứa tham chiếu đến một lớp khác và được cho là có quyền sở hữu lớp đó. Một hàm tạo sao chép trong Java là một hàm tạo khởi tạo một đối tượng thông qua một đối tượng khác của cùng một lớp. Một giao diện trống trong java & nbsp; được gọi là giao diện đánh dấu. Có thể nối tiếp và có thể nhân bản là một số ví dụ nổi tiếng về giao diện đánh dấu. & NBSP; Khả năng tạo lại một đối tượng hoàn toàn giống với một đối tượng hiện có được gọi là nhân bản đối tượng trong Java. Java cung cấp một phương thức clone () để sao chép một đối tượng hiện tại cung cấp chức năng tương tự như đối tượng gốc. Không, Java không thể được coi là một ngôn ngữ lập trình hướng đối tượng hoàn chỉnh. Một mô hình dựa trên các khái niệm của các đối tượng. Nó chứa dữ liệu và mã. Dữ liệu dưới dạng các trường và quy định, ở dạng thủ tục. Tính năng thú vị của mô hình này là các quy trình của đối tượng có thể truy cập và thường tự sửa đổi các trường dữ liệu. Trong Java, khi bạn khai báo các kiểu dữ liệu nguyên thủy, sau đó các lớp trình bao bọc chịu trách nhiệm chuyển đổi chúng thành các đối tượng (loại tham chiếu). & NBSP; Một lớp chỉ có thể sở hữu một đối tượng tại một thời điểm được gọi là lớp singleton. Để thực hiện một lớp Singleton được đưa ra theo các bước: Gói là một gói tập thể gồm các lớp và giao diện và các thư viện và tệp JAR cần thiết. Việc sử dụng các gói giúp tái sử dụng mã. Máy ảo Java chăm sóc quản lý bộ nhớ ngầm. Phương châm chính của Java là tiếp tục lập trình đơn giản. Vì vậy, truy cập bộ nhớ trực tiếp thông qua các con trỏ không phải là một hành động được đề xuất. Do đó, gợi ý được loại bỏ trong Java. & NBSP; Chẳng hạn, các biến được khai báo bên trong một lớp và phạm vi của các biến trong JavaScript chỉ giới hạn ở một đối tượng cụ thể. Một biến cục bộ có thể là bất cứ nơi nào bên trong một phương thức hoặc một khối mã cụ thể. Ngoài ra, phạm vi được giới hạn trong phân đoạn mã trong đó biến được khai báo. & Nbsp; & nbsp; Một bộ sưu tập các chuỗi trong bộ nhớ heap của Java được gọi là nhóm chuỗi Java. Trong trường hợp bạn cố gắng tạo một đối tượng chuỗi mới, trước tiên, JVM kiểm tra sự hiện diện của đối tượng trong nhóm. Nếu có sẵn, cùng một tham chiếu đối tượng được chia sẻ với biến, nếu không một đối tượng mới được tạo. Một xử lý ngoại lệ trong Java được coi là một sự kiện bất ngờ có thể phá vỡ dòng chảy bình thường của chương trình. Những sự kiện này có thể được sửa thông qua quá trình xử lý ngoại lệ. Thuật ngữ cuối cùng là một từ được xác định trước trong Java được sử dụng trong khi khai báo các giá trị cho các biến. Khi một giá trị được khai báo bằng cách sử dụng từ khóa cuối cùng, thì giá trị của biến vẫn không đổi trong suốt quá trình thực hiện của chương trình. Khi phương pháp chính không được khai báo là tĩnh, thì chương trình có thể được biên dịch chính xác nhưng kết thúc với sự mơ hồ nghiêm trọng và ném lỗi thời gian chạy có ghi "Nosuchmethoderror". Với điều này, chúng tôi được thực hiện với phần đầu tiên là câu hỏi phỏng vấn Java cơ bản, bây giờ, hãy chuyển sang phần tiếp theo của chúng tôi về các câu hỏi phỏng vấn Java trung gian. Bây giờ, chúng ta hãy xem một số câu hỏi phỏng vấn kỹ thuật Java được hỏi nhiều nhất cho các chuyên gia có kinh nghiệm trung gian. JDK là một chữ viết tắt cho bộ phát triển Java. Đây là một gói kết hợp của các công cụ JRE và nhà phát triển được sử dụng để thiết kế các ứng dụng và applet Java. Oracle có các biến thể sau đây. JVM có công cụ trình biên dịch đúng thời gian (JIT) chuyển đổi tất cả mã nguồn Java thành ngôn ngữ máy tương thích ở cấp độ thấp. Do đó, nó chạy nhanh hơn ứng dụng thông thường. JRE có thư viện lớp và các tệp hỗ trợ JVM khác. Nhưng nó không có bất kỳ công cụ nào để phát triển Java như trình biên dịch hoặc trình gỡ lỗi. JDK có các công cụ được yêu cầu viết các chương trình Java và sử dụng JRE để thực hiện chúng. Nó có trình biên dịch, trình khởi chạy ứng dụng Java và trình xem applet. Trình biên dịch JIT đề cập đến chỉ trong trình biên dịch thời gian. Đó là cách đơn giản nhất để thực hiện mã máy tính có trong quá trình tổng hợp trong quá trình thực hiện chương trình hơn là trước khi thực hiện. Nó thường sử dụng dịch mã bytecode sang mã máy. Sau đó nó được thực hiện trực tiếp. Truy cập các nhà xác định là các từ khóa được xác định trước được sử dụng để giúp JVM hiểu phạm vi của một biến, phương thức và lớp. Chúng tôi có bốn nhà xác định truy cập. Có hai loại nhà xây dựng trong Java. Các hàm tạo tham số hóa: Hàm tạo tham số hóa chấp nhận các tham số mà người dùng có thể khởi tạo các biến thể hiện. Người dùng có thể khởi tạo các biến lớp một cách linh hoạt tại thời điểm khởi tạo lớp. Các hàm tạo mặc định: Loại này không chấp nhận bất kỳ tham số nào; Thay vào đó, nó khởi tạo các biến lớp với các giá trị mặc định của chúng. Nó được sử dụng chủ yếu để tạo đối tượng. Có, một hàm tạo có thể trả về một giá trị. Nó thay thế thể hiện hiện tại của lớp một cách ngầm; Bạn không thể làm cho một hàm tạo trả về một giá trị rõ ràng. Thuật ngữ "này" là một từ khóa cụ thể được chỉ định là từ khóa tham chiếu. Từ khóa "này" được sử dụng để chỉ các thuộc tính lớp hiện tại như phương thức, ví dụ, biến và hàm tạo. Thuật ngữ "Super" là một từ khóa cụ thể được chỉ định là từ khóa tham chiếu. Từ khóa "Super" đề cập đến đối tượng lớp cha ngay lập tức. Quá trình tạo nhiều chữ ký phương thức bằng một tên phương thức được gọi là quá tải phương thức trong Java. Hai cách để đạt được quá tải phương pháp là: Không, Java không hỗ trợ quá tải phương thức tĩnh. Quá trình sẽ ném một lỗi đọc "Phương pháp tĩnh không thể được tham chiếu." Binding là một quá trình thống nhất lệnh gọi phương thức với phân đoạn mã của phương thức. Ràng buộc muộn xảy ra khi phân đoạn mã của phương thức không xác định cho đến khi nó được gọi trong thời gian chạy. & Nbsp; Phương thức động vật động là một quá trình trong đó cuộc gọi phương thức được thực thi trong thời gian chạy. Một biến tham chiếu được sử dụng để gọi siêu lớp. Quá trình này còn được gọi là đa hình thời gian chạy. & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Chức năng xóa nhanh hơn trong các danh sách được liên kết trong Java vì người dùng cần thực hiện một bản cập nhật nhỏ cho giá trị con trỏ để nút có thể trỏ đến người kế nhiệm tiếp theo trong danh sách Vòng đời của một chủ đề bao gồm năm giai đoạn, như đã đề cập dưới đây. Mặc dù chúng trông giống nhau, có một sự khác biệt lớn giữa cả hai. Vòng đời của một applet liên quan đến những điều sau đây. An toàn loại thời gian biên dịch được cung cấp bằng cách sử dụng thuốc generic. Biên dịch loại thời gian an toàn cho phép người dùng bắt được các loại không hợp lệ không cần thiết tại thời điểm biên dịch. Các phương thức và lớp chung giúp các lập trình viên chỉ định một khai báo phương thức duy nhất, một tập hợp các phương thức liên quan hoặc các loại liên quan với khai báo lớp có sẵn. & NBSP; Giao diện bên ngoài giúp kiểm soát quá trình tuần tự hóa. Một giao diện "bên ngoài" kết hợp các phương thức readExternal và writeExternal. Chủ đề daemon có thể được định nghĩa là một luồng có ưu tiên ít nhất. Chủ đề daemon này được thiết kế để chạy trong nền trong bộ sưu tập rác ở Java. Phương thức setDaemon () tạo ra một luồng daemon trong java. Liệt kê hoặc enum là một giao diện trong java. Enum cho phép truy cập tuần tự của các yếu tố được lưu trữ trong một bộ sưu tập trong Java. Java được thiết kế để thích nghi với một môi trường phát triển. Các chương trình Java bao gồm một lượng lớn thông tin thời gian chạy được sử dụng để giải quyết quyền truy cập vào các đối tượng trong thời gian thực. & NBSP; Có, chúng tôi có thể thực thi bất kỳ mã nào, ngay cả trước phương thức chính. Chúng tôi sẽ sử dụng một khối mã tĩnh khi tạo các đối tượng vào thời gian tải của lớp. Bất kỳ câu lệnh nào trong khối mã tĩnh này sẽ được thực thi cùng một lúc trong khi tải lớp, ngay cả trước khi tạo các đối tượng trong phương thức chính. Phương pháp hoàn thiện được gọi là bộ thu rác. Đối với mỗi đối tượng, Trình thu gom rác gọi phương thức Finalize () chỉ trong một lần. Bây giờ, hãy chuyển sang phần cuối cùng của chúng tôi về các câu hỏi phỏng vấn Java Core Advanced rất hữu ích cho các chuyên gia có kinh nghiệm và làm việc. Không, từ khóa "và" siêu "này nên được sử dụng trong câu lệnh đầu tiên trong trình xây dựng lớp. Mã sau đây cho bạn một ý tưởng ngắn gọn. lớp công khai Baseclass {& nbsp; & nbsp; & nbsp; super(); this(); & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; } } JSP là một chữ viết tắt cho trang Java Servlet. Trang JSP bao gồm hai loại văn bản. JDBC là một chữ viết tắt cho đầu nối cơ sở dữ liệu Java. JDBC là một lớp trừu tượng được sử dụng để thiết lập kết nối giữa cơ sở dữ liệu hiện có và ứng dụng Java Chỉ thị là hướng dẫn được xử lý bởi JSP Engine. Sau khi trang JSP được biên dịch thành một servlet, chỉ thị đặt các hướng dẫn cấp trang, chèn các tệp bên ngoài và xác định các thư viện thẻ tùy chỉnh. Các chỉ thị được xác định bằng cách sử dụng các ký hiệu bên dưới: bắt đầu với "< %@" và sau đó kết thúc với " %>" & nbsp; Các loại chỉ thị khác nhau được hiển thị dưới đây: Nó bao gồm một tệp và kết hợp nội dung của toàn bộ tệp với các trang hiện đang hoạt động. Chỉ thị trang xác định các thuộc tính cụ thể trong trang JSP, như trang bộ đệm và lỗi. Taglib tuyên bố một thư viện thẻ tùy chỉnh, được sử dụng trên trang. Các đối tượng kế thừa "lớp quan sát" chăm sóc một danh sách các "người quan sát." & Nbsp; Khi một đối tượng có thể quan sát được được nâng cấp, nó gọi phương thức cập nhật () của từng người quan sát của nó. & NBSP; Sau đó, nó thông báo cho tất cả các nhà quan sát rằng có một sự thay đổi của nhà nước. & NBSP; Giao diện người quan sát được thực hiện bởi các đối tượng quan sát các đối tượng có thể quan sát được. Một phiên về cơ bản được định nghĩa là trạng thái động của cuộc trò chuyện ngẫu nhiên giữa máy khách và máy chủ. Kênh giao tiếp ảo bao gồm một chuỗi các phản hồi và yêu cầu từ cả hai bên. Cách phổ biến để thực hiện quản lý phiên là thiết lập ID phiên trong diễn ngôn giao tiếp của khách hàng và máy chủ. Mùa xuân về cơ bản được định nghĩa là một khung ứng dụng trong Java và đảo ngược các thùng chứa điều khiển cho Java. Khung lò xo tạo ra các ứng dụng doanh nghiệp trong Java. Đặc biệt hữu ích để ghi nhớ rằng các tính năng trung tâm của khung lò xo về cơ bản có lợi cho bất kỳ ứng dụng Java nào. Spring MVC có hai cách tiếp cận để xử lý các trường hợp ngoại lệ: Kiến trúc mật mã Java cung cấp một nền tảng và cung cấp các giao diện lập trình kiến trúc và ứng dụng cho phép giải mã và mã hóa. & NBSP; Các nhà phát triển sử dụng kiến trúc mật mã Java để kết hợp ứng dụng với các ứng dụng bảo mật. Kiến trúc mật mã Java giúp thực hiện các quy tắc và quy định bảo mật của bên thứ ba. & NBSP; Kiến trúc mật mã Java sử dụng bảng băm, thông báo mã hóa tiêu hóa, v.v. để thực hiện bảo mật. API kiên trì Java cho phép chúng tôi tạo lớp tồn tại cho các ứng dụng máy tính để bàn và web. Các giao dịch kiên trì của Java sau: Tùy chọn xác thực có sẵn trong các dịch vụ: Có bốn tùy chọn khác nhau để xác thực trong servlet: Tên người dùng và mật khẩu được máy khách cung cấp để xác thực người dùng. Trong đó, biểu mẫu đăng nhập được lập trình viên bằng cách sử dụng HTML. Nó tương tự như xác thực cơ bản, nhưng mật khẩu được mã hóa bằng công thức băm. Công thức băm làm cho Digest an toàn hơn. Nó yêu cầu mỗi khách hàng truy cập tài nguyên có một chứng chỉ mà nó gửi để xác thực chính nó. Xác thực khách hàng yêu cầu giao thức SSL. Các trình lặp Failfast và trình lặp không an toàn được sử dụng trong các bộ sưu tập Java. & NBSP; Các trình lặp Failfast không cho phép thay đổi hoặc sửa đổi đối với các bộ sưu tập Java, điều đó có nghĩa là chúng thất bại khi phần tử mới nhất được thêm vào bộ sưu tập hoặc phần tử hiện tại bị xóa khỏi bộ sưu tập. Các trình lặp Failfast có xu hướng thất bại và ném một ngoại lệ gọi là đồng thời Ví dụ: ArrayList, Hashmap Trong khi đó, mặt khác, các trình lặp không an toàn cho phép thay đổi hoặc sửa đổi được thực hiện trên các bộ sưu tập Java. Có thể, vì các trình lặp không an toàn thường hoạt động trên bản sao nhân bản của bộ sưu tập. Do đó, họ không ném bất kỳ ngoại lệ cụ thể. Ví dụ: copyonWriteArrayList Chuỗi có thể được đảo ngược bằng cách sử dụng chương trình sau. gói SimplileArnjava; lớp công khai StringReverse { công khai tĩnh void main (String args []) { Chuỗi str = "SimpleLearn"; Chuỗi đảo ngược = new StringBuffer (str) .reverse (). ToString (); System.out.printf ("Từ thực tế: %s, từ sau khi đảo ngược %s", str, lùi); } Đảo ngược chuỗi tĩnh công khai (Nguồn chuỗi) { if (nguồn == null || nguồn.isempty ()) { trở lại nguồn; } Đảo ngược chuỗi tĩnh công khai (Nguồn chuỗi) { if (nguồn == null || nguồn.isempty ()) { trở lại nguồn; } Đảo ngược chuỗi tĩnh công khai (Nguồn chuỗi) { } } Đảo ngược chuỗi tĩnh công khai (Nguồn chuỗi) { if (nguồn == null || nguồn.isempty ()) { trở lại nguồn;Chuỗi đảo ngược = ""; gói SimplileArnjava; lớp công khai StringReverse { công khai tĩnh void main (String args []) { công khai tĩnh void main (String args []) { Chuỗi str = "SimpleLearn"; Chuỗi đảo ngược = new StringBuffer (str) .reverse (). ToString (); System.out.printf ("Từ thực tế: %s, từ sau khi đảo ngược %s", str, lùi); } Đảo ngược chuỗi tĩnh công khai (Nguồn chuỗi) { } } } Đảo ngược chuỗi tĩnh công khai (Nguồn chuỗi) { if (nguồn == null || nguồn.isempty ()) { 25 trở lại nguồn; Chuỗi đảo ngược = "";for (int i = source.length ()-1; i> = 0; i--) { gói SimplileArnjava; lớp công khai StringReverse { công khai tĩnh void main (String args []) { Chuỗi str = "SimpleLearn"; Chuỗi đảo ngược = new StringBuffer (str) .reverse (). ToString (); công khai tĩnh void main (String args []) { printduplicatecharacters ("SimpleLearn"); } công khai void void printDupLateCharacters (chuỗi từ) { char [] ký tự = word.toararray (); Bản đồ Charmap = New Hashmap (); for (ký tự ch: ký tự) { if (charmap.containskey (ch)) { charmap.put (ch, charmap.get (ch) + 1); } khác { Charmap.put (ch, 1); } } công khai void void printDupLateCharacters (chuỗi từ) { char [] ký tự = word.toararray (); Bản đồ Charmap = New Hashmap (); for (ký tự ch: ký tự) { if (charmap.containskey (ch)) { } } } } charmap.put (ch, charmap.get (ch) + 1); } khác { Charmap.put (ch, 1); Đặt EntrySet = Charmap.Entryset (); System.out.printf ("Danh sách các ký tự trùng lặp trong chuỗi ' %s' %n", từ);for (map.entry Entry: EntrySet) { if (entry.getValue ()> 1) { System.out.printf (" %s: %d %n", entry.getKey (), entry.getValue ()); Đầu ra dự kiến: Danh sách các ký tự trùng lặp trong chuỗi 'SimpleLearn.' & NBSP; I: 2 & nbsp; L: 2 & nbsp; Câu 64. Viết một chương trình để loại bỏ các bản sao trong một danh sách mảng. Chương trình sau đây có thể được triển khai để loại bỏ các phần tử trùng lặp trong một danh sách mảng num.add(1); num.add(2); num.add(3); num.add(4); num.add(5); num.add(6); num.add(3); num.add(4); gói SimplileArnjava; num.add(6); nhập java.util.arraylist; nhập java.util.linkedhashset; num.clear(); num.addAll(primesWithoutDuplicates); nhập java.util.list; } } nhập java.util.set; lớp công khai mảng công khai tĩnh void main (String args []) { Danh sách num = new ArrayList ();num.add (5); if (entry.getValue ()> 1) { System.out.printf (" %s: %d %n", entry.getKey (), entry.getValue ()); Đầu ra dự kiến: Danh sách các ký tự trùng lặp trong chuỗi 'SimpleLearn.' & NBSP; I: 2 & nbsp; L: 2 & nbsp; Câu 64. Viết một chương trình để loại bỏ các bản sao trong một danh sách mảng. Chương trình sau đây có thể được triển khai để loại bỏ các phần tử trùng lặp trong một danh sách mảng gói SimplileArnjava; nhập java.util.arraylist; nhập java.util.linkedhashset; } khác { Charmap.put (ch, 1); } } System.out.println(map); } } nhập java.util.set; lớp công khai mảng công khai tĩnh void main (String args []) {Danh sách num = new ArrayList (); if (entry.getValue ()> 1) { System.out.printf (" %s: %d %n", entry.getKey (), entry.getValue ()); Đầu ra dự kiến: { Danh sách các ký tự trùng lặp trong chuỗi 'SimpleLearn.' & NBSP; I: 2 & nbsp; L: 2 & nbsp; Câu 64. Viết một chương trình để loại bỏ các bản sao trong một danh sách mảng. Chương trình sau đây có thể được triển khai để loại bỏ các phần tử trùng lặp trong một danh sách mảng { gói SimplileArnjava; } Chương trình sau đây có thể được triển khai để loại bỏ các phần tử trùng lặp trong một danh sách mảng { gói SimplileArnjava; { nhập java.util.arraylist; nhập java.util.linkedhashset; } nhập java.util.list; { nhập java.util.set; } } lớp công khai mảng công khai tĩnh void main (String args []) { } } nhập java.util.set; lớp công khai mảng công khai tĩnh void main (String args []) { Danh sách num = new ArrayList (); num.add (5); System.out.println ("Danh sách các yếu tố của bạn trong ArrayList:" + num);Đặt primeswithoutduplicates = new LinkedHashset (num); Câu 68. Bạn có thể cung cấp một số triển khai từ điển có một số lượng lớn từ không?Việc triển khai đơn giản nhất có thể được đưa ra là danh sách trong đó người ta có thể đặt các từ được đặt hàng và thực hiện tìm kiếm nhị phân. Việc triển khai khác với hiệu suất tìm kiếm tốt hơn là Hashmap trong đó khóa được sử dụng làm ký tự đầu tiên của từ và giá trị là một danh sách liên kết. Lên một cấp độ khác, có những hashmap như: bản đồ băm { a (khóa)-> Hashmap (key-aa, value (hashmap (key-aaa, value) B (Key)-> Hashmap (Key-ba, Giá trị (Hashmap (Key-BAA, Giá trị) Z (Key)-> Hashmap (Key-Za, Giá trị (Hashmap (Key-Zaa, Giá trị) } Lên đến các mức N trong đó n là kích thước trung bình của từ trong từ điển. Câu 69. Làm thế nào bạn sẽ giải quyết nó nếu bạn có thể phải gặp các chương trình mẫu trong Java?Giải pháp - Top 25 chương trình mẫu được hỏi thường gặp nhất trong Java Với điều này, chúng tôi đã đi đến cuối bài viết câu hỏi phỏng vấn Java này. Tiến lên phía trước, chúng tôi sẽ xem xét các bước quan trọng tiếp theo mà bạn có thể theo đuổi, để làm chủ Java. Câu 70. Bạn hiểu gì bởi một biến thể hiện và biến cục bộ?Nói chung, các biến thể hiện được khai báo trong một lớp nhưng các phương thức bên ngoài trong khi một biến cục bộ được khai báo trong các khối mã. // Biến cục bộ nhập java.io.*; lớp chính { công khai tĩnh void main (chuỗi [] args) { int var = 145; System.out.println ("Biến cục bộ:" + var); } } Lên đến các mức N trong đó n là kích thước trung bình của từ trong từ điển. nhập java.io.*; lớp chính { công khai tĩnh void main (chuỗi [] args) công khai tĩnh void main (chuỗi [] args) { int var = 145; System.out.println ("Biến cục bộ:" + var); } } Lên đến các mức N trong đó n là kích thước trung bình của từ trong từ điển.Câu 69. Làm thế nào bạn sẽ giải quyết nó nếu bạn có thể phải gặp các chương trình mẫu trong Java? Example: lớp chính { công khai tĩnh void main (chuỗi [] args) { } int var = 145; System.out.println ("Biến cục bộ:" + var); } // biến thể hiện Công khai int giá trị = 12; } Chính Va = new Main (); System.out.println ("giá trị của tôi là:" + va.value); } Câu 71. Phương pháp chính có thể bị quá tải không? Có, phương pháp chính có thể bị quá tải bao nhiêu lần tùy thích. Tuy nhiên, JVM thích gọi phương thức chính với sự trợ giúp của phương thức gọi được xác định trước của nó. & NBSP; } } Lên đến các mức N trong đó n là kích thước trung bình của từ trong từ điển.Câu 69. Làm thế nào bạn sẽ giải quyết nó nếu bạn có thể phải gặp các chương trình mẫu trong Java? Giải pháp - Top 25 chương trình mẫu được hỏi thường gặp nhất trong Java #function1 Với điều này, chúng tôi đã đi đến cuối bài viết câu hỏi phỏng vấn Java này. Tiến lên phía trước, chúng tôi sẽ xem xét các bước quan trọng tiếp theo mà bạn có thể theo đuổi, để làm chủ Java. { int var = 145; } #function2 Lên đến các mức N trong đó n là kích thước trung bình của từ trong từ điển. { int var = 145; } Lên đến các mức N trong đó n là kích thước trung bình của từ trong từ điển. Câu 69. Làm thế nào bạn sẽ giải quyết nó nếu bạn có thể phải gặp các chương trình mẫu trong Java? Giải pháp - Top 25 chương trình mẫu được hỏi thường gặp nhất trong Java { Với điều này, chúng tôi đã đi đến cuối bài viết câu hỏi phỏng vấn Java này. Tiến lên phía trước, chúng tôi sẽ xem xét các bước quan trọng tiếp theo mà bạn có thể theo đuổi, để làm chủ Java. } } Lên đến các mức N trong đó n là kích thước trung bình của từ trong từ điển. Giải pháp - Top 25 chương trình mẫu được hỏi thường gặp nhất trong Java { Với điều này, chúng tôi đã đi đến cuối bài viết câu hỏi phỏng vấn Java này. Tiến lên phía trước, chúng tôi sẽ xem xét các bước quan trọng tiếp theo mà bạn có thể theo đuổi, để làm chủ Java. } } lớp chính { công khai tĩnh void main (chuỗi [] args) { { obja.show(); int var = 145; objb.show(); } } Lên đến các mức N trong đó n là kích thước trung bình của từ trong từ điển.Câu 69. Làm thế nào bạn sẽ giải quyết nó nếu bạn có thể phải gặp các chương trình mẫu trong Java? Giải pháp - Top 25 chương trình mẫu được hỏi thường gặp nhất trong JavaVới điều này, chúng tôi đã đi đến cuối bài viết câu hỏi phỏng vấn Java này. Tiến lên phía trước, chúng tôi sẽ xem xét các bước quan trọng tiếp theo mà bạn có thể theo đuổi, để làm chủ Java. Câu 70. Bạn hiểu gì bởi một biến thể hiện và biến cục bộ? Nói chung, các biến thể hiện được khai báo trong một lớp nhưng các phương thức bên ngoài trong khi một biến cục bộ được khai báo trong các khối mã. Hoàn thiện được sử dụng để gọi chức năng thực hiện việc làm sạch bộ sưu tập rác của một đối tượng. & NBSP; Câu 75. Khi nào bạn có thể sử dụng từ khóa "Super"?Về cơ bản, từ khóa siêu được sử dụng để tham khảo lớp cha. Khi có cùng một trường trong cả hai lớp cha và con, thì người ta có thể sử dụng một từ khóa siêu để truy cập các thành viên dữ liệu của lớp cha. Câu 76. Bản sao nông và bản sao sâu trong Java là gì?Trong trường hợp bản sao nông, các loại dữ liệu nguyên thủy được sao chép, trong khi trong trường hợp bản sao sâu cùng với các loại dữ liệu nguyên thủy, các tham chiếu đối tượng cũng được sao chép. Câu 77. Sử dụng các thuộc tính có liên quan làm nổi bật sự khác biệt giữa các giao diện và các lớp trừu tượng.Một lớp trừu tượng có thể có sự kết hợp của cả các phương pháp trừu tượng và không Abstract, trong khi giao diện chỉ có các phương thức trừu tượng trong đó. Câu 78. Các cách sử dụng chủ đề khác nhau là gì? & NBSP;Có hai cách để xác định và thực hiện một chủ đề trong Java. Họ bằng cách triển khai giao diện Runnable và mở rộng lớp luồng. Mở rộng lớp chủ đề Class ReviewBitThreadExample mở rộng chủ đề {& nbsp; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; & nbsp; công khai static void main (String args []) {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ib.start(); } } Thực hiện giao diện Runnable Class ReviewBitThreadExample thực hiện Runnable {& nbsp; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; & nbsp; công khai static void main (String args []) {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ib.start(); } } Thực hiện giao diện Runnable Class ReviewBitThreadExample thực hiện Runnable {& nbsp; & nbsp; & nbsp;& nbsp; & nbsp; & nbsp; công khai static void main (String args []) {& nbsp; & nbsp; & nbsp;Việc thực hiện một luồng bằng phương pháp giao diện Runnable được ưa thích và thuận lợi hơn vì Java không có hỗ trợ cho nhiều lần kế thừa của các lớp. Phương thức start () được sử dụng để tạo một ngăn xếp cuộc gọi riêng cho thực thi luồng. Khi ngăn xếp cuộc gọi được tạo, JVM gọi phương thức Run () để thực thi luồng trong ngăn xếp cuộc gọi đó. Câu 79. Sự khác biệt giữa từ khóa ‘Ném 'và‘ Ném' trong Java là gì? } } Thực hiện giao diện Runnable InterviewBit(){ Class ReviewBitThreadExample thực hiện Runnable {& nbsp; & nbsp; } } Thực hiện giao diện Runnable Scaler(){ Class ReviewBitThreadExample thực hiện Runnable {& nbsp; & nbsp; } & nbsp; this(); super(); & nbsp; & nbsp; & nbsp; công khai static void main (String args []) {& nbsp; & nbsp; & nbsp; } Thực hiện giao diện Runnable Class ReviewBitThreadExample thực hiện Runnable {& nbsp; & nbsp;& nbsp; & nbsp; & nbsp; & nbsp; công khai static void main (String args []) {& nbsp; & nbsp;& nbsp; Câu 83. Các giá trị mặc định được gán cho các biến và phiên bản trong Java là gì?Theo mặc định, đối với một giá trị số, nó là 0, đối với giá trị boolean, nó là sai và đối với các đối tượng thì nó là null. Câu 84. Ý bạn là gì khi đóng gói dữ liệu?Đóng gói dữ liệu là một trong những thuộc tính của các khái niệm OOPS, trong đó tất cả các dữ liệu như biến và phương thức được gắn với nhau như một đơn vị. Câu 85. 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?Toán tử bình đẳng (==) được sử dụng để kiểm tra điều kiện bình đẳng giữa hai biến. Nhưng phương thức bằng () được sử dụng để kiểm tra điều kiện bình đẳng giữa hai đối tượng. Câu 86. Làm thế nào một vòng lặp vô hạn được tuyên bố trong Java?Một vòng lặp vô hạn có thể được khai báo trong Java bằng cách phá vỡ logic trong khối lệnh. & Nbsp; Ví dụ, for (int i = 1; i> 0; i ++) { //statements } Mã trên tạo thành một vòng lặp vô hạn trong Java. Câu 87. Giải thích ngắn gọn về khái niệm quá tải hàm tạoKhái niệm về quá tải hàm tạo đề cập đến việc có nhiều phương thức trong một lớp với tên của chúng giống như tên lớp. Sự khác biệt nằm trong tập hợp các tham số được truyền cho các chức năng. Câu 88. 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, người ta có thể áp dụng từ khóa cuối cùng cho một biến, phương thức và lớp. Với sự trợ giúp của từ khóa cuối cùng, biến hóa ra là một hằng số, phương thức không thể được kế thừa và lớp không thể được ghi đè. Câu 89. 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.Có, có khả năng khối ‘cuối cùng không thể được thực thi. Dưới đây là một số trường hợp xảy ra tình huống trên.
Câu 90. Sự khác biệt giữa các phương thức tĩnh, các biến tĩnh và các lớp tĩnh trong Java.Một biến, phương thức hoặc lớp có thể được thực hiện tĩnh bằng cách sử dụng từ khóa tĩnh. Một lớp tĩnh không thể được khởi tạo. Khi cả hai đối tượng hoặc trường hợp của một lớp chia sẻ cùng một biến, điều này được gọi là các biến tĩnh. Các phương pháp tĩnh chỉ đơn giản là các phương pháp đề cập đến lớp mà chúng được viết. Câu 91. 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 việc sử dụng bộ sưu tập rác là giải phóng bộ nhớ heap bằng cách loại bỏ các đối tượng không cần thiết. Câu 92. Ngoài khía cạnh bảo mật, những lý do đằng sau việc tạo ra các chuỗi bất biến trong Java là gì?Do bảo mật, đồng bộ hóa, đồng thời, bộ nhớ đệm và tải lớp, chuỗi này là bất biến trong Java. Lý do để thực hiện chuỗi cuối cùng là phá hủy tính bất biến của nó và giúp ngăn chặn những người khác cố gắng mở rộng nó. Các đối tượng chuỗi được lưu trong bộ nhớ cache trong nhóm chuỗi, làm cho chúng bất biến. Câu 93. Điều nào dưới đây tạo ra lỗi thời gian biên dịch? Nêu lý do.int [] n1 = new int [0]; boolean [] n2 = new boolean [-200]; Double [] n3 = new Double [2241423798]; char [] ch = new char [20]; Chúng tôi nhận được một lỗi thời gian biên dịch trong dòng 3. Lỗi chúng tôi sẽ nhận được trong dòng 3 là - số nguyên quá lớn. Đó là bởi vì mảng yêu cầu kích thước như một số nguyên. & Nbsp; Và số nguyên mất 4 byte trong bộ nhớ. Và số (2241423798) vượt quá khả năng của số nguyên. Kích thước mảng tối đa mà chúng ta có thể khai báo là - (2147483647). Bởi vì mảng yêu cầu kích thước trong số nguyên, không có dòng nào (1, 2 và 4) sẽ gây ra lỗi thời gian biên dịch. Chương trình sẽ biên dịch tốt. Nhưng chúng ta có ngoại lệ thời gian chạy trong dòng 2. Ngoại lệ là - NegativeArraySizeeException. & NBSP; Đây là những gì sẽ xảy ra là - tại thời điểm JVM sẽ phân bổ bộ nhớ cần thiết trong thời gian chạy thì nó sẽ thấy rằng kích thước là âm. Và kích thước mảng có thể là âm. Vì vậy, JVM sẽ ném ngoại lệ. Câu 94. Làm thế nào bạn sẽ phân biệt giữa chuỗi, StringBuffer và StringBuilder?Lớp chuỗi là bất biến nhưng hai lớp còn lại có thể thay đổi trong tự nhiên. StringBuffer là đồng bộ trong khi StringBuilder không đồng bộ. Chuỗi sử dụng nhóm chuỗi làm bộ nhớ lưu trữ trong khi hai bộ nhớ khác sử dụng bộ nhớ heap cho mục đích lưu trữ. Câu 95. Bộ so sánh trong Java là gì?Một bộ so sánh là một giao diện, được sử dụng để sắp xếp các đối tượng. & Nbsp; Câu 95. Trong Java, có thể ghi đè phương thức tĩnh cũng như riêng tư. Nhận xét về tuyên bố.Trong Java, bạn thực sự có thể ghi đè một phương thức riêng tư hoặc tĩnh. Nếu bạn tạo một phương thức tương tự trong một lớp con có cùng loại trả về và các đối số phương thức, nó sẽ ẩn phương thức siêu lớp; Điều này được gọi là che giấu phương pháp. Tương tự, bạn không thể ghi đè một phương thức riêng trong một lớp con vì nó không thể truy cập được từ đó. Câu 96. Điều gì tạo nên một băm khác với cây?Trong một băm, các phần tử chưa được phân loại và hoạt động nhanh hơn một bộ cây. & Nbsp; Nó được thực hiện bằng cách sử dụng bảng băm. Câu 97. Tại sao mảng ký tự được ưa thích hơn chuỗi để lưu trữ thông tin bí mật?Bởi vì các chuỗi là bất biến, bất kỳ thay đổi nào sẽ dẫn đến việc tạo ra một chuỗi mới, trong khi char [] cho phép bạn đặt tất cả các yếu tố thành trống hoặc không. Vì vậy, việc lưu trữ mật khẩu trong một mảng ký tự làm giảm rõ ràng rủi ro bảo mật của hành vi trộm cắp mật khẩu. Câu 98. Sự khác biệt giữa Hashmap và Hashtable trong Java là gì?
Câu 99. Tầm quan trọng của sự phản ánh trong Java là gì?Phản ánh là một thuộc tính của Java, cho phép mã Java tự kiểm tra. Một lớp Java, ví dụ, có thể lấy tên của tất cả các thành viên của nó và giới thiệu chúng. Q 100. Các loại ưu tiên luồng khác nhau trong Java là gì? Và mức độ ưu tiên mặc định của một luồng được chỉ định bởi JVM là gì?Có nhiều loại thuộc tính luồng khác nhau trong Java. Chúng là min_priority, max_priority và Norm_priority. Theo mặc định, luồng được gán Norm_priority. Câu 101. Mối quan hệ ‘A IS-A trong OOPS Java là gì?Mối quan hệ IS-A, có liên quan đến tài sản thừa kế của OOPS Java. Đó là một loại mối quan hệ cha mẹ và con cái được thiết lập giữa hai lớp. Bước tiếp theoCâu hỏi phỏng vấn Java thực sự quan trọng để trải qua trước khi tham dự một cuộc phỏng vấn. Nó giúp bạn đặt mình vào khía cạnh an toàn hơn bằng cách bạn sẵn sàng để có thể trả lời các câu hỏi được hỏi trong cuộc phỏng vấn của bạn. Bây giờ, bước tiếp theo là học cách trở thành một nhà phát triển phần mềm. Bạn cũng có thể khám phá và làm quen với các câu hỏi và câu trả lời phỏng vấn liên quan đến các ngôn ngữ phụ trợ khác như Php, Python và Node.js Câu hỏi phỏng vấn. Nếu bạn đang tìm kiếm nhiều kiến thức chuyên sâu hơn về ngôn ngữ lập trình Java và thông tin về cách được chứng nhận là nhà phát triển chuyên nghiệp phát triển web, hãy khám phá các chương trình đào tạo và chứng nhận Java của chúng tôi, mà các chuyên gia trong ngành có kinh nghiệm SimpleLearn cung cấp trong thời gian thực. Đặc biệt, hãy xem khóa học phát triển Stack đầy đủ của chúng tôi ở Ấn Độ ngày hôm nay! Nếu bạn có bất kỳ câu hỏi nào về bài viết phỏng vấn của Java Java này, vui lòng để chúng trong phần bình luận và các chuyên gia của chúng tôi sẽ trả lời chúng cho bạn, sớm nhất! Các câu hỏi phỏng vấn Java phổ biến nhất là gì?Dưới đây là một số câu hỏi phỏng vấn Java cơ bản phổ biến nhất để giúp bạn chuẩn bị cho một cuộc phỏng vấn ... Trong Java, các khối tĩnh và khởi tạo tĩnh là gì ?. Trong Java, quá tải phương pháp là gì ?. Sự khác biệt giữa điều này () và Super () trong java là gì ?. Chính xác thì một trình biên dịch JIT là gì ?. Tại sao nền tảng Java là bất khả tri ?. Những chủ đề nào của Java là quan trọng để phỏng vấn?Một số chủ đề phổ biến cho cuộc phỏng vấn Java là:.. Các khái niệm oops .. Chuỗi Java .. Khung bộ sưu tập .. Multithreading.. Generics.. Xử lý ngoại lệ .. API phát trực tuyến .. Biểu thức Lambda .. 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..... Câu hỏi phỏng vấn Java nâng cao là gì?10 Câu hỏi phỏng vấn Java nâng cao với câu trả lời mẫu.. Mô tả Java và nêu một số tính năng của nó..... Sự khác biệt giữa C ++ và Java là gì?.... Các nhà xây dựng làm gì trong Java và sự khác biệt giữa các hàm tạo mặc định và tham số hóa là gì?.... Bộ nhớ HEAP và bộ nhớ chồng sống trong bao lâu ?. |