Assignment Help logo
Chat en direct

Loading...

Score %0 (0 correct0 incorrect88 unanswered)

Q1. Comment les filtres sont-ils utilisés dans Spring Web?

  • Les filtres sont appelés avant qu'une requête n'atteigne DispatcherServlet. Ils permettent un traitement en chaîne de style interception des requêtes web pour la sécurité, les délais d'attente et d'autres fins.
  • Les filtres sont utilisés avec un algorithme de somme de contrôle qui filtrera les octets invalides d'un corps de requête en flux d'octets et permettra le traitement des requêtes HTTP à partir de DispatcherRequestServlet.
  • Les filtres sont utilisés avec un algorithme de somme de contrôle qui filtrera les octets invalides d'un flux d'octets d'un téléchargement multipartite et permettra le traitement en chaîne des requêtes WebDispatcherServlet.
  • Les filtres sont utilisés pour valider les paramètres de requête à partir du corps de la requête en flux d'octets et permettre le traitement des requêtes à partir de DispatcherRequestServlet.

HandlerInterceptors vs. Filters in Spring MVC. De plus, il n'existe pas de DispatcherRequestServlet dans Spring.

Q2. Comment une ressource est-elle définie dans le contexte d'un service REST?

  • Une ressource est la chaîne de caractères réelle qui compose une URI à laquelle on accède sur un service web RESTful.
  • C'est un concept abstrait qui représente un objet typé, des données, des relations et un ensemble de méthodes qui opèrent dessus et qui sont accessibles via une URI.
  • Un service REST a un pool de ressources composé d'allocations de mémoire qui permettent le traitement d'une requête.
  • Une ressource pour un service REST est une allocation explicite d'un thread ou de cycles CPU pour permettre le traitement d'une requête.

Rest Service in Spring

Q3. Laquelle de ces annotations Advice est valide?

  • @AfterError
  • @AfterReturning
  • @AfterException
  • @AfterExecution

Annotation de type Advice Spring

Q4. Que fait un ViewResolver?

  • Il prend en charge l'internationalisation des applications web en détectant la langue de l'utilisateur.
  • Il génère une vue en associant un nom de vue logique renvoyé par une méthode de contrôleur à une technologie de vue.
  • Il crée une vue unique déterminée par le type de navigateur de l'utilisateur, prenant en charge la compatibilité entre navigateurs.
  • Il associe des paramètres personnalisés à des vues SQL dans la base de données, ce qui permet de créer du contenu dynamique dans la réponse.

Résolution des vues dans Spring MVC

Q5. Comment les référentiels Spring Data sont-ils implémentés par Spring à l'exécution?

  • Spring génère automatiquement du code pour vous en fonction de votre configuration YAML, qui définit une chaîne MethodInterceptor qui intercepte les appels à l'instance et calcule SQL à la volée.
  • Une instance de proxy JDK est créée, qui prend en charge l'interface du référentiel, et un MethodInterceptor intercepte les appels à l'instance et les route selon les besoins.
  • Le proxy JDK de Spring crée un processus d'exécution distinct qui agit comme intermédiaire entre la base de données et le serveur Web, et intercepte les appels à l'instance et gère les requêtes.
  • Spring génère automatiquement du code pour vous en fonction de vos fichiers de configuration XML qui définissent une usine SpringMethodAutoGeneration qui intercepte les appels à l'instance et crée des méthodes dynamiques qui calculent SQL à la volée.

Expliqué QnA

Q6. Qu'est-ce que SpEL et comment est-il utilisé dans Spring?

  • SpEL (Spring Expression Language) s'exécute dans la JVM et peut agir comme un remplacement direct pour Groovy ou d'autres langages.
  • SpEL (Spring Expression Language) prend en charge les opérateurs booléens et relationnels ainsi que les expressions régulières, et est utilisé pour interroger un graphe d'objets à l'exécution.
  • SpEL (Spring Expression Language) vous permet de construire, configurer et exécuter des tâches telles que la construction d'artefacts et le téléchargement de dépendances d'objets.
  • SpEL (Spring Expression Language) transpile nativement un langage JVM en un autre, permettant une plus grande flexibilité.

Documentation sur l'expression Spring

Q7. Le processus de liaison des aspects à d'autres objets pour créer un objet conseillé est appelé

  • chaînage dynamique
  • bandage
  • tissage
  • entrelacement

Q8. Comment les proxies dynamiques JDK et les proxies CGLIB sont-ils utilisés dans Spring?

  • Le proxy dynamique JDK peut seulement être un proxy d'interface, donc il est utilisé si la cible implémente au moins une interface. Un proxy CGLIB peut créer un proxy par sous-classement et est utilisé si la cible n'implémente pas d'interface.
  • Seuls les proxies dynamiques JDK sont utilisés dans le cycle de vie des beans Spring. Les proxies CGLIB sont utilisés uniquement pour l'intégration avec d'autres frameworks.
  • Seuls les proxies CGLIB sont utilisés dans le cycle de vie des beans Spring. Les proxies dynamiques JDK sont utilisés uniquement pour l'intégration avec d'autres frameworks.
  • Le proxy dynamique JDK ne peut être utilisé qu'avec une classe abstraite étendue par une cible. Un proxy CGLIB peut créer un proxy par entrelacement de bytecode et est utilisé si la cible n'étend pas une classe abstraite.

Q9. Laquelle de ces méthodes n'est pas une méthode valide sur l'interface JoinPoint?

  • getArgs()
  • getExceptions()
  • getSignature()
  • getTarget()

Q10. Dans quel ordre la méthode annot

ée avec @PostConstruct, la méthode de paramètre init-method sur les beans et la méthode afterPropertiesSet() s'exécutent-elles?

  • 1. afterPropertiesSet() 2. init-method 3. @PostConstruct
  • 1. @PostConstruct 2. afterPropertiesSet() 3. init-method
  • 1. init-method 2. afterPropertiesSet() 3. @PostConstruct
  • Vous ne pouvez pas utiliser ces méthodes ensemble - vous devez en choisir une seule.

