100% ont trouvé ce document utile (2 votes)
230 vues10 pages

Questions d'entretien pour développeur Java

Transféré par

driss nadhem
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (2 votes)
230 vues10 pages

Questions d'entretien pour développeur Java

Transféré par

driss nadhem
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

JAVA

 Citez les différents types de visibilité en java (private, public, package, default =
package level)
o Qu’est-ce qui différencient ces visibilités ?
o Si on ne met rien comme visibilité devant un attribut ou une méthode dans
une classe, quelle est sa visibilité ? (package level)
o Même question pour une interface ?
 Qu’est-ce qu’une interface ? A quoi cela sert-il ?

 Qu’est-ce qu’une classe abstraite ?


o Une classe abstraite peut-elle avoir un constructeur ?
o Quelle est la différence avec une interface ? Quel est l’intérêt de l’une par
rapport à l’autre ?

 Comment accède-t-on aux méthodes / attributs d’une classe mère ?


o Est-ce qu’on peut appeler le constructeur de la classe mère n’importe où dans
son propre constructeur ?

 Comment fait-on pour qu’un attribut ne soit pas modifiable ?


o Est-ce qu’on peut utiliser ce modificateur (final) à d’autres endroits que sur
des attributs ? Qu’est-ce qu’il se passe alors ?
o Est-ce que le paramètre d’une méthode (de type int par exemple) est modifié
à la sortie de la méthode si la méthode le modifie ?

 Pouvez-vous nous citer les différents types de collections en java ? (List, Set, Map,
Queue)
o Donnez nous un exemple d’implémentation de List ? (ArrayList)
o Y a-t-il d’autres implémentations ? (LinkedList)
o Quelle est la différence entre les deux ? Quand utiliser l’une ou l’autre ?

 Qu’est ce que la sérialisation ? A quoi ça sert ?


o Comment sérialise-t-on un objet ? (implémenter Serializable)
Transférer un objet vers un flux de données pour stocker dans un disque dur ou
envoyer vers un réseau
o Il y a une autre interface qui permet de sérialiser un objet, laquelle ?
externalizable
o A quoi sert le mot clé transient ?

 A quoi sert le mot clé volatile ?


Pour stocker les valeurs de variables dans la mémoire et non dans le cache ,efficace lorsque
on utilise thread

 Comment met-on en place le multi threading ? (la classe hérite de Thread)


o Il y a une autre façon de le faire, laquelle ? (implémenter Runnable)
o Pourquoi cette solution est-elle moins utilisée ?
o Comment « sécuriser » un donnée partagée dans un environnement multi
threadé ?
o A quel niveau est positionné le lock quand on utilise « synchronized » ?
o Si on met un « synchronized » sur une méthode statique, où est placé le
lock ?

 Comment sont gérées les exceptions en java ?


o Quelles sont les différentes méthodes pour lever une exception ?
o Est-ce qu’on peut gérer les exceptions sans block try catch ?
o Quand on ne gère pas un type d’exception et qu’elle est levée, qu’est-ce qu’il
se passe ?

 Quels sont les 4 types d’encapsulation en Java ?


o Privée : attribut ou méthode accessible uniquement à l’intérieur de la classe
o Protégé : attribut ou méthode accessible au sein de la classe ainsi que dans
les classes filles et également aux classes du package
o Publique : attribut ou méthode accessible aussi bien à l’intérieur qu’à
l’extérieur de la classe
o Défaut : attribut ou méthode accessible par les classes présentes dans le
même package

 Citez-moi des design pattern que vous connaissez


o Pouvez-vous m’écrire une implémentation du pattern singleton ?
o Singleton est-il thread safe ? [Le design pattern est thread safe si l’on ajoute
le mot-clé synchronized à la méthode getInstance()]
o Quels sont les 3 types principaux de design patterns ? C'est quoi le but de
chaque groupe ? Donnez un exemple pour chacun.

Creational: Les modèles de conception créative fournissent une solution pour instancier un objet de la
meilleure façon possible pour des situations spécifiques.(Singleton,Factory).
Structural: Les modèles structurels offrent différentes manières de créer une structure de classe, par
exemple en utilisant l'héritage et la composition pour créer un grand objet à partir de petits objets.
(adapter,decorator)
Comportemental: Les modèles comportementaux fournissent une solution pour une meilleure
interaction entre les objets et la façon de fournir un couplage perdant et une flexibilité pour
s'étendre facilement. (strategy)

 Qu’est-ce que Spring ?

o Comment cela fonctionne-t-il ? A quoi ça sert ?


o Quel design pattern est utilisé par spring ? =} Définir Inversion of control et
dependency injection ([Link] Pourquoi
les utiliser ?
o IOC: Le conteneur Spring IoC est chargé d'instancier, de configurer et
d'assembler les objets
o Injection de dépendence: L'injection de dépendances est un dessing pattern
dont l’objectif d’injecter tous les objets avec ses dépendences.

 Qu’est-ce qu’Hibernate ?

o Comment cela fonctionne-t-il ? A quoi ça sert ?


o Qu’est-ce que le lazy-loading ?
o Quelles sont les différences entre les niveaux de cache ?
o 1ére niveau Session cache par utilisateur
o 2éme niveau Session Factory cache pour toutes les utilisateurs connecté à la
méme session factory
o Quel design pattern est utilisé dans ce cas ?

 Avec quoi lisez-vous un fichier xml en java ? (SAX ou DOM)


o Quelle est la différence entre ces parseurs ? Quel est le plus rapide

DOM utilise mémoire par contre SAX c’est un processeur basé sur le flux
1. SAX est plus rapide que DOM.
2. Avec SAX, nous pouvons accéder aux données mais nous ne pouvons pas modifier les
données. Avec Dom, nous pouvons modifier les données.
3. SAX est une analyse séquentielle, mais avec DOM, nous pouvons également revenir
en arrière.
o Si j’ai un gros fichier xml (en taille et profondeur de tags), quel parseur je choisis
pour le lire ? Pourquoi ? si je veux avoir la valeur d'une donne quel parseur je
l'utiliser ?

 Difference entre Hashtable (all methods synchronized, early collection, pretty slow),
Hashmap (nothing synchronized, fast), ConcurrentHashMap (synchronized for fast
throughoutput)

 Principe de rangement des éléments dans une hashMap

o Détails des fonctions hashcode et equals


o Pourquoi en ré-implémenter un demande la ré-implémentation de l'autre ?
o Comment est implémenté un hashmap? (Développement algorithmique)
o Liste chainée avec des listes des éléments pour chaque hashcode
o Pour le Hashmap (listes chaines pour les éléments du même hashcode, pointer
vers le tête de liste pour chaque hashcode - quel est l'avantage de ça ?

 Différences entre les mots clefs final, finally et finalize

o Final permet de signifier pour une variable que sa valeur ne pourra pas
être modifiée
o Finally est le bloc situé après un Try ou un Try/Catch dont les instructions seront
toujours exécutées
o Finalize correspond à la fonction qui est appelée par le GC avant la destruction
d’une instance de la mémoire

 Quelles sont les nouveautés apportées par java 8 ?

Solid:
Single responsibility principle: une classe, une fonction ou une méthode doit avoir une et une seule
responsabilité
Open/closed principle: application doit être fermée à la modification directe mais ouverte à l'extension
Liskov substitution principle: une instance de type T doit pouvoir être remplacée par une instance de type G,
tel que G sous-type de T, sans que cela ne modifie la cohérence du programme(polymorphisme)
Interface segregation principle: préférer plusieurs interfaces spécifiques pour chaque client plutôt qu'une
seule interface générale
Dependency inversion principle: il faut dépendre des abstractions, pas des implémentations.

Java 8

1- les streams : map, filter, collect, reduce


● map : permet d’appliquer une fonction sur tous les éléments du stream.
● filter : permet de filtrer le stream et retourner que les éléments qui respectent
le predicate
● collect : opération finale qui sert à repackager le stream dans certaines
structures de données en appliquant des logiques (concaténation, somme , ..)
● reduce : opération finale, qui permet d’appliquer une fonction pour combiner
les éléments afin d’obtenir un résultat

2- différence entre une opération intermédiaire et une opération finale:


Une opération intermédiaire sert à transformer le stream en un autre stream,
en appliquant des traitements ,mais ces traitements seront invoqués que lors de
l’appel d’une opération finale
Opérations intermédiaires Opérations finaux

filter(Predicate<T>) forEach(Consumer<T>)
map(Function<T>) forEachOrdered
flatmap(Function<T>) toArray
sorted(Comparator<T>) reduce
peek(Consumer<T>) collect
distinct() min
limit(long n) max
skip(long n) count
anyMatch
allMatch
noneMatch
findFirst
findAny

3- Interfaces fonctionnelles:
c’est une interface disposant d’une seule méthode abstraite, qui peut être annoté par
@FunctionnalInterface, pour garantir qu’elle contiendra toujours une seule méthode
abstraite, si non on aura un problème de compilation.
Exemple : Runnable, Comparator

1- les expressions lambda


Une expression lambda est utilisée pour représenter une interface fonctionnelle sous la
forme d'une expression de la forme (arguments -> corps)
ils sont apparus avec java 8, avant il faut utiliser les classes anonymes.

Date
Immuabilité et thread safety
Duration et Period
ZoneDateTime

Spring

Spring est un framework open source pour construire une application java, il est considéré
comme un conteneur léger.
il basé sur 3 concepts:
Ioc (inversion de contrôle) : la recherche et l’injection des dépendances (via constructeur/ setters)
AOP (Programmation orienté aspect)
couche d’abstraction : permet d’intégrer d’autres frameworks et bibliothèques

Spring boot : il facilite encore le dev des applis, grâce à


L’autoconfiguration
Les starter
La gestion des versions des dépendances maven
Serveur d’application(tomcat) embarqué
@RestController : @Controller + @ResponseBody

Quelque annotations :
@RequestMapping : les points d’entrées
@GetMapping = @RequestMapping(method=[Link])
@Autowired
@Controller/@Repository/@Service

les api rest, comment concevoir une bonne api?


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

Java
1- Java 8 Quelles sont les nouveautés ?
Stream, interface fonctionnelle, lambda expression, @Optional, appel des méthodes
par référence, Api Date
C'est quoi une lambda Expression ? Et est-ce-que nous avions ce concept avant la
version 8, si OUI lequel ? Et quelle est la différence ?
Une expression lambda est utilisée pour représenter une interface fonctionnelle sous la
forme d'une expression de la forme (arguments -> corps)
La manière n’existe pas avant java 8, mais le concept existe en utilisant les
classes anonymes.
La différence: avec les expressions lambda le code est plus lisible et
maintenable.

Classe Anonyme:

Expression lambda:
1- Citer quelques opérateurs des Stream ? Et expliquer leur fonctionnement ? Lambda
et stream c'est quelle paradigme de programmation ?
Opérations finaux comme : foreach, collect, reduce, … Opérations
intermédiaires comme : map, filter, peek, sorted, … Paradigme
Lambda et stream : Programmation fonctionnelle
Les collections ? Un exemple de collection ?
List : ArrayList, Vector(contexte multithreading), LinkedList(liste chaînée)
Set (liste sans doublon) : HashSet
2- Les map ? Une implémentation ? L'impact du hashCode et equals sur une HashMap
C’est une collection qui associe une valeur à une clé , si on ne redéfinit pas equals et
hashcode, la comparaison des objets sera faite sur leurs références, dans ce cas
deux objets avec les mêmes valeurs des attributes ne seront pas considéré égaux.
Hibernate c'est quoi ? Quelque annotations ? Des stratégies de génération d'ID ?
Des problèmes rencontrés avec Hibernate, si oui expliquer ?
Hibernate est un ORM, framework de persistance d'objets java dans une base
données. @Table, @Entity, @Column, @Id
AUTO : hibernate qui s’occupe de la génération en utilisant la table
hibernate_sequence
IDENTITY : la base qui s’occupe de la génération en faisant un auto increment
TABLE : la génération est faite en utilisant une table dédiée, qui stocke les noms et
les valeurs des séquences, il faut utiliser avec l’annotation @TableGenerator
SEQUENCE : la génération sera faite en utilisant une séquence définie dans le
SGBD, il faut utiliser aussi @SequenceGenerator

problème de la mise à jour des entités une par une, si on veut faire une mise à jour
de tous les ligne d’une table, hibernate va exécuter n requete update (n : nombre de lignes à
mettre à jour) , dans ce cas il vaut mieux faire les update en utilisant SQL natif ou bien une
requête JPQL

Spring c'est quoi ? Spring boot ? Quelles version de Spring Boot ? Quelle
nouveautés dans la version 2 ? Programmation réactive, une idée ?
Spring est un framework open source pour construire une application java, il est
considéré comme un conteneur léger.
spring boot : il facilite encore le dev des applis, grâce à l’autoconfiguration, les
starters, la gestion des versions des dépendances maven, serveur d’application(tomcat)
embarqué.
version 2 : ne supporte plus java 7, plus sécurisé, spring actuator a été amélioré
la programmation réactive gère les flux de données asynchrones, c’est le sujet des
applications non bloquantes qui sont asynchrones et nécessitent un petit nombre de threads

Webservice REST ? Comment as tu l'habitude de désigner des WS ? Comment gère


tu la sécurité ? La documentation ?
web service rest : des appels distants vers une api, il est basé sur le protocole HTTP.
pour concevoir une bonne api,il faut suivre les bonne pratique de création des ws, bien
respecter les règles de nommage, renvoyer les status HTTP, …
Spring security: j’ai travaillé sur l’authentification et la gestion des rôles
Documentation: J’utilise Swagger pour la documentation des WS

Java 11, une idée ? Si oui, quelques nouveautés ?


var( utilisation de variables non typés) sont apparus à partir de java 10, mais à partir
de java 11 on peut utiliser ‘var’ dans les expressions lambda,
[Link]
String : .lines(), .repeat()
Angular

1- Angular c'est quoi ? Ce Qu'il apporte ?


C’est un framework de dev frontend, développé et suivi par Google. il facilite dev des
asp (single page application)
TypeScript c'est quoi ?
C’est un langage orienté objet, qui sera transpilé en js
Notion de module, component ?
un module : regroupe un ensemble de fonctionnalités, il contient des component,
chaque component est responsable sur une seule fonctionnalité
Directive ? Cité des directive structurel ? (TrackBy dans NgFor cela sert à quoi ?)
permet d'interagir avec des éléments DOM d’une page
structurels : elle change le DOM, attribut : change les propriétés d’un élément
Trackby: améliorer la performance, en agissant sur le seul élément changé
NgFor: permet de boucler sur un tableau pour afficher ses éléments
*nIf,*ngFor
Attribut: ngclass,ngStyle
Que fait-tu lors du déploiement d'une application en PROD ?
enableProdMode ng
build
Différence en le AOT et JIT compilation ?
Des compilateurs angular, AOT utilisé en prod (le code est déja compilé auparavant),
jit : utilisé durant les devs,
Le routeur ?
Permet de naviguer entre les différentes pages de l’appli.
on trouve sur angular un routing module dans chaque module ou on configure l’ensemble
des routes pour les diff vues
Le binding bidirectionnel ? Et entre composant enfant et parent ? (Notion de
Input/Output)
two way binding: [(ngModel)] utilsé par les forms TemplateDrivenForm
changer le valeur dans le .ts si le champ dans le .html a été changé et vise versa

String Interpolation{{}}
EventBinding
PropertyBinding

Docker est un outil qui nous permet d’empaqueter une application et ses dépendence dans un
conteneur isolé.
Client,Host(daemon,images,conteneur),registry(docker hub)

Vous aimerez peut-être aussi