QCMUP.COM

Liste Qcm Programmation Pour Concours et Examen Partie - 3

Entraînez-vous avec des QCM corrigés, consultez la réponse et la justification pour progresser durablement.

40 questions Corrigé Réviser → Pratiquer

Le développement logiciel moderne repose sur des concepts avancés qui vont bien au-delà de la simple écriture de code.

Comprendre ces mécanismes est devenu indispensable dans les études informatiques, les examens techniques et les concours orientés développement et architecture logicielle.

Cette page s’inscrit dans une démarche pédagogique visant à éclairer les fondements utilisés dans les applications professionnelles actuelles.

Les notions abordées touchent à la programmation orientée objet, à la gestion de la mémoire, à l’exécution concurrente des tâches et aux échanges entre systèmes.

Elles couvrent également les bases de la conception logicielle, de l’accès aux données et des architectures distribuées, aujourd’hui omniprésentes dans les environnements web et cloud.

L’objectif est d’aider l’apprenant à comprendre les choix techniques, à relier les concepts entre eux et à acquérir une vision claire et structurée du développement moderne.

Cette approche progressive permet d’aborder les évaluations avec méthode et confiance, guidé par une logique professionnelle.

QCM 1 Solution

Quel est l’avantage principal de l’utilisation des closures en JavaScript ?

A. Ils améliorent la vitesse
B. Ils permettent d’encapsuler des variables et de créer des fonctions privées
C. Ils remplacent les classes
D. Ils servent à créer des objets globaux
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Les closures permettent de conserver l’accès à des variables même après l’exécution de la fonction parente.

QCM 2 Solution

En Python, quelle méthode spéciale est utilisée pour représenter une instance sous forme de chaîne ?

A. __str__
B. __repr__
C. __init__
D. __len__
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
__str__ permet de définir une représentation en chaîne d’une instance.

QCM 3 Solution

En Java, quel est le rôle de l’interface fonctionnelle ?

A. Définir une interface avec exactement une méthode abstraite
B. Définir une classe abstraite
C. Créer un package
D. Déclarer une exception
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
Une interface fonctionnelle possède une seule méthode abstraite et peut être utilisée avec des lambdas.

QCM 4 Solution

Quel est l’avantage du multithreading en Java ?

A. Exécution simultanée de plusieurs tâches dans un seul processus
B. Réduit la mémoire utilisée
C. Empêche les erreurs de compilation
D. Crée des fichiers temporaires
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
Le multithreading permet d’exécuter plusieurs tâches simultanément au sein d’un processus.

QCM 5 Solution

En PHP, quelle est la différence entre 'include' et 'require_once' ?

A. include produit une erreur fatale si le fichier est manquant
B. require_once inclut le fichier une seule fois et produit une erreur fatale si le fichier est manquant
C. include inclut toujours une seule fois
D. require_once ne produit jamais d’erreur
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
require_once inclut le fichier une seule fois et génère une erreur fatale si le fichier n’existe pas.

QCM 6 Solution

En JavaScript, que fait 'async/await' ?

A. Permet d’exécuter des fonctions de manière synchrone
B. Permet d’écrire du code asynchrone de manière synchrone
C. Crée des threads
D. Optimise les boucles
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
async/await permet d’écrire du code asynchrone comme s’il était synchrone.

QCM 7 Solution

Quelle est la différence entre 'deep copy' et 'shallow copy' en Python ?

A. deep copy duplique les objets imbriqués, shallow copy ne duplique que la référence
B. shallow copy duplique tous les objets
C. deep copy est plus rapide que shallow copy
D. shallow copy ne copie rien
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
Le deep copy crée des copies complètes des objets imbriqués, contrairement au shallow copy.

QCM 8 Solution

En SQL, quelle clause est utilisée pour combiner deux tables sans doublons ?

A. JOIN
B. UNION
C. INTERSECT
D. GROUP BY
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
UNION combine les résultats de deux requêtes et supprime les doublons.

QCM 9 Solution

En Python, comment lever une exception personnalisée ?

A. throw Exception()
B. raise Exception('message')
C. error('message')
D. exit()
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
raise Exception('message') permet de lever une exception personnalisée en Python.

QCM 10 Solution

En Java, quelle est la différence entre 'abstract class' et 'interface' ?

A. Une abstract class peut avoir des méthodes implémentées, une interface uniquement des méthodes abstraites
B. Une interface peut avoir des attributs statiques, une abstract class pas
C. Les deux sont identiques
D. Une abstract class ne peut pas être héritée
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
Une abstract class peut contenir des méthodes implémentées alors qu’une interface ne définit que des méthodes abstraites (sauf default methods).

QCM 11 Solution

Quel est le rôle des décorateurs en Python ?

A. Modifier le comportement d’une fonction ou méthode sans changer son code
B. Créer des classes dynamiques
C. Définir des types statiques
D. Optimiser la mémoire
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
Les décorateurs permettent de modifier ou d’enrichir le comportement d’une fonction existante.

QCM 12 Solution

En JavaScript, quelle est la différence entre 'let' et 'var' ?

A. var a une portée globale ou fonction, let a une portée bloc
B. let est plus rapide que var
C. var ne peut pas être réassigné
D. Il n’y a aucune différence
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
'var' a une portée globale ou de fonction, tandis que 'let' a une portée de bloc.

QCM 13 Solution

Quelle est la différence entre 'composition' et 'héritage' en programmation orientée objet ?

A. La composition utilise des objets comme attributs, l’héritage réutilise des classes
B. Héritage est plus rapide
C. Composition ne fonctionne qu’en Python
D. Aucune différence
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
La composition inclut des objets d’autres classes, l’héritage permet de créer une classe dérivée.

QCM 14 Solution

En PHP, quelle différence entre 'include' et 'include_once' ?

A. include_once inclut le fichier une seule fois, include l’inclut plusieurs fois
B. include produit une erreur fatale si le fichier n’existe pas
C. include_once ne produit jamais d’erreur
D. Les deux sont identiques
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
include_once assure que le fichier n’est inclus qu’une seule fois.

QCM 15 Solution

En Java, quel est le rôle de 'synchronized' ?

A. Optimiser la vitesse
B. Garantir qu’un seul thread accède à une méthode à la fois
C. Créer des threads
D. Déclarer une variable constante
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
'synchronized' empêche les accès concurrents simultanés à une méthode ou bloc critique.

QCM 16 Solution

En Python, que fait la fonction 'zip()' ?

A. Crée un dictionnaire
B. Itère simultanément sur plusieurs listes et crée des tuples
C. Trie les listes
D. Fusionne les chaînes de caractères
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
zip() permet de combiner plusieurs itérables en tuples.

QCM 17 Solution

En SQL, quel mot-clé permet d’optimiser l’exécution d’une requête sur une grande table ?

A. INDEX
B. GROUP BY
C. DISTINCT
D. ORDER BY
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
Créer un INDEX sur une colonne accélère la recherche et le filtrage dans les grandes tables.

QCM 18 Solution

En JavaScript, quel est le rôle de 'Promise.all()' ?

A. Exécuter toutes les fonctions synchrones
B. Exécuter plusieurs promesses en parallèle et attendre que toutes soient résolues
C. Créer une nouvelle promesse
D. Annuler toutes les promesses
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Promise.all() résout un tableau de promesses et retourne les résultats lorsqu’elles sont toutes terminées.

QCM 19 Solution

En PHP, quelle différence entre 'require' et 'require_once' ?

A. require_once inclut une seule fois, require peut inclure plusieurs fois
B. require ne produit jamais d’erreur
C. require_once crée un nouveau fichier
D. Les deux sont identiques
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
require_once inclut le fichier une seule fois pour éviter les inclusions multiples.

QCM 20 Solution

En Python, quel est l’intérêt de 'with open() as file' ?

A. Ouvre un fichier et le ferme automatiquement à la fin du bloc
B. Crée un nouveau fichier seulement
C. Lit uniquement la première ligne
D. Exécute un script externe
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
'with open()' garantit la fermeture automatique du fichier même en cas d’erreur.

QCM 21 Solution

Quel principe de la POO permet de masquer les détails internes d’une classe ?

A. Héritage
B. Polymorphisme
C. Encapsulation
D. Abstraction
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
L’encapsulation masque l’implémentation interne et protège les données.

QCM 22 Solution

Quel mot-clé permet d’hériter d’une classe en Java ?