Q11. Quelle est la fonction de l'annotation @Transactional au niveau de la classe?

  • C'est un attribut de transaction configuré par le fichier de configuration spring.security.transactions.xml qui utilise l'implémentation de transaction et le code de validation de Spring.
  • C'est une transaction qui doit être activement validée par le bytecode d'une transaction en utilisant la classe TransactionBytecodeValidator de Spring. Le comportement de transaction par défaut annule le validation exceptionnelle mais valide correctement.
  • Il crée un proxy qui implémente les mêmes interfaces que la classe annotée, permettant à Spring d'injecter des comportements avant, après ou autour des appels de méthode dans l'objet qui est proxifié.
  • C'est une transaction qui doit être activement validée par la classe TransactionValidator de Spring en utilisant le code de validation de transaction de Spring. Le comportement de transaction par défaut annule le validation exceptionnelle.

Q12. Quel est un exemple valide de la sortie de ce code (en ignorant les déclarations de journalisation) ?

@SpringBootApplication
public class App {
     public static void main(String args[]) {
          SpringApplication.run(App.class, args);
          System.out.println("démarrage");
     }
}

public class Print implements InitializingBean {
     @Override
     public void afterPropertiesSet() throws Exception {
          System.out.println("init");
     }
}
  • Rien ne sera imprimé
  • démarrage init
  • init
  • démarrage

Explication : La méthode SpringApplication.run renvoie le contexte créé, donc la méthode main continuera à s'exécuter et à imprimer "démarrage". La classe Print n'est pas un bean Spring, car elle n'est pas annotée avec @Component, donc elle ne sera pas initialisée.

Q13. Quelle instruction println supprimeriez-vous pour éviter que ce code ne lance une exception de pointeur nul?

@Component
public class Test implements InitializingBean {
     @Autowired
     ApplicationContext context;
     @Autowired
     static SimpleDateFormat formatter;

     @Override
     public void afterPropertiesSet() throws Exception {
          System.out.println(context.containsBean("formatter") + " ");
          System.out.println(context.getBean("formatter").getClass());
          System.out.println(formatter.getClass());
          System.out.println(context.getClass());
     }
}

@Configuration
class TestConfig {
     @Bean
     public SimpleDateFormat formatter() {
          return new SimpleDateFormat();
     }
}
  • formatter.getClass()
  • context.getClass()
  • context.getBean("formatter").getClass()
  • context.containsBean("formatter")

Q14. Quelle est l'interface racine pour accéder à un conteneur de bean Spring?

  • SpringInitContainer
  • ResourceLoader
  • ApplicationEventPublisher
  • BeanFactory

Q15. Quelle annotation peut être utilisée dans Spring Security pour appliquer une sécurité au niveau de la méthode?

  • @Secured
  • @RequiresRole
  • @RestrictedTo
  • @SecurePath

Q16. Quel est le résultat de l'appel de la méthode de contrôleur map en utilisant la requête HTTP GET localhost:8080/map?foo=foo&bar=bar ?

@RestController
public class SampleController {

     @RequestMapping("/map")
     public String map(@RequestParam("bar") String foo, @RequestParam("foo") String bar) {
          return bar + foo;
     }
}
  • Une exception InvalidParameterNameMappingException est levée à l'exécution.
  • barfoo
  • foobar
  • Un code d'état 400 Bad Request est retourné.

Q17. Quel est le but de l'annotation @Lazy et pourquoi l'utiliseriez-vous?

  • Elle empêche un bean d'être créé et injecté jusqu'à ce que vous exécutiez une commande CLI spécifique. Cela réduit la complexité de l'application.
  • Elle peut être appliquée à un bean pour que le bean ne soit pas persisté dans la base de données. Cela réduit le nombre d'opérations de base de données.
  • Elle peut être appliquée à un bean pour que le bean ne soit pas créé et injecté tant qu'il n'est pas nécessaire. Cela peut contribuer à accélérer le temps de démarrage de votre application.
  • Elle empêche un bean d'être créé et injecté tant qu'il ne reçoit pas de requête HTTP à un point d'accrochage de rappel. Cela réduit l'empreinte disque.

Q18. Qu'est-ce que l'injection de dépendance?

  • une méthode par laquelle les objets définissent les dépendances dont ils ont besoin sous forme d'abstractions qui permettent au framework de les instancier et de les configurer dans un emplacement central à l'exécution.
  • un paradigme où le code dépendant est injecté dans le bytecode d'une application Java sur un serveur distant.
  • une méthode d'injection de dépendances distantes dans un fichier JAR pré-packagé à partir du système de fichiers.
  • une méthode d'injection de dépendances distantes dans un fichier WAR pré-packagé à partir du système de fichiers.

Q19. Qu'est-ce qu'un service web RESTful?

  • Le transfert de statut réactif de l'entreprise est un service web comprenant un ensemble de directives et de contraintes techniques pour les services web qui surveillent et alertent un ensemble de ressources stratégiques.
  • Representational State Transfer est un style architectural pour la création de services web qui comprend une architecture client-serveur, la non-mémorisation de l'état, la mise en cache, un système en couches et une interface uniforme.
  • Le transfert d'état énuméré redondant est un service web qui fournit une redondance en cas de défaillance et définit les contraintes techniques pour les services web qui ont accès aux ressources.
  • Le transfert de statut réactif de l'entreprise est un service web comprenant un ensemble de directives et de contraintes techniques pour les

services web qui ont accès aux ressources et qui sont asynchrones par nature.

Q20. Que se passe-t-il lorsqu'une classe est annotée avec l'annotation @Controller?

  • Une définition de bean de contrôleur est définie dans le WebApplicationContext de la servlet. La classe est marquée comme un composant web, et vous pouvez mapper les requêtes aux méthodes du contrôleur.
  • Une définition de bean de contrôleur est définie dans le contexte Web, et la servlet Web est marquée comme un composant qui lit les requêtes de contrôleur mappées à partir d'un fichier de configuration XML.
  • Une définition de bean de contrôleur est définie dans le contexte Tomcat, et la servlet de contrôleur est marquée comme un composant qui lit les requêtes de contrôleur mappées à partir d'un fichier de configuration YAML.
  • Une définition de bean de contrôleur est définie dans le contexte de la servlet, et la servlet de contrôleur est marquée comme un composant qui lit les requêtes de contrôleur mappées à partir d'un fichier de configuration XML.

Q21. Quelle propriété peut être utilisée pour changer le port d'une application Spring?

  • Port
  • spring.port
  • spring.settings.port
  • server.port

Q22. Quel est le but de l'annotation @ResponseBody?

  • valider le tableau de caractères contenu dans une réponse pour s'assurer qu'il s'agit d'un encodage de caractères valide
  • générer un flux de bytes local à partir du corps d'une réponse qui permet à une requête d'être analysée pour des risques de sécurité
  • indiquer si la valeur renvoyée par une méthode de gestionnaire doit être liée au corps de réponse web dans les environnements servlet
  • garantir un flux de bytes ThreadLocal qui permet à une réponse d'être encodée pour être lue directement dans un flux de socket

Q23. Comment les frameworks de simulation tels que Mockito sont-ils utilisés avec Spring?

  • Mockito va créer un faux service web hébergé dans un conteneur Docker qui peut répondre aux requêtes HTTP pour simuler des API tierces.
  • Mockito peut utiliser des annotations ou des méthodes de fabrique pour créer des objets simulés qui peuvent être injectés dans des tests à la place des dépendances. Le comportement des faux peut être configuré explicitement.
  • Mockito va créer des utilisateurs simulés pour effectuer des requêtes répétées contre votre application Spring afin de tester la capacité de votre application à supporter la charge.
  • Mockito va créer un faux service web hébergé dans un conteneur Docker qui peut répondre à des appels RPC pour simuler des ressources distantes.

Q24. Quel est le nom de la servlet centrale qui dispatche les requêtes aux contrôleurs?

  • DispatchingDelegatorServlet
  • DispatcherServlet
  • Router
  • FrontControllerServlet

Q25. Quel est le but du conteneur IoC (Inversion of Control) de Spring?

  • Il instancie et configure des objets, fournis à l'exécution, aux classes qui les définissent comme une dépendance.
  • Il permet au code frontal de gérer les objets ResponseBody fournis par une API REST de back-end.
  • Il permet à une base de données de définir des objets métier via un schéma partagé à la compilation.
  • Il facilite la configuration d'une application locale par un serveur distant.

Q26. Qu'est-ce que la recherche de composants?

  • une fonctionnalité qui analyse les packages pour trouver des classes avec des annotations spécifiques et, lorsqu'elles sont trouvées, crée leurs définitions de bean dans le conteneur IoC
  • un paradigme où le bytecode est activement analysé pour identifier des optimisations supplémentaires à injecter dans les composants du contexte de l'application
  • une méthode par laquelle les référentiels cloud sont analysés pour identifier des composants à injecter dans un conteneur IoC
  • une méthode par laquelle des données binaires dans une base de données sont recherchées pour identifier des composants à injecter dans le conteneur IoC

Q27. Que fait @SpringBootApplication?

  • Cette annotation prend la chaîne littérale passée en paramètre dans l'annotation et génère automatiquement tout le code pour votre application selon le paramètre de modèle passé.
  • Cette annotation composée applique les annotations @Bootable, @Springify et @StandardConfig qui lancent un outil CLI après le lancement du fichier WAR Spring Boot qui vous guidera à travers une série de invites pour configurer votre application.
  • Cette annotation analyse le fichier spring-boot-config-construction.yaml fourni dans votre répertoire racine et génère automatiquement tout le code pour votre application tel que défini dans le fichier YAML.

Q28. Comment Spring Data facilite-t-il les requêtes contre une source de données?

  • Les requêtes sont explicitement codées dans les implémentations de référentiels à l'aide de Spring Data CriteriaBuilder.
  • Les métadonnées de requête sont stockées dans la source de données sous-jacente et récupérées à l'exécution par référentiel.
  • Les requêtes sont dérivées des signatures des méthodes sur un référentiel Spring Data qui contiennent des mots-clés dans leur nom pour construire la logique de requête.
  • Un fichier spring-data-queries.xml contient des requêtes dans des balises d'entité qui spécifient la logique de requête pour chaque référentiel.

Q29. Comment Spring génère-t-il les noms de bean pour les classes annotées avec @Component qui ne spécifient pas de nom?

  • Il utilise le nom court de la classe avec la première lettre en minuscule.
  • Il utilise le nom court de la classe.
  • Il utilise le nom court de la classe en majuscules.
  • Il utilise le nom canonique de la classe en minuscules.

Q30. Qu'est-ce que le proxy de filtre déléguant?

  • C'est le proxy de chaîne de filtre servlet qui gère toutes les requêtes à la route définie dans spring.security.xml. Tous les appels au proxy de filtre sont redirigés vers ErrorDispatcherServlet.
  • C'est la chaîne de filtres servlet qui gère les requêtes à la route défin

ie dans spring.web.servlet.filter.xml. Tous les appels au proxy de filtre sont redirigés vers une autre instance de servlet web.

  • C'est une chaîne de filtres servlet qui appelle un bean de filtre par son nom. Spring est capable de gérer les requêtes avec un proxy de filtre déléguant qui contrôle tous les appels entrants.
  • C'est un filtre qui délègue l'exécution à un autre filtre en détectant les appels entrants de l'interface utilisateur. Tous les appels sortants sont envoyés à une API tierce pour être consommés.

Q31. Quelle valeur fournit Spring Boot Actuator?

  • Il aide à surveiller et gérer une application Spring Boot en fournissant des points de terminaison tels que des vérifications d'état de santé, une journalisation des actions, la collecte de métriques et la traçabilité HTTP.
  • Il fournit des fonctionnalités prêtes à l'emploi qui s'intègrent à des plateformes de métriques tierces pour ajuster automatiquement le nombre de threads dans les pools de threads.
  • C'est une interface en ligne de commande (CLI) qui vous permet de modifier la configuration d'une application Spring Boot en cours d'exécution sans nécessiter de redémarrage ou d'arrêt.
  • Il fournit des fonctionnalités prêtes à l'emploi qui s'intègrent à des plateformes de métriques tierces pour ajuster automatiquement le nombre d'instances de l'application Spring Boot.

