Rumah > Java > javaTutorial > Jawapan Soalan Temuduga Java untuk Latihan

Jawapan Soalan Temuduga Java untuk Latihan

WBOY
Lepaskan: 2024-09-06 06:04:12
asal
577 orang telah melayarinya

Disclosure: This post includes affiliate links; I may receive compensation if you purchase products or services from the different links provided in this article.
_

Java Interview Questions Answers for Practice
Hello devs, are you preparing for Java developer interviews? If Yes, here is a list of some useful Java interview questions for experienced Java programmers having experience in range of 2 to 5 years.

As an experienced developer you are expected to learn about OOP concepts, Java basics, Java Collection framework, Multi-threading and Concurrency utilities introduced in Java 5 and 6, Debugging Java application, Algorithm and Data structure, Some questions on design patterns, JVM and Garbage collection and couple of puzzles.

Actually its mix of everything you do in your day to day work.

If you are going for Java developer with some exposure on web development you will also be asked about popular Java frameworks like Spring, Hibernate, Struts 2.0 and others.

If you have more than 5 years of experience you can also expect questions about build tools like Maven, ANT and Gradle, Java best practices, Unit testing and JUnit and your experience about solving production issues.

One of the most common question I have faced is talking about the last production problem you have faced and how did you solved it.

If you are asked same question, give them step by step detail, right from analyzing problem to tactical fix to strategic solution.

In this article, I am going to share my list of Java Interview question for Java guys having 2 to 5 years of experience. Since I had similar experience couple of year ago, I know what questions are asked and keeping a list for your own always helps when you start looking for new challenge in your career.

I am not providing answers of these question in this post due to two reasons, questions are quite simple and you guys probably know the answer, second providing answer means I cannot use this post for my own preparation later, which is more important.

Though, I could write another article answering all these question if anyone request or I feel people need it.

By the way, if you are new to Java programming language or want to improve Java skills then you can also checkout sites like CodeGym, ZTM and karpado to learn Java by building Games and projects.

Java Interview Questions Answers for Practice

Java Interview Questions for 1 to 2 years Experienced

This list contains questions from different topics e.g. OOP concepts, multi-threading and concurrency, Java collections, Web services, Spring, Hibernate, Database and JDBC, it doesn't cover all topics you need to prepare.

I will add few more topics later when I have some time, for now, try to answer these questions without doing Google :)

Java Interview questions on OOP Concepts

Here are a couple of questions on OOP design, SOLID principle and baseic programming concepts

1. What is the difference between loose coupling and tight coupling?

Loose coupling allows components to interact with each other with minimal dependencies, while tight coupling creates strong dependencies between components.

2. What is the difference between cohesion and coupling?

Cohesion refers to the degree to which elements within a module belong together, while coupling refers to the degree of interdependence between modules.

3. What is Liskov Substitution principle? Can you explain with an example?

Liskov Substitution principle states that objects of a superclass should be replaceable with objects of its subclasses without affecting the correctness of the program.

For example, if you have a class hierarchy with a superclass "Shape" and subclasses "Circle" and "Square", any method that works with Shape should also work with Circle or Square without causing errors.

4. What is the difference between abstract class and interface in Java?

Abstract classes can have both abstract and concrete methods, while interfaces can only have abstract methods. Additionally, a class can implement multiple interfaces but can only extend one abstract class.

5. What is the difference between composition, aggregation, and association?

Composition implies a strong ownership relationship where the lifetime of the contained object is dependent on the container.

L'agrégation implique une relation plus faible où l'objet contenu peut exister indépendamment du conteneur. L'association implique une relation entre deux classes sans aucune dépendance en matière de propriété ou de cycle de vie.

Java Questions d'entrevue sur les collections

Voyons maintenant quelques questions des collections et du flux

1. Différence entre List, Set et Map en Java ?

Les listes conservent les éléments dans un ordre séquentiel et autorisent les doublons (par exemple, ArrayList, LinkedList). Les ensembles n'autorisent pas les doublons et ne garantissent pas l'ordre (par exemple, HashSet, TreeSet). Les cartes stockent les paires clé-valeur et n'autorisent pas les clés en double (par exemple, HashMap, TreeMap).

2. Différence entre la collecte synchronisée et simultanée en Java ?

Les collections synchronisées utilisent un verrouillage explicite pour assurer la sécurité des threads, permettant à un seul thread de modifier la collection à la fois. Les collections simultanées utilisent des algorithmes non bloquants et sont conçues pour une concurrence élevée, permettant à plusieurs threads de modifier la collection simultanément sans verrouillage explicite.