A. implements
B. extends
C. inherits
D. parent
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
En Java, le mot-clé extends permet l’héritage.

QCM 23 Solution

Quel est l’objectif principal d’un design pattern ?

A. Accélérer le matériel
B. Résoudre des problèmes récurrents de conception
C. Remplacer les algorithmes
D. Compiler le code
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Les design patterns proposent des solutions éprouvées à des problèmes de conception.

QCM 24 Solution

Quelle est la complexité temporelle d’une recherche binaire ?

A. O(n)
B. O(log n)
C. O(n²)
D. O(1)
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
La recherche binaire divise l’espace de recherche par deux à chaque étape.

QCM 25 Solution

Quel type de structure de données fonctionne en LIFO ?

A. File
B. Liste
C. Pile
D. Arbre
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
Une pile fonctionne selon le principe Last In, First Out.

QCM 26 Solution

Quel est le rôle du garbage collector ?

A. Compiler le code
B. Libérer la mémoire inutilisée
C. Gérer le réseau
D. Optimiser les algorithmes
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Le garbage collector libère automatiquement la mémoire non utilisée.

QCM 27 Solution

Quel est le rôle d’une transaction en base de données ?

A. Afficher les données
B. Garantir la cohérence des opérations
C. Créer des index
D. Sauvegarder la base
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Une transaction assure l’intégrité et la cohérence des données.

QCM 28 Solution

Que signifie ACID en bases de données ?

A. Algorithm, Code, Index, Data
B. Atomicité, Cohérence, Isolation, Durabilité
C. Access, Control, Integrity, Data
D. Application, Cloud, Internet, Database
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
ACID définit les propriétés garantissant la fiabilité des transactions.

QCM 29 Solution

Quel est le rôle d’un index composite ?

A. Index sur une seule colonne
B. Index sur plusieurs colonnes
C. Index temporaire
D. Index chiffré
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Un index composite accélère les requêtes sur plusieurs colonnes.

QCM 30 Solution

Quel protocole est utilisé pour les API REST ?

A. FTP
B. HTTP
C. SMTP
D. SNMP
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Les API REST utilisent principalement le protocole HTTP.

QCM 31 Solution

Quel code HTTP signifie « Not Found » ?

A. 200
B. 301
C. 404
D. 500
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
Le code 404 indique qu’une ressource est introuvable.

QCM 32 Solution

Quel est le rôle d’un load balancer ?

A. Compiler le code
B. Répartir la charge entre serveurs
C. Stocker les données
D. Crypter les communications
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Un load balancer distribue les requêtes pour améliorer la disponibilité.

QCM 33 Solution

Quelle architecture favorise la scalabilité horizontale ?

A. Monolithique
B. Client-serveur simple
C. Microservices
D. Standalone
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
Les microservices facilitent la montée en charge horizontale.

QCM 34 Solution

Quel outil permet l’intégration continue ?

A. Jenkins
B. MySQL
C. Nginx
D. Redis
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : A

Justification :
Jenkins est un outil populaire d’intégration continue.

QCM 35 Solution

Quel est le rôle de Redis ?

A. Base de données relationnelle
B. Système de cache en mémoire
C. Serveur web
D. Outil de test
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Redis est utilisé comme cache et stockage clé-valeur en mémoire.

QCM 36 Solution

Quel type d’attaque exploite les failles SQL ?

A. XSS
B. DDoS
C. Injection SQL
D. Phishing
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : C

Justification :
L’injection SQL exploite les failles dans les requêtes SQL.

QCM 37 Solution

Quel est le rôle d’OAuth ?

A. Chiffrer les bases de données
B. Autoriser l’accès sécurisé aux API
C. Gérer le réseau
D. Compiler le code
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
OAuth permet une autorisation sécurisée sans partager les identifiants.

QCM 38 Solution

Quel est l’avantage principal du multithreading ?

A. Réduire la mémoire
B. Exécuter plusieurs tâches en parallèle
C. Simplifier le code
D. Éviter les bugs
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Le multithreading améliore les performances par exécution parallèle.

QCM 39 Solution

Qu’est-ce qu’une condition de course (race condition) ?

A. Une erreur réseau
B. Un conflit d’accès concurrent aux ressources
C. Un bug de syntaxe
D. Une panne matérielle
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Une race condition survient lors d’accès concurrents non synchronisés.