Spring Boot Actuator

Q32. Quel est le but de l'annotation @ContextConfiguration dans un test JUnit?

  • Elle inspecte la machine locale et provisionne automatiquement des ressources en fonction de certains fichiers de configuration contextuels.
  • Elle génère automatiquement des commentaires pour les classes annotées sur les dépendances autowired pour fournir un contexte supplémentaire sur les dépendances.
  • Elle définit des métadonnées au niveau de la classe pour déterminer comment charger ou configurer un ApplicationContext dans les tests d'intégration Spring.
  • Elle génère automatiquement des JavaDocs pour les classes annotées pour fournir un contexte supplémentaire sur le but de la classe.

@ContextConfiguration Example in Spring Test

Q33. En quoi l'authentification et l'autorisation diffèrent-elles?

  • L'authentification consiste à accorder l'accès à des ressources et des fonctions spécifiques en fonction des paramètres de configuration. L'autorisation consiste à inspecter les informations d'identification d'un utilisateur pour garantir qu'il ne se fait pas passer pour un autre utilisateur.
  • L'authentification consiste à vérifier que certaines ressources et fonctions sont effectivement valides. L'autorisation consiste à vérifier si les informations d'identification d'un utilisateur ont expiré.
  • L'authentification consiste à vérifier que certaines ressources et fonctions existent réellement dans la base de données. L'autorisation consiste à vérifier si les informations d'identification d'un utilisateur sont valides.
  • L'authentification consiste à valider que les utilisateurs sont bien ceux qu'ils prétendent être. L'autorisation consiste à accorder l'accès à des ressources et des fonctions spécifiques.

Q34. Quel est le but de l'annotation @RequestBody?

  • Créer un flux de bytes ThreadLocal qui permet de coder une requête pour une lecture directe dans une base de données.
  • Générer automatiquement un flux de bytes ThreadLocal à partir du corps d'une requête qui permet à une requête d'être scannée pour des risques de sécurité.
  • Indiquer si un paramètre de méthode de gestionnaire annoté doit être lié au corps de la requête web, qui est converti par un HttpMessageConverter.
  • Valider automatiquement les caractères contenus dans une requête pour s'assurer qu'ils sont encodés en caractères valides.

Q35. Qu'est-ce que DispatcherServlet et quelle est sa fonction?

  • Le processus Daemon DispatcherServlet attribue un processus de conteneur de servlet web distinct à chaque requête HTTP qui arrive sur le serveur web.
  • C'est un servlet qui dispatche les requêtes HTTP vers des gestionnaires/contrôleurs enregistrés pour traitement.
  • L'API DispatcherServlet attribue un nœud de servlet web distinct à chaque requête HTTP supplémentaire qui arrive sur le serveur web.
  • C'est un servlet qui dispatche un ensemble de processus daemon en arrière-plan qui allouent de la mémoire et des cycles CPU à chaque requête.

Q36. Qu'est-ce que l'auto-configuration de Spring Boot?

  • Elle déclenche une revue automatisée locale des fichiers de configuration tels que web.xml et détecte d'éventuels problèmes de sécurité ou résout automatiquement les dépendances circulaires.
  • Elle déclenche une revue automatisée de la configuration par un agent basé sur le web qui examine votre fichier web.xml existant et détecte d'éventuels problèmes de sécurité.
  • C'est une méthode opinionnée et intelligente pour introspecter une application afin de configurer des beans qui sont susceptibles d'être nécessaires. Cette configuration peut être remplacée au fil du temps par une configuration manuelle.
  • Elle fournit une fonctionnalité de plug-in lors de l'édition de votre fichier web.xml et d'autres fichiers de configuration qui autocomplètent les dépendances courantes lors de la saisie.

Q37. Quelles sont les étapes valides à suivre pour activer JPA dans Spring Boot?

  • Ajouter une annotation @EnableJpaRepositories à votre classe de configuration et créer un référentiel Spring Data.
  • Ajouter une annotation @EnableJpaEntities à votre classe de configuration, créer un fichier de configuration YAML Spring Data, et mettre à jour manuellement les fichiers de configuration XML Spring pour définir vos emplacements de référentiels.
  • Ajouter une annotation @EnableDbFunctionality à votre classe de configuration, créer un fichier de configuration XML Spring Data, et mettre à jour manuellement le fichier des factories Spring pour définir vos référentiels.
  • Ajouter une annotation @InitJpaEntities à votre classe de configuration, créer un fichier de configuration de propriétés Spring Data, et mettre à jour manuellement les paramètres de démarrage de Spring pour définir vos emplacements de référentiels.

Q38. Qu'est-ce qu'une transaction dans le contexte de Spring Data?

  • Un changement de schéma contrôlé par version qui est appliqué à une base de données.
  • Une séquence d'actions représentant une seule unité de travail gérée comme une seule opération pouvant être validée ou annulée.
  • Un message encodé et une réponse entre divers fragments d'une base de données.
  • Un échange ou une interaction entre divers nœuds de travailleurs dans un environnement multithread.

Q39. La modularisation d'une préoccupation qui traverse plusieurs classes

est connue sous le nom de ____.

  • multiclass
  • aspect
  • crosscut
  • sidecut

Q40. Comment injectez-vous une dépendance dans un bean Spring?

  • Utilisez l'injection de champ.
  • Annoter une méthode Setter avec l'annotation @Autowired.
  • Spécifier des paramètres dans le constructeur avec une annotation @Autowired optionnelle.
  • Toutes les réponses ci-dessus.

Q41. Considérez le fichier de propriétés application.properties. Comment chargeriez-vous la propriété my.property?

my.property=Test
  • A
@Prop("${my.property}")
private String val;
  • B
@GetVal("my.property")
private String val;
  • C
@GetProperty("${my.property}")
private String val;
  • D
@Value("${my.property}")
private String val;

Q42. Qu'est-ce qu'un bean dans le contexte de Spring?

  • Une dépendance gérée définie par des métadonnées de configuration qui peut être injectée dans des classes descendantes.
  • Une entité nommée, binaire et agnostique qui peut être traduite entre différents formats de données.
  • Une charge utile transférable entre différents services dans une architecture orientée services (SOA).
  • Une pièce de données discrète encodée dans un format binaire pour persister dans un système de fichiers.