3. Comment fonctionne la méthode get de HashMap en Java ?

La méthode get de HashMap calcule le code de hachage de la clé fournie, détermine l'index dans le tableau sous-jacent en fonction du code de hachage, puis recherche la clé à cet index. S'il est trouvé, il renvoie la valeur correspondante ; sinon, il renvoie null.

4. En quoi ConcurrentHashMap est-il différent de Hashtable ? Comment assure-t-il la sécurité des threads ?

ConcurrentHashMap permet un accès simultané à la carte sans blocage, tandis que Hashtable utilise des méthodes synchronisées pour assurer la sécurité des threads, ce qui entraîne des goulots d'étranglement potentiels en termes de performances. ConcurrentHashMap assure la sécurité des threads en divisant la carte en segments, chacun avec son verrou, permettant à plusieurs threads de modifier différents segments simultanément.

5. Quand utiliser LinkedList sur ArrayList en Java ?

Utilisez LinkedList lorsque des opérations d'insertion et de suppression fréquentes sont nécessaires, car LinkedList permet une insertion et une suppression en temps constant à n'importe quelle position. Utilisez ArrayList lorsque l'accès aléatoire et les itérations sont fréquents, car ArrayList fournit un accès en temps constant par index.

Questions d'entrevue Java sur la concurrence et les threads

Maintenant, il est temps de voir les questions liées aux concepts de multithreading et de concurrence Java :

1. Comment fonctionnent notify et notifyAll, et quelle est la différence entre eux ? Pourquoi préférer notifyAll à notifier ?