QCM 40 Solution

Quel est le rôle d’un mutex ?

A. Gérer les fichiers
B. Synchroniser l’accès aux ressources partagées
C. Accélérer le réseau
D. Compiler le code
Afficher la réponse Cliquez pour voir la correction

Réponse correcte : B

Justification :
Un mutex empêche les accès simultanés à une ressource critique.

Mots & Définitions
Consultez les définitions des termes importants.

Une closure est une fonction qui conserve l’accès aux variables de son environnement de création. Elle permet d’encapsuler des données et de créer des comportements privés et contrôlés.

La programmation asynchrone permet d’exécuter des opérations sans bloquer le reste du programme. Elle est essentielle pour gérer efficacement les tâches longues comme les accès réseau ou disque.

Le multithreading consiste à exécuter plusieurs flux d’exécution au sein d’un même programme. Il améliore la réactivité et l’utilisation des ressources du processeur.

L’encapsulation est un principe de la programmation orientée objet qui consiste à masquer les détails internes d’une classe. Elle protège les données et impose une utilisation contrôlée via des méthodes.

L’héritage permet à une classe de réutiliser les propriétés et comportements d’une autre classe. Il favorise la réutilisation du code et une organisation hiérarchique des concepts.

Un décorateur permet de modifier ou d’enrichir le comportement d’une fonction sans en changer le code interne. Il favorise un code plus lisible et modulaire.

Une transaction regroupe plusieurs opérations qui doivent être exécutées de manière cohérente. Elle garantit que les données restent fiables même en cas d’erreur.

ACID désigne un ensemble de propriétés garantissant la fiabilité des transactions en base de données. Elles assurent la cohérence et la durabilité des données.

Un design pattern est une solution éprouvée à un problème de conception récurrent. Il aide à produire un code plus maintenable et compréhensible.

L’architecture microservices repose sur des services indépendants et faiblement couplés. Elle facilite la scalabilité et l’évolution des applications complexes.

Un load balancer répartit les requêtes entre plusieurs serveurs. Il améliore la disponibilité et les performances d’un système.

Le garbage collector gère automatiquement la mémoire en libérant les objets inutilisés. Il évite les fuites mémoire et simplifie le développement.

À propos de ce QCM

Les thèmes explorés dans ces QCM mettent en lumière les piliers essentiels du développement logiciel avancé.

Une première partie concerne la structuration du code et la programmation orientée objet.

Les concepts d’encapsulation, d’héritage, de composition et d’abstraction permettent de concevoir des applications claires, évolutives et faciles à maintenir.

Ils aident à organiser le code autour de responsabilités bien définies.

La gestion de l’exécution et des performances constitue un autre axe majeur.

La programmation asynchrone et le multithreading offrent des solutions efficaces pour exécuter plusieurs tâches sans bloquer le programme.

Ces mécanismes sont indispensables pour améliorer la réactivité des applications et exploiter pleinement les ressources matérielles.

Les QCM abordent également la gestion des données et leur cohérence.

Les transactions, les index et les principes de fiabilité des bases de données expliquent comment garantir l’intégrité des informations, même en cas d’erreurs ou d’accès concurrents.

Ces notions sont essentielles pour comprendre le fonctionnement des systèmes professionnels à grande échelle.

Les architectures modernes et les outils d’ingénierie logicielle occupent enfin une place centrale.

Les microservices, l’équilibrage de charge, les systèmes de cache et l’intégration continue illustrent les pratiques actuelles utilisées pour construire des applications robustes et scalables.

À travers ces QCM, l’apprenant développe une compréhension approfondie, s’entraîne de manière ciblée, s’auto-évalue et se prépare efficacement aux examens, concours et contextes professionnels exigeants.

Conclusion

Cette page propose une vision structurée et cohérente des concepts avancés du développement logiciel.

Elle permet de consolider les bases techniques, de mieux comprendre les architectures modernes et d’adopter de bonnes pratiques de conception.

En s’exerçant régulièrement, l’utilisateur affine son raisonnement, renforce ses acquis et gagne en assurance face aux évaluations techniques.

Cette progression méthodique favorise une montée en compétences durable et constitue un atout solide pour réussir dans les études, les concours et les projets professionnels liés au développement informatique.