Q43. Quelle propriété est prioritaire pour Spring?

  • Les propriétés d'application situées dans un fichier application.properties en dehors du fichier application.jar.
  • Les annotations @PropertySource sur les classes de configuration.
  • Les fichiers d'application spécifiques au profil application-{profil}.properties.
  • Les propriétés d'application situées dans un fichier application.properties à l'intérieur du fichier application.jar.

Q44. Dans le cycle de vie des beans Spring illustré, quelle devrait être la troisième étape du processus?

diagram

  • Persist bean definitions into a database
  • Instance bean objects
  • De-normalize bean definition
  • Use reflection to inject bean objects into the servlet container

Q45. Quelle propriété de Spring Boot est utilisée pour définir le niveau de journalisation pour l'ensemble de l'application dans le fichier application.properties?

  • logging.settings
  • log.level
  • root.logger.level
  • logging.level.root

Logging in Spring Boot

Q46. Comment un bean Spring est-il identifié de manière unique?

  • Un UUID généré automatiquement
  • Un nom de chaîne unique
  • Un ID entier incrémenté automatiquement
  • Un ID dérivé de son emplacement en mémoire

Q47. Quelle est la différence entre une distribution JAR et WAR dans Spring Boot?

  • Spring Boot peut créer un fichier WAR auto-exécutable qui s'exécute sans avoir besoin d'un conteneur de servlet. Un fichier JAR doit être déployé dans un conteneur web existant tel que Tomcat avec des fichiers séparés pour les dépendances.
  • Spring Boot peut créer un fichier JAR contenant du bytecode qui interagit directement avec le système d'exploitation sans avoir besoin d'un conteneur de servlet. Un fichier WAR doit être déployé dans un conteneur web existant tel que Tomcat avec des fichiers séparés pour les dépendances.
  • Le fichier JAR Spring Boot sera déployé sur un conteneur Servlet tel que Tomcat sur un serveur web local en cours d'exécution. Le fichier WAR sera déployé sur un conteneur servlet basé sur le cloud.
  • Spring Boot peut créer un fichier JAR auto-exécutable contenant toutes les dépendances et un conteneur Servlet intégré. Un fichier WAR doit être déployé dans un conteneur web existant tel que Tomcat.

Q48. En quoi le paramètre de propagation de transaction impacte-t-il le comportement des transactions?

  • Il garantit que les transactions validées dans la base de données sont propagées à tous les fragments d'une base de données en grappe.
  • Il garantit qu'une portée de transaction logique est créée pour chaque méthode qui détermine l'état rollback-only, avec une portée de transaction externe indépendante de la portée de transaction interne.
  • Il garantit que les transactions soumises au cluster de base de données sont propagées à tous les nœuds d'un nuage de base de données en grappe.
  • Aucune des réponses ci-dessus.

Q49. Que se passe-t-il lorsque ce code est exécuté en tant que @SpringBootApplication?

@Component
public class Test implements InitializingBean {
     @Autowired
     ApplicationContext context;

     private TestService service;
     public void setService(TestService service) {
          this.service = service;
     }

     @Override
     public void afterPropertiesSet() throws Exception {
          System.out.print(context.containsBean("testService") + " ");
          System.out.println(service.getClass());
     }
}
@Service
class TestService {}
  • Une trace de pile NullPointerException
  • true null
  • true package.TestService
  • false package.TestService

Explication : @Autowired est manquant sur private TestService service ou sur le setter.

Q50. Pour enregistrer un filtre personnalisé qui s'applique uniquement à certains modèles d'URL, vous devez supprimer l'annotation _ de la classe de filtre et enregistrer un @Bean de type _ dans @Configuration Spring.

  • @RequestMapping; WebRequest
  • @Controller; URLFilter
  • @WebFilter; ServletContextInitializer
  • @Component; FilterRegistrationBean

Q51. Quel est le terme correct pour chaque définition ci-dessous?

  1. Un prédicat qui correspond à des points de jonction.
  2. Un point pendant l'exécution d'un programme, tel que l'exécution d'une méthode ou la gestion d'une exception.
  3. Une action entreprise par un aspect à un point de jonction particulier.
  • ­
    1. Pointcut
    2. Join point
    3. Advice
    

Q52. Comment les mots de passe doivent-ils être stockés?

  • Les mots de passe doivent être hachés à l'aide d'une fonction un

idirectionnelle adaptative telle que bcrypt.

  • Les mots de passe peuvent être stockés dans un format codé en BASE64 s'ils sont stockés dans une base de données privée.
  • Les mots de passe doivent être salés et hachés à l'aide de l'algorithme MD5.
  • Les mots de passe doivent être hachés à l'aide de l'algorithme SHA-1, puis salés pour se défendre contre les attaques par tables arc-en-ciel.

Explication : sha-1 n'est plus considéré comme sûr : https://en.wikipedia.org/wiki/SHA-1#Attacks . Avec bcrypt, vous pouvez sélectionner des hachages plus complexes https://en.wikipedia.org/wiki/Bcrypt

Q53. À quelles méthodes cette expression de Pointcut fait-elle référence?

@target(com.linkedin.annotation.Loggable)

  • Tout point de jonction où l'objet cible a une annotation @Loggable
  • Tout point de jonction où la méthode en cours d'exécution a une annotation @Loggable
  • Toute méthode qui implémente Loggable
  • Toute méthode qui étend Loggable

Difference between @target and @within (Spring AOP)

Q54. Que se passe-t-il lorsque ce code est exécuté en tant que @SpringBootApplication?

@Component
public class Test implements InitializingBean {
     @Autowired
     ApplicationContext context;

     @Autowired
     SimpleDateFormat formatter;

     @Override
     public void afterPropertiesSet() throws Exception {
          System.out.println(context.containsBean("formatter"));
          System.out.println(formatter.getClass());
     }
}
@Configuration
class TestConfig2 {
    @Bean
    public final SimpleDateFormat formatter() {
        return new SimpleDateFormat();
    }
}
  • true <br />   class java.text.SimpleDateFormat <br />
  • true <br />   SimpleDateFormat <br />
  • une trace de pile BeanDefinitionParsingException
  • une trace de pile BeanDefinitionParsingException

Explication : La méthode @Bean dans @Configuration doit être surchargeable. Supprimez le mot-clé final pour corriger.

Q55. Quel est le but d'un contexte d'application web?

  • Configure une application web qui peut être supprimée et recréée pendant l'exécution via un échange à chaud. Il ajoute une méthode recreateContext() et définit un WebDaemon racine qui doit être lié dans le processus de démarrage.
  • Configure une application Spring qui peut être modifiée à la volée pendant l'exécution via le retraitement de bytecode. Il ajoute une méthode updateContext() et définit un WebServlet racine qui doit être lié dans le processus de démarrage.
  • Fournit une configuration pour une application web qui est en lecture seule pendant son exécution. Il ajoute une méthode getServletContext() et définit un nom d'attribut auquel le contexte racine doit être lié dans le processus de démarrage.
  • Fournit une configuration pour une application Spring qui peut être mise à jour à la volée pendant l'exécution via le tissage de bytecode. Il ajoute une méthode updateServletContext() et définit un servlet racine qui doit être lié dans le processus de démarrage.

Q56. Qu'est-ce que Spring AOP?

  • La programmation orientée aspect vous permet de définir différents aspects transversaux qui isolent les beans pour être disponibles uniquement dans certains environnements et profils.
  • La programmation orientée aspect vous permet d'effectuer un profilage, ce qui vous permet de développer différents profils de tuning de performances JVM transversaux pour différents aspects de vos applications.
  • La programmation orientée aspect permet la modularisation des préoccupations transversales afin que la logique boilerplate répétée, telle que le code de journalisation, ne pollue pas la logique métier.
  • La programmation orientée aspect vous permet de persister des données transversales à travers des fragments modulaires de votre base de données.

Q57. En supposant que l'authentification par nom d'utilisateur et mot de passe est en place, quelle méthode de l'objet Authentication peut être utilisée pour obtenir le nom d'utilisateur?

  • getPrincipal
  • getUsername
  • getUser
  • getDn

Q58. En supposant qu'aucune configuration supplémentaire n'est fournie, quel est le premier critère de sélection que Spring utilise pour choisir un bean lors de l'autocâblage d'une propriété?

  • le nom du bean
  • le type de bean
  • la taille du bean
  • Aucune des réponses ci-dessus

Q59. Quel est le résultat de l'appel de la méthode de contrôleur map en utilisant la demande HTTP suivante?

POST localhost:8080/map
{"b" : "b", "d" : "d"}
@RestController
public class SampleController {
    @RequestMapping("/map")
    public String map(@RequestBody SampleObject sampleObject) {
        return sampleObject.getB() + sampleObject.getC();
    }
}
public class SampleObject {

    String b;
    String c;

    public String getB() { return b; }

    public void setB() { this.b = b; }

    public String getC() { return c; }

    public void setC() { this.c = c; }
}
  • Une InvalidRequestBodyException est levée à l'exécution.
  • Une MissingPropertyException est levée à l'exécution.
  • Le texte "bnull" est retourné dans le corps de la réponse.
  • Le texte "a" est retourné dans le corps de la réponse.

Q60. Quel effet a private static sur l'objet service ci-dessous?

@SpringBootApplication
public class Question14 {
    @Autowired
    private static Service service;

    public static void main(String[] args) {
        SpringApplication.run(Question14.class, args);
    }
}

@Component
class Service {}
  • L'application génère un avertissement de dépendance circulaire.
  • L'application génère une exception NoUniqueBeanDefinitionException.
  • L'application échoue à l'exécution en raison d'une IllegalAccessException.
  • Le bean Service n'est pas autowired car il est static.

Explication : Les champs statiques ne sont pas autowired par Spring. Ils ne sont pas non plus recommandés car ils sont partagés entre toutes les instances de la classe et peuvent causer des problèmes de concurrence dans un environnement multithreadé.

Q61. Qu'est-ce qu'un contexte de sécurité?

  • Le contexte de sécurité inclut les détails du principal utilisant actuellement l'application, qui est stocké par défaut dans un ThreadLocal dans un objet Authentication.
  • Le contexte de sécurité contient une liste de tous les utilisateurs et de leurs mots de passe chiffrés en mémoire ainsi qu'une liste des ressources que les utilisateurs sont en mesure d'accéder.
  • Le contexte de sécurité inclut des informations sur les ID réseau sûrs et les adresses IP capables d'accéder au système.
  • Le contexte de sécurité inclut des informations sur les autorisations sur le système de fichiers local décrivant comment les ressources de fichiers locales peuvent être accédées.

Q62. Comment pouvez-vous mapper une demande entrante à une méthode de contrôleur?

  • Annoter une classe Controller avec @Controller. Ensuite, en utilisant une convention de nommage spécifique pour les méthodes, le RequestMappingHandlerAdapter configurera automatiquement vos points de terminaison avec le verbe HTTP approprié et l'URI.
  • Enregistrer un contrôleur en tant que bean. Ensuite, en utilisant une convention de nommage spécifique pour les méthodes, le RequestMappingHandlerAdapter configurera automatiquement vos points de terminaison en fonction des valeurs du fichier de configuration YAML.
  • Annoter une méthode de contrôleur avec @RequestMapping, ou une annotation spécifique au verbe HTTP avec un paramètre de modèle d'URI String (et d'autres paramètres si nécessaire), ce qui est pris en charge via un RequestMappingHandlerMapping/Adapter.
  • Enregistrer un contrôleur en tant que bean. Ensuite, en utilisant une convention de nommage spécifique pour les méthodes, le RequestMappingHandlerAdapter configurera automatiquement vos points de terminaison en fonction des valeurs transmises à la définition du bean.

Q63. Quelles méthodes cette expression Pointcut référence-t-elle?

execution(* setter*(..))

  • toute méthode avec un nom contenant la chaîne "setter" avec un seul paramètre
  • toute méthode avec un nom commençant par la chaîne "setter" avec un seul paramètre
  • toute méthode avec un nom commençant par la chaîne "setter"
  • toute méthode avec un nom contenant la chaîne "setter"