Notify et notifyAll sont des méthodes Java utilisées pour réveiller les threads en attente sur un moniteur (c'est-à-dire en attente d'acquérir le verrou d'un objet). notify réveille un thread sélectionné au hasard, tandis que notifyAll réveille tous les threads en attente. notifyAll est préféré car il garantit que tous les threads en attente sont notifiés, évitant ainsi une attente indéfinie potentielle et améliorant la réactivité du système.

2. Qu'est-ce qu'une condition de concurrence critique et comment l'éviter ?

Une condition de concurrence critique se produit lorsque le résultat d'un programme dépend du timing ou de l'entrelacement de plusieurs threads. Pour éviter les conditions de concurrence critique, vous pouvez utiliser des mécanismes de synchronisation tels que des verrous, des sémaphores ou des opérations atomiques pour garantir que les sections critiques du code sont exécutées de manière atomique ou uniquement par un thread à la fois.

3. Qu’est-ce qu’une impasse et comment l’éviter ?

Un blocage se produit lorsque deux threads ou plus sont bloqués en attendant que l'autre libère les ressources dont ils ont besoin pour continuer. Pour éviter les blocages, vous pouvez utiliser des techniques telles que le classement des ressources, l'évitement des verrous imbriqués ou l'utilisation de délais d'attente pour l'acquisition de verrous. De plus, concevoir un code avec un ordre de verrouillage clair et cohérent peut aider à éviter les blocages.

4. Quelles sont certaines des classes de concurrence de haut niveau fournies par java.util.concurrent et comment fonctionnent-elles ?

Certaines classes de concurrence de haut niveau fournies par java.util.concurrent incluent ExecutorService, ThreadPoolExecutor, CountDownLatch, Semaphore, CyclicBarrier, BlockingQueue et ConcurrentHashMap. Ces classes fournissent des implémentations thread-safe de modèles et de mécanismes de concurrence courants tels que les pools de threads, les primitives de synchronisation et les structures de données concurrentes.

5. Pouvez-vous implémenter une solution producteur-consommateur en Java ?

Oui, voici le code :

import java.util.concurrent.ArrayBlockingQueue;

class Producer implements Runnable {
    private final ArrayBlockingQueue<Integer> queue;
    private int count = 0;

    Producer(ArrayBlockingQueue<Integer> queue) {
        this.queue = queue;
    }

    public void run() {
        try {
            while (true) {
                queue.put(produce());
                Thread.sleep(1000); // Simulate some work
            }
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
    }

    private int produce() {
        System.out.println("Producing: " + count);
        return count++;
    }
}

class Consumer implements Runnable {
    private final ArrayBlockingQueue<Integer> queue;

    Consumer(ArrayBlockingQueue<Integer> queue) {
        this.queue = queue;
    }

    public void run() {
        try {
            while (true) {
                consume(queue.take());
            }
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
    }

    private void consume(int item) {
        System.out.println("Consuming: " + item);
    }
}

public class Main {
    public static void main(String[] args) {
        ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<>(10);
        Producer producer = new Producer(queue);
        Consumer consumer = new Consumer(queue);

        Thread producerThread = new Thread(producer);
        Thread consumerThread = new Thread(consumer);

        producerThread.start();
        consumerThread.start();
    }
}
Salin selepas log masuk

Questions d'entretien Java sur la base de données, SQL et JDBC

JDBC est utilisé pour connecter une base de données à partir d'un programme Java, voyons quelques questions sur la base de données et JDBC

1. Comment empêcher les attaques par injection SQL ?

Pour éviter les attaques par injection SQL, utilisez des requêtes paramétrées (instructions préparées) avec des paramètres liés, une validation d'entrée et des caractères d'échappement. Évitez les requêtes SQL dynamiques construites en concaténant les entrées de l'utilisateur.

2. Quelle est la différence entre les clauses WHERE et HAVING ?

La clause WHERE filtre les lignes avant le processus de regroupement et d'agrégation, tandis que la clause HAVING filtre les données agrégées après le processus de regroupement en fonction de conditions spécifiées.

3. Que sont les transactions ? Qu’est-ce que l’ACIDE ?

Les transactions sont un ensemble d'instructions SQL exécutées comme une seule unité de travail. ACID est un acronyme pour Atomicity, Consistency, Isolation et Durability, qui sont des propriétés qui garantissent la fiabilité des transactions dans un système de base de données.

4. Différence entre les clauses tronquées, supprimées et supprimées dans SQL ?

  • TRUNCATE : supprime toutes les lignes d'une table mais conserve la structure de la table et toutes les contraintes ou index associés.
  • DELETE : supprime des lignes spécifiques d'une table en fonction d'une condition, mais conserve la structure de la table et les contraintes associées.
  • DROP : supprime une table entière, y compris sa structure, ses données et les contraintes et index associés.

5. Que sont les fonctions des fenêtres ? Comment fonctionnent-ils ?

Les fonctions de fenêtre effectuent des calculs sur un ensemble de lignes liées à la ligne actuelle dans un ensemble de résultats de requête. Ils vous permettent d'exécuter des fonctions d'agrégation (telles que SUM, AVG, COUNT) sur une fenêtre spécifiée ou un sous-ensemble de lignes, défini par la clause OVER. Les fonctions de fenêtre fonctionnent sur un ensemble de lignes et renvoient une valeur unique pour chaque ligne en fonction de cet ensemble de lignes. Ils sont souvent utilisés pour des tâches telles que le classement, l'agrégation et le calcul des totaux cumulés.

Voir le livre Grokking the SQL Interview si vous avez besoin de plus de questions sur la base de données et SQL

Java Interview Questions Answers for Practice

Questions d'entretien Java sur Hibernate

Maintenant, il est temps de voir les questions d'Hibernate, l'un des frameworks Java les plus populaires :

1. Quand est-il préférable d’utiliser du SQL brut au lieu d’ORM ?

Il est préférable d'utiliser du SQL brut lorsque :

  • Les requêtes complexes doivent être optimisées pour les performances.
  • Les exigences en matière de schéma de base de données ou de requête ne sont pas bien prises en charge par le framework ORM.
  • Un contrôle direct sur les instructions SQL, les connexions à la base de données ou les transactions est requis.

2. Différence entre collecte triée et ordonnée ?

En Java, une collection triée conserve les éléments dans un ordre spécifique défini par un comparateur ou par l'ordre naturel des éléments, tandis qu'une collection ordonnée conserve les éléments dans l'ordre dans lequel ils ont été insérés.

3. Comment fonctionne le cache de deuxième niveau ?

Le cache de deuxième niveau dans Hibernate stocke les objets dans une région de cache partagée, généralement sur plusieurs sessions. Lorsqu'une entité est interrogée pour la première fois, elle est extraite de la base de données et stockée dans le cache de deuxième niveau. Les requêtes ultérieures pour la même entité peuvent alors être satisfaites à partir du cache au lieu d'atteindre la base de données, améliorant ainsi les performances.

4. Quelle est la différence entre save() et persist() dans Hibernate ?

Les méthodes save() et persist() dans Hibernate sont utilisées pour enregistrer une entité dans la base de données. Cependant, save() renvoie immédiatement l'identifiant généré, tandis que persist() ne garantit pas l'exécution immédiate de l'instruction SQL INSERT ; il peut être exécuté plus tard pendant le temps de vidage. De plus, persist() fait partie de la spécification JPA, tandis que save() est spécifique à Hibernate.

5. Quelle est la différence entre Hibernate et MyBatis ?

  • Hibernate est un framework ORM à part entière qui mappe les objets Java aux tables de base de données, gère les connexions à la base de données et fournit divers mécanismes d'interrogation. MyBatis, quant à lui, est un framework de persistance léger qui utilise des fichiers de mappage SQL pour mapper des objets Java aux requêtes SQL.
  • Hibernate est généralement utilisé pour le développement axé sur le domaine, où la modélisation orientée objet est importante, tandis que MyBatis est souvent préféré pour les projets où un contrôle direct sur les requêtes SQL est requis, tels que les systèmes de bases de données existants ou les scénarios SQL complexes.
  • Hibernate fournit des mécanismes de mise en cache, une vérification automatique et une gestion des transactions, tandis que MyBatis offre plus de contrôle sur les requêtes et les mappages SQL, permettant aux développeurs d'écrire directement des requêtes SQL.

Questions d'entrevue Java sur les services Web et les microservices

Voyons maintenant les questions liées à l'architecture des microservices et aux services Web REST

1. Différence entre les services Web basés sur SOAP et REST ?

SOAP est basé sur un protocole avec une structure rigide, tandis que REST est un style architectural basé sur une communication sans état avec des points de terminaison flexibles.

2. Qu'est-ce que l'enveloppe SOAP ?

Il encapsule l'intégralité du message SOAP et définit sa structure.

3. Bagaimana untuk melaksanakan keselamatan dalam perkhidmatan web RESTful?

Laksanakan SSL/TLS untuk penyulitan dan pengesahan.

4. Apakah Payload dalam REST?

Ia ialah data yang dihantar dalam kandungan permintaan atau respons HTTP.

5. Apakah Microservices?

Ia ialah gaya seni bina yang mana aplikasi terdiri daripada perkhidmatan kecil dan bebas.

6. Apakah perbezaan antara Microservices dan REST?

Perkhidmatan mikro merujuk kepada reka bentuk seni bina, manakala REST ialah gaya seni bina untuk aplikasi rangkaian.

7. Apakah perbezaan antara Monolitik dan Perkhidmatan Mikro?

Monolitik mempunyai pangkalan kod tunggal, manakala Perkhidmatan Mikro mempunyai berbilang komponen bebas; Monolitik boleh mempunyai kependaman yang lebih tinggi.

8. Apakah masalah yang diselesaikan oleh corak SAGA?

Ia mengurus transaksi yang diedarkan dalam seni bina Microservices.

9. Apakah penemuan perkhidmatan dalam Microservices?

Ini adalah mekanisme untuk mencari perkhidmatan secara dinamik dalam seni bina Microservices.

  1. Apakah Corak Perkhidmatan Mikro yang biasa anda gunakan dalam projek anda? Pendaftaran Perkhidmatan, Pemutus Litar, Gerbang API.

Bahan Persediaan Temuduga Java dan Spring

Sebelum sebarang temu duga Java dan Spring Developer, saya selalu membaca Temuduga Grokking the Java dan Grokking the Spring boot

Berikut adalah beberapa lagi soalan daripada buku ini:

Java Interview Questions Answers for Practice
dan,

Java Interview Questions Answers for Practice
Dan, jika anda baru menggunakan Java maka anda juga boleh menyemak tapak seperti CodeGym, ZTM dan karpado untuk mempelajari Java dengan membina Permainan dan projek.
Terima kasih kawan-kawan buat masa ini. Anda boleh mencari jawapan dalam web dengan mudah tetapi jika ada minat yang mencukupi, saya juga boleh mengemas kini siaran itu. Beritahu saya jika anda juga pernah bertanya soalan ini sebelum ini. Jika ada yang tahu jawapan, boleh juga siarkan sebagai komen.

Semoga berjaya untuk Temuduga Java anda.

Dengan cara ini, jika anda baru dalam bahasa pengaturcaraan Java atau ingin meningkatkan kemahiran Java maka anda juga boleh menyemak mengikuti kursus Java terbaik untuk menjadi lebih baik:

Atas ialah kandungan terperinci Jawapan Soalan Temuduga Java untuk Latihan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan