Cheatsheet d'Entretien Technique Java
Questions théoriques fréquentes
Q: Qu'est-ce qu'un GC (Garbage Collector) en Java? Un GC est un processus automatisé qui libère la mémoire non utilisée par les objets créés dans le programme. Cela aide à éviter l'épuisement de la mémoire et améliore les performances.
Q: Expliquez la différence entre les méthodes
synchronizedetReentrantLock. La méthodesynchronizedest simple mais peut entraîner un déblocage global du thread. LeReentrantLockoffre plus de contrôle, comme le temps d'attente avant l'échec, et la possibilité de le "bloquer" manuellement.
Exercices de code classiques
Exo 1: Écrire une méthode qui inverse les éléments d'un tableau en utilisant une approche itérative.
public static void reverseArray(int[] arr) { int start = 0; int end = arr.length - 1; while (start < end) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; } }Exo 2: Implémenter une fonction récursive pour calculer la factorielle d'un nombre.
public static int factorial(int n) { if (n == 0) return 1; else return n * factorial(n - 1); }
Pièges courants en entretien
Piège: Utiliser
==pour comparer des chaînes de caractères.String a = "Hello"; String b = "Hello"; System.out.println(a == b); // Peut être false car 'a' et 'b' peuvent pointer vers différents objets en mémoire.Piège: Ne pas comprendre la différence entre
nullet une valeur nulle.Integer a = null; System.out.println(a == 0); // Peut entraîner un NullPointerException.
Complexité algorithmique
- Complexité O(1): Accès à un élément d'un tableau par son index.
- Complexité O(n): Parcourt une collection en une seule fois.
- Complexité O(n^2): Double boucle imbriquée.
Concepts avancés à connaître
- Threading: Utilisation des threads pour gérer la concurrence et améliorer les performances.
- Design Patterns: Comprendre les patterns courants tels que Singleton, Observer, Factory.
- Annotations: Utilisation des annotations pour spécifier des métadonnées.
Conseils pratiques
- Pratiquer régulièrement: Coder autant que possible en dehors des entretiens.
- Maîtriser les bases: Assurer une solide compréhension des concepts de base comme les collections, les exceptions, etc.
- Apprendre à analyser le code: Pratiquer l'analyse et la conception de structures de données efficaces.