Q64. Quel modèle Spring MVC implémente-t-il pour déléguer le traitement des demandes aux contrôleurs?

  • Front Controller
  • Facade
  • Chaîne réactive
  • Observateur

Q65. Quelles méthodes cette expression Pointcut?

within(com.linkedin.service..*)

  • tout point de jonction uniquement dans le package service
  • tout point de jonction dans le package service ou l'un de ses sous-packages
  • toute méthode dans une classe qui câble automatiquement un bean de service
  • Ceci n'est pas une expression valide Pointcut

Q66. Quel est le résultat de l'invocation de cet endpoint Actuator dans une application Spring Boot non modifiée générée à l'aide de Spring Initializr?

/shutdown

  • La requête échouerait car l'endpoint est désactivé par défaut.
  • L'application Spring Boot renverrait une URL et une liste des processus en cours d'exécution, et vous demanderait de confirmer la commande d'arrêt.
  • L'application Spring Boot renverrait une URL pour confirmer la commande d'arrêt.
  • L'application Spring Boot commencerait à s'arrêter.

Q67. Comment accéder au contexte d'application dans un test d'intégration Spring?

  • Le contexte est présent dans un ThreadLocal, vous pouvez donc simplement appeler getSpringApplicationContextInstance() n'importe où dans un test pour obtenir le contexte actuel.
  • Les classes de test peuvent implémenter l'interface ApplicationContextAware ou câbler automatiquement l'ApplicationContext.
  • Le contexte est automatiquement injecté dans chaque test, vous pouvez donc simplement appeler getSpringApplicationContextInstance() n'importe où dans un test pour obtenir le contexte actuel.
  • Vous pouvez simplement ajouter le paramètre Context context à n'importe quelle méthode afin que le contexte soit automatiquement câblé.

Q68. Quelle interface peut être spécifiée comme paramètre dans la signature d'une méthode de contrôleur pour gérer les téléchargements de fichiers?

  • FilePath
  • MultipartFile
  • File
  • MvcFile

Q69. Quel est le but de cet endpoint?

@GetMapping("api/v1/domain/resource/{id}")
public Pojo getPojo(@PathVariable("id") String id) {
  return testService.getPojo(id);
}
  • Cet endpoint est conçu pour supprimer un objet du type Pojo avec la variable de chemin passée en paramètre.
  • Cet endpoint est conçu pour retourner JSON mappé à l'objet de type Pojo avec l'id passé en paramètre.
  • Cet endpoint renvoie la variable de chemin qui décrit l'emplacement du Pojo dans le conteneur.
  • Cet endpoint est conçu pour mettre à jour une ressource existante de l'objet de type Pojo avec l'id passé en paramètre.

Q70. Quelle propriété peut être utilisée pour définir les profils Spring actifs

  • active.profile
  • active.spring.profiles
  • spring.profiles.active
  • profiles

Q71. Quelle affirmation est vraie concernant le chargement et l'instanciation des fabriques Spring?

  • Au démarrage, SpringFactoriesLoader récupère une liste de configurations et collecte tous les fichiers du répertoire META-INF des dépendances. Ensuite, il construit une liste composite pour les configurations de contexte d'application.
  • À l'arrêt, SpringFactoryDestructor collecte tous les fichiers du répertoire META-INF de chaque dépendance et commence à arrêter chaque thread et processus.
  • Au démarrage, SpringFactoryInitializr collecte tous les fichiers du répertoire CONFIG-INF de chaque dépendance et télécharge les binaires pour exécuter chaque fichier.
  • Au démarrage et à l'arrêt, SpringFactoryInitializr télécharge les configurations de projet pour toutes les dépendances configurées.

Q72. Quelles méthodes cette expression Pointcut référence-t-elle?

     execution(* com.linkedin.TestService.*(..))
``

