QCM : Introduction aux structures de données et algorithmes fondamentaux — 20 questions

Questions et réponses du QCM

1. Que fait la clause WHERE dans une requête SQL ?

Elle trie les résultats par ordre croissant
Elle relie automatiquement deux tables
Elle filtre les lignes à conserver
Elle supprime les doublons

Elle filtre les lignes à conserver

Explication

WHERE sert à sélectionner seulement les lignes qui satisfont une condition. ORDER BY trie, DISTINCT dédoublonne, et JOIN relie des tables.

2. Quel usage correspond à un alias lors d’une importation Python ?

Obtenir la valeur de retour d’une fonction importée
Afficher la liste des noms disponibles dans le module
Importer toutes les fonctions sans préfixe
Renommer un module ou une fonction avec as

Renommer un module ou une fonction avec as

Explication

Un alias sert à donner un nouveau nom à un module ou à une fonction grâce à as. dir() liste les noms disponibles, mais ne renomme rien.

3. Quelle caractéristique distingue la recherche en largeur d’abord ?

Elle explore les voisins par niveaux avant d’aller plus loin
Elle ne peut s’appliquer qu’aux graphes orientés
Elle suit une branche jusqu’au bout avant de revenir en arrière
Elle tient compte des poids des arêtes pour minimiser le coût

Elle explore les voisins par niveaux avant d’aller plus loin

Explication

La recherche en largeur d’abord explore niveau par niveau, d’abord les voisins, puis les voisins des voisins. Dans le cours, elle permet de trouver un plus court chemin lorsque chaque arête vaut 1.

4. Dans un arbre binaire de recherche, où doivent se trouver les valeurs inférieures à celle d’un nœud ?

Dans le sous-arbre gauche
Dans la racine
Dans le sous-arbre droit
Uniquement dans les feuilles

Dans le sous-arbre gauche

Explication

Dans un ABR, les valeurs plus petites sont placées à gauche et les plus grandes à droite. Cette organisation permet une recherche guidée par comparaison.

5. Quel type de jointure conserve uniquement les lignes correspondantes entre deux tables ?

FULL OUTER JOIN
LEFT JOIN
CROSS JOIN
INNER JOIN

INNER JOIN

Explication

La jointure interne ne garde que les lignes qui correspondent selon la condition de jointure. Les autres jointures peuvent conserver aussi des lignes non appariées.

6. Quel est l’intérêt principal d’un arbre AVL par rapport à un ABR non équilibré ?

Il impose que tous les nœuds aient deux enfants
Il garantit une hauteur logarithmique pour des opérations efficaces
Il transforme la recherche en parcours linéaire
Il supprime la nécessité des comparaisons

Il garantit une hauteur logarithmique pour des opérations efficaces

Explication

Un AVL est un ABR auto-équilibré qui maintient une hauteur logarithmique. Un ABR non équilibré peut au contraire se dégrader jusqu’à une recherche en O(n).

7. Dans le petit théorème de Fermat, quelle propriété est vraie si p est premier et a n’est pas divisible par p ?

a^{p-1} ≡ a (mod p)
a + p ≡ 1 (mod p)
a^{p-1} ≡ 1 (mod p)
a^p ≡ 0 (mod p)

a^{p-1} ≡ 1 (mod p)

Explication

Le petit théorème de Fermat affirme que, pour un premier p et un entier a non multiple de p, on a a^{p-1}≡1 modulo p. Les autres propositions ne correspondent pas à cette propriété.

8. Quelle affirmation décrit correctement le coût au pire du tri par insertion et du tri par sélection ?

Ils sont tous deux en O(1)
Ils sont tous deux quadratiques en O(n²)
Ils sont tous deux en O(n)
Ils sont tous deux en O(log(n))

Ils sont tous deux quadratiques en O(n²)

Explication

Les deux tris reposent sur des boucles imbriquées, ce qui conduit à un coût quadratique au pire. Leur complexité dépend donc fortement de la taille n du tableau.

9. Dans une fonction récursive, à quoi sert le cas de base ?

À arrêter la suite des appels et garantir la terminaison
À accélérer automatiquement le code en mémoire cache
À remplacer toutes les variables locales par des globales
À diviser le problème en deux sous-problèmes égaux

À arrêter la suite des appels et garantir la terminaison

Explication

Le cas de base est la condition d’arrêt de la récursion ; sans lui, les appels peuvent se poursuivre indéfiniment. Diviser le problème relève plutôt du principe de diviser pour régner.

10. Que fait l’instruction import module en Python ?

Elle copie seulement les fonctions publiques dans l’espace courant
Elle permet d’appeler les fonctions avec la notation module.fonction()
Elle renomme automatiquement le module avec as
Elle exécute seulement la docstring du module

Elle permet d’appeler les fonctions avec la notation module.fonction()

Explication

Avec import module, on accède aux éléments via le préfixe du module, comme module.fonction(). Pour accéder directement à une fonction sans préfixe, on utilise plutôt from module import fonction.