`

- %OPTION% toutes les méthodes des classes dans le package com.linkedin.TestService
- %OPTION% toutes les méthodes des classes dans le package com.linkedin.TestService annotées avec @Service
- %OPTION% Ce Pointcut n'est pas valide.
- %OPTION% toutes les méthodes définies par l'interface TestService

Q73. Lors de la configuration d'une application, quelle configuration est privilégiée par Spring?

  • fichiers application-{profile}.properties spécifiques au profil
  • Propriétés système Java
  • fichiers de propriétés d'application situés dans un fichier application.properties à l'intérieur du fichier application.jar
  • fichiers application-{profile}.properties spécifiques au profil situés à l'extérieur du fichier application.jar

Q74. Quelle interface est utilisée pour représenter une permission dans Spring Security?

  • GrantedAuthority
  • SecurityChain
  • PermissionMatrix
  • AccessRule

Q75. Quelle est la différence entre l'injection par constructeur et l'injection par Setter?

  • L'injection par constructeur remplace l'injection par Setter.
  • L'injection par Setter crée une nouvelle instance si une modification survient.
  • Vous ne pouvez pas utiliser l'injection par constructeur pour une injection partielle.
  • L'injection par constructeur est plus flexible que l'injection par Setter.

Q76. Quel println supprimeriez-vous pour empêcher ce code de générer une NullPointerException?

@Component
public class Test implements InitializingBean {
     @Autowired
     ApplicationContext context;
     @Autowired
     static SimpleDateFormat formatter;

     @Override
     public void afterPropertiesSet() throws Exception {
          System.out.println(context.containsBean("formatter") + " ");
          System.out.println(context.getBean("formatter").getClass());
          System.out.println(formatter.getClass());
          System.out.println(context.getClass());
     }
}
@Configuration
class TestConfig {
     @Bean
     public SimpleDateFormat formatter() {
          return new SimpleDateFormat();
     }
}
  • formatter.getClass()
  • context.containsBean("formatter")
  • context.getBean("formatter").getClass()
  • context.getClass()

Explication: Ici, une seule ligne peut générer une NPE. Appeler getClass() depuis context.getBean("formatter") peut potentiellement générer une NPE si context.getBean("formatter") retourne null.

Q77. Quelle est la stratégie de rollback par défaut?

  • Un rollback est déclenché lors de toute erreur survenue pendant la transaction.
  • Lorsqu'une instance ou une sous-classe de Exception est levée, cela déclenche un rollback, tandis que toute exception d'exécution ne le fait pas.
  • À tout moment où une instance ou une sous-classe de Throwable est levée, cela déclenche un rollback.
  • Lorsqu'une instance ou une sous-classe de RuntimeException est levée, cela déclenche un rollback, tandis que toute Exception vérifiée ne le fait pas.

Q78. Quelle est la différence entre CrudRepository et JpaRepository?

  • Le CrudRepository étend le PagingAndSortingRepository, tandis que le JpaRepository ne le fait pas.
  • Le CrudRepository expose un sur-ensemble de méthodes d'interface contenant chaque méthode spécifique au datastore prise en charge par Spring Data. Le JpaRepository ne contient que celles spécifiques à Spring Data JPA.
  • Le CrudRepository est une interface de base dans le noyau Spring Data qui expose un ensemble de fonctions dédiées. Le JpaRepository est une interface spécifique à Spring Data JPA qui expose des fonctionnalités spécifiques à JPA.
  • Le CrudRepository fait partie de l'API Java EE, tandis que JpaRepository est spécifique à Spring Data.

Q79. Qu'est-ce que la chaîne de filtres de sécurité?

  • C'est une chaîne de filtres de sécurité qui fournit une authentification avec intervention manuelle de sorte que plusieurs administrateurs du système puissent approuver les utilisateurs avec auditabilité et traçabilité.
  • Il s'agit d'une série d'activités complétées par l'utilisateur, telles que l'autorisation de mot de passe, la vérification du jeton, et bien d'autres, qui nécessitent plusieurs facteurs d'authentification pour augmenter le niveau de sécurité dans le système.
  • C'est une chaîne de filtres Servlet où chaque filtre a une responsabilité spécifique telle que le contexte de sécurité, l'autorisation d'utilisateur et de mot de passe, la traduction des exceptions ou l'interception de sécurité des filtres, traitée dans l'ordre.
  • C'est une chaîne de filtres de sécurité qui consomme plusieurs facteurs d'authentification, tels que le mot de passe, la vérification du jeton, la biométrie et la liste blanche IP, pour connecter avec succès un utilisateur au système.

Q80. Quelle n'est pas une annotation de stéréotype valide?

  • @Component
  • @Service
  • @HtmlController
  • @Controller

Q81. Quelle déclaration est vraie concernant le chargement et l'instanciation des fabriques Spring?

  • Au démarrage, SpringFactoriesLoader récupère une liste de configurations et collecte tous les fichiers du répertoire META-INF des dépendances. Ensuite, il construit une liste composite pour les configurations de contexte d'application.
  • À l'arrêt, SpringFactoryDestructor collecte tous les fichiers du répertoire META-INF de chaque dépendance et commence à arrêter chaque thread et processus.
  • Au démarrage, SpringFactoryInitializr collecte tous les fichiers du répertoire CONFIG-INF de chaque dépendance et télécharge les binaires pour exécuter chaque fichier.
  • Au démarrage et à l'arrêt, SpringFactoryInitializr télécharge les configurations de projet pour toutes les dépendances configurées.

Q83. Quel est un niveau d'isolation de transaction?

  • exécuter chaque transaction dans son propre pool de threads dédié pour faciliter l'isolation des threads
  • faciliter chaque transaction pour qu'elle ait lieu sur son propre vCPU dédié pour garantir le débit
  • le niveau de visibilité et d'accès qu'une transaction a aux unités de travail d'autres transactions telles que les écritures non validées
  • exécuter chaque transaction sur son propre processus pour fournir une isolation des ressources

Q84. Que signifie la déclaration "Spring offre des conseils entièrement typés"?

  • Vous déclarez les paramètres dont vous avez besoin dans la signature du conseil plutôt que de travailler avec des tableaux

Object[].

  • Vous travaillez avec une collection d'objets qui doivent être explicitement convertis.
  • Vous travaillez avec un tableau d'un type générique T[] au lieu de tableaux Object[].
  • Vous êtes capable d'annuler l'effacement de type dans le Object[] exposé

Q84. Quels sont considérés comme des préoccupations typiques, communes, transversales qui seraient bien adaptées à AOP? (Choisissez 3)

- A. Création de requêtes SQL
- B. Journalisation
- C. Filtrage, tri et transformation des données
- D. Gestion des transactions
- E. Journalisation d'audit
- F. Logique métier
  • A, D, F
  • D, E, F
  • A, B, F
  • B, D, E

Q85. Quelle implémentation de Service sera créée en premier?

@SpringBootApplication
public class App {

     @Autowired
     Service service;

     public static void main(String[] args) {
          SpringApplication.run(App.class, args);
     }
}
@Primary
@Component
class Service2Impl implements Service {

    Service2Impl() {
        System.out.println("Service2");
    }
}

@Component("Service")
class Service1Impl implements Service {

    Service1Impl() {
        System.out.println("Service1");
    }
}

interface Service{}
  • Service1
  • Service2
  • Une NullPointerException est levée à l'exécution.
  • Il n'y a aucun moyen de le savoir jusqu'à l'exécution.

Explication: Primary indique qu'un bean doit être privilégié lorsqu'il existe plusieurs candidats qualifiés pour câbler une dépendance à valeur unique

Q86. Quelles méthodes cette expression Pointcut référence-t-elle?

     execution(* com.linkedin.service..*.*(..))
  • toutes les méthodes définies dans le package service ou l'un de ses sous-packages
  • toutes les méthodes définies dans le package service
  • toutes les méthodes définies dans une interface de service
  • Le point de coupe est invalide.

Q87. Quel n'est pas un aspect fondamental de l'écosystème Spring?

  • Spring Data
  • Spring MVC
  • Spring Bootstrap
  • Spring Cloud

Q88. A_ est une carte clé-valeur de données utilisée pour rendre la page, et le _ est un modèle de la page qui est rempli avec des données.

  • model; view
  • hashmap; serviet
  • view; model
  • request; view