11. Quel principe caractérise le tri par insertion ?

Il échange systématiquement les extrémités du tableau
Il effectue une fusion de deux sous-tableaux déjà triés
Il parcourt la partie non triée pour y trouver le minimum restant
Il construit progressivement un tableau trié en insérant chaque nouvel élément à sa place

Il construit progressivement un tableau trié en insérant chaque nouvel élément à sa place

Explication

Le tri par insertion insère chaque nouvel élément dans la partie déjà triée à la bonne position. La recherche du minimum restant décrit le tri par sélection.

12. Quelle affirmation est correcte à propos d’un dictionnaire Python ?

Il permet d’accéder rapidement à des éléments par des paires clé-valeur
Il retire toujours l’élément ajouté en dernier
Il ne peut contenir que des valeurs numériques
Il impose un ordre d’accès strictement FIFO

Il permet d’accéder rapidement à des éléments par des paires clé-valeur

Explication

Un dictionnaire associe des clés à des valeurs et permet un accès rapide aux éléments. Il ne fonctionne ni comme une pile ni comme une file.

13. Quelle affirmation décrit le mieux une interface en programmation orientée objet ?

Elle décrit les fonctionnalités attendues sans imposer le code concret
Elle protège les données en les rendant uniquement privées
Elle permet de réutiliser le comportement d’une classe parente
Elle contient le code réel qui exécute les fonctionnalités

Elle décrit les fonctionnalités attendues sans imposer le code concret

Explication

Une interface définit un contrat en précisant les opérations attendues, sans fournir leur réalisation. Le code réel appartient à l’implémentation.

14. Quel énoncé décrit le tri fusion ?

Il place d’abord tous les éléments impairs puis tous les pairs
Il échange les éléments voisins jusqu’à obtenir un ordre croissant
Il découpe le tableau, trie chaque moitié puis fusionne les deux résultats
Il choisit à chaque étape le plus petit élément restant

Il découpe le tableau, trie chaque moitié puis fusionne les deux résultats

Explication

Le tri fusion est un algorithme diviser-pour-régner : on coupe la liste en deux, on trie récursivement chaque moitié, puis on les fusionne. La sélection du plus petit élément correspond au tri par sélection.

15. Que signifie la congruence a≡b (mod n) ?

a est strictement plus petit que b
a et b sont forcément premiers entre eux
n divise la différence a−b
a et b ont le même quotient par n

n divise la différence a−b

Explication

Une congruence signifie que la différence a−b est divisible par n, donc que a et b ont le même reste modulo n. Ce n’est pas une comparaison d’ordre ni une condition de coprimalité.

16. Quel protocole échange périodiquement des tables et utilise une métrique fondée sur le nombre de sauts ?

OSPF
ARP
RIP
DNS

RIP

Explication

RIP échange régulièrement des informations de routage et mesure les chemins en nombre de sauts. OSPF, lui, choisit les chemins selon un coût lié au débit des liaisons.

17. Que représente une arête orientée dans un graphe ?

Un sommet sans voisin
Un chemin forcément de poids nul
Une liaison avec un sens de départ vers d’arrivée
Une liaison sans direction entre deux sommets

Une liaison avec un sens de départ vers d’arrivée

Explication

Une arête orientée indique une direction entre deux sommets, du sommet de départ vers le sommet d’arrivée. Une arête non orientée ne possède pas ce sens.

18. Quel mécanisme permet à une classe de reprendre et d’étendre le comportement d’une autre classe ?

L’encapsulation
Le polymorphisme
L’instanciation
L’héritage

L’héritage

Explication

L’héritage permet à une classe de réutiliser les attributs et méthodes d’une classe parente tout en les complétant. L’encapsulation, elle, vise à protéger les données internes.

19. Quelle structure suit le principe LIFO ?

Une file
Un dictionnaire
Une pile
Une liste triée

Une pile

Explication

Une pile retire en premier le dernier élément ajouté, ce qui correspond au principe LIFO. Une file suit au contraire le principe FIFO.

20. Dans une table de routage, quel élément indique vers quelle interface envoyer un paquet selon sa destination ?

Le numéro de port
L’adresse de broadcast
La table de routage
Le masque de sous-réseau

La table de routage

Explication

La table de routage associe une destination à une interface, et parfois à une passerelle. Le masque de sous-réseau sert à séparer réseau et hôte, mais ne décide pas à lui seul du prochain saut.

Révisez avec les flashcards

Mémorisez les réponses avec 20 flashcards sur Introduction aux structures de données et algorithmes fondamentaux.

POO — définition ?

Programmation orientée objet, paradigme basé sur classes et objets.

Interface — rôle ?

Décrit les fonctionnalités attendues sans implémentation.

Encapsulation — but ?

Protéger les données internes en rendant les attributs privés.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Introduction aux structures de données et algorithmes fondamentaux.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM