Top 50 des questions et réponses d'entretien avec Array (2026)
Vous vous préparez à un entretien chez Array ? Il est temps de vous concentrer sur les questions qui pourraient vous être posées. Comprendre {{keyword}} permet aux candidats de démontrer efficacement leurs points forts en matière de pensée analytique, de logique et de résolution de problèmes.
Les tableaux constituent le fondement de l'expérience technique et professionnelle des programmeurs. Du débutant au professionnel confirmé, leur maîtrise témoigne d'une solide expertise technique et d'une expérience approfondie de la manipulation des données. Les employeurs apprécient ces compétences lors des séances de questions-réponses et d'entretiens d'embauche.ping Les candidats réussissent les épreuves communes, avancées ou orales grâce à une analyse approfondie et à des compétences pratiques.
S’appuyant sur les points de vue de plus de 85 responsables techniques, gestionnaires et professionnels, ce recueil couvre diverses perspectives à travers les secteurs d’activité, garantissant que chaque sujet abordé reflète les attentes réelles en matière d’embauche et les normes d’évaluation du codage dans le monde réel.

Questions et réponses d'entretien d'embauche pour les postes les plus importants
1) Expliquez ce qu'est un tableau et en quoi il diffère des autres structures de données.
Un tableau est un bloc de mémoire contigu qui stocke plusieurs éléments de même type. Il permet un accès en temps constant à n'importe quel élément grâce à son index, ce qui en fait l'une des structures les plus efficaces pour l'accès aléatoire. Contrairement aux listes chaînées, les tableaux ont une taille fixe et n'entraînent aucun surcoût lié au stockage des pointeurs. On privilégie les tableaux lorsque le nombre d'éléments est connu à l'avance, tandis que les structures dynamiques comme les listes ou les vecteurs sont utilisées lorsqu'un redimensionnement fréquent est nécessaire.
| Fonctionnalité | tableau | Liste liée |
|---|---|---|
| Allocation de mémoire | Contigu | Non contigu |
| Temps d'accès | O (1) | O (n) |
| Insertion/Suppression | Cher | Efficace |
| Surcharge de mémoire | Low | Points élevés |
👉 Téléchargement PDF gratuit : Questions et réponses d’entretien sur les tableaux
2) Quels sont les différents types de tableaux ? Donnez des exemples.
Les tableaux sont classés selon leurs dimensions et leur utilisation. Les principaux types sont :
- Tableau unidimensionnel : Stocke les éléments de manière linéaire, par exemple,
int arr[5] = {1,2,3,4,5}. - Tableau bidimensionnel : Représente des données tabulaires, par exemple des matrices.
- Tableau multidimensionnel : Dimensions supérieures, souvent utilisées dans les simulations ou le traitement d'images.
- Tableaux dynamiques : Redimensionnement automatique lors de l'ajout d'éléments, par exemple :
ArrayListin Java,vectorin C++.
| Type | Structure | Exemple |
|---|---|---|
| 1D | luminaires Néon Del | [1, 2, 3] |
| 2D | Matrice | [[1, 2], [3, 4]] |
| Dynamique | Redimensionnable | std::vector<int> |
3) Comment trouver les éléments les plus grands et les plus petits dans un tableau ?
Ce problème est souvent résolu par un parcours linéaire. On utilise deux variables — une pour le minimum et une pour le maximum — que l'on met à jour à chaque itération.
Algorithme:
- Initialiser
minetmaxavec le premier élément. - Parcourez le tableau et comparez chaque élément.
- Mises à jour
minormaxil se doit !
Exemple (C++):
int arr[] = {5, 2, 9, 1, 7};
int min = arr[0], max = arr[0];
for (int i : arr) {
if (i < min) min = i;
if (i > max) max = i;
}
Complexité temporelle: Sur).
4) Quels sont les avantages et les inconvénients des tableaux ?
Les tableaux offrent des performances élevées pour l'accès aléatoire, mais leur taille est fixe et leur redimensionnement coûteux.
| Aspect | Avantages | Désavantages |
|---|---|---|
| Performances | Indexation rapide (O(1)) | Insertion/suppression lente (O(n)) |
| Mémoire | Stockage compact | Allocation de taille statique |
| Mise en œuvre | Syntaxe simple | Absence de vérification des limites dans certaines langues |
| Case Study | Convient aux ensembles de données fixes | Inefficace pour les modifications fréquentes |
5) Décrivez la différence entre les tableaux statiques et dynamiques.
A tableau statique a une taille fixe déterminée à la compilation, tandis qu'un tableau dynamique Les tableaux statiques peuvent s'agrandir ou se réduire pendant l'exécution. Ils sont efficaces en termes de mémoire mais rigides, tandis que les tableaux dynamiques offrent une plus grande flexibilité moyennant un léger surcoût lors du redimensionnement.
| Fonctionnalité | Réseau statique | Tableau dynamique |
|---|---|---|
| Taille | Parfaitement fixé | Variable |
| Mémoire | Stack | Heap |
| Exemple | int arr[5]; |
std::vector<int> |
| Redimensionnement | Non pris en charge | Appareils |
Exemple de cas d'utilisation :
Utilisez des tableaux statiques dans les systèmes embarqués et des tableaux dynamiques pour les collections de taille imprévisible.
6) Comment inverser un réseau sur place ?
RevL'échange d'un tableau sur place implique un swapping des éléments provenant des deux extrémités se déplaçant vers le centre.
Algorithme:
- Initialisez deux pointeurs :
start = 0etend = n - 1. - Échanger des éléments
arr[start]etarr[end]. - Incrément
startet décrémentendjusqu'à ce qu'ils se rencontrent.
Exemple (Python):
arr = [1, 2, 3, 4, 5] arr.reverse() # Built-in method # or manually arr = arr[::-1]
Complexité temporelle: Sur), Complexité de l'espace: O(1).
7) Quelle est la différence entre un tableau irrégulier et un tableau multidimensionnel ?
A réseau irrégulier est un tableau de tableaux où les tableaux internes peuvent avoir des longueurs différentes, tandis qu'un tableau multidimensionnel présente des dimensions de lignes et de colonnes uniformes.
| Fonctionnalité | Tableau irrégulier | Réseau multidimensionnel |
|---|---|---|
| Structure | Irrégulier (tableaux imbriqués) | Rectangulaire (matrice) |
| Mémoire | Non contigu | Contigu |
| L’accès | arr[i][j] |
arr[i][j] |
| Exemple | int[][] jagged = {{1,2}, {3,4,5}}; |
int[,] matrix = {{1,2}, {3,4}}; |
Les tableaux irréguliers sont plus efficaces en termes de mémoire lorsque les données sont inégales.
8) Comment trouver le nombre manquant dans un tableau de 1 à n ?
Ce problème exploite les propriétés mathématiques des nombres naturels.
Approche 1 (Formule de la somme) :
Somme des premiers n nombres naturels = n*(n+1)/2.
Soltract la somme des éléments du tableau à partir de ce total.
Approche 2 (XOR) :
Effectuez un XOR sur tous les éléments avec les nombres de 1 à n. La valeur restante est le nombre manquant.
Exemple :
Pour [1,2,4,5,6] (n=6) :
Somme attendue = 21, Somme réelle = 18 → Manquant = 3.
Complexité temporelle: Sur), Complexité de l'espace: O(1).
9) Quelles sont les différentes façons de supprimer les doublons d'un tableau ?
Il existe plusieurs approches en fonction de la langue et des contraintes :
- Utilisation de HashSet : Ne stockez que les éléments uniques.
- Utilisation du tri : Triez le tableau et supprimez les doublons adjacents.
- Utilisation d'une carte de fréquence : Track occurrences de chaque élément.
Exemple (Java):
Set<Integer> unique = new HashSet<>(Arrays.asList(arr));
| Approche | Heure | évenementiels |
|---|---|---|
| Jeu de hachage | O (n) | O (n) |
| tri | O (n log n) | O (1) |
| Fréquence | O (n) | O (n) |
10) Comment trouver le deuxième plus grand élément d'un tableau ?
Vous pouvez trouver le deuxième plus grand élément en utilisant un seul parcours en conservant deux variables.
Algorithme:
- Initialiser
firstetsecondasINT_MIN. - Parcourir le tableau.
- Mettez à jour les deux valeurs lorsqu'une valeur supérieure sera trouvée.
Exemple (C++):
int first = INT_MIN, second = INT_MIN;
for (int x : arr) {
if (x > first) {
second = first;
first = x;
} else if (x > second && x < first) {
second = x;
}
}
Complexité temporelle: Sur), Complexité de l'espace: O(1).
11) Comment faire pivoter un tableau de 'k' positions ? Expliquez différentes approches.
La rotation du tableau décale les éléments de manière cyclique. Il y a trois méthodes principales pour y parvenir :
- Utilisation d'un tableau temporaire : Copiez les k premiers éléments et ajoutez-les à la fin après avoir décalé les autres.
- L'utilisation de RevAlgorithme ersal : Reverse trois parties du tableau : la première partie, la deuxième partie, puis le tableau entier.
- Utilisation de l'algorithme de jonglage : Basé sur le PGCD de n et k (efficace en O(n)).
Exemple (rotation à droite de 2°) :
Input: [1,2,3,4,5] Output: [4,5,1,2,3]
| Méthode | Heure | évenementiels | Description |
|---|---|---|---|
| Tableau temporaire | O (n) | D'accord) | Simple & intuitif |
| Reven général | O (n) | O (1) | En place et efficace |
| Jonglerie | O (n) | O (1) | Basé sur les cycles GCD |
12) Qu'est-ce qu'un sous-tableau et en quoi est-il différent d'une sous-séquence ?
A sous-réseau est une section contiguë d'un tableau, tandis qu'un sous-séquence maintient l'ordre mais peut ignorer des éléments.
| Propriétés | sous-tableau | Sous-séquence |
|---|---|---|
| Contigu | Oui | Non |
| Ordre préservé | Oui | Oui |
| Exemple (tiré de [1,2,3]) | [1,2], [2,3] | [1,3], [2,3] |
Exemple :
tableau donné [1,2,3], nombre total de sous-tableaux = n*(n+1)/2 = 6.
Les sous-séquences, en revanche, sont 2ⁿ - 1 = 7 combinaisons non vides.
13) Comment trouver le sous-tableau de somme maximale ?
Le L'algorithme de Kadane est la méthode la plus efficace pour trouver le sous-tableau contigu dont la somme est maximale.
Étape:
- Initialiser
max_current = max_global = arr[0]. - Parcourir les éléments.
- Mises à jour
max_current = max(arr[i], arr[i] + max_current). - Track le maximum global.
Exemple :
Entrées : [-2,1,-3,4,-1,2,1,-5,4] → Sortie : 6 (sous-tableau) [4,-1,2,1]).
Complexité:
Temps O(n), espace O(1).
14) Comment fusionner deux tableaux triés sans utiliser d'espace supplémentaire ?
Pour fusionner deux tableaux triés en placeL'idée est de comparer à partir de la fin des deux tableaux.
Approche:
- Commencez par le dernier élément valide des deux tableaux.
- Comparez et déplacez le plus grand à l'extrémité de l'espace combiné.
- Répétez l'opération jusqu'à ce que tous les éléments soient fusionnés.
Exemple (C++):
int i = m-1, j = n-1, k = m+n-1;
while (i >= 0 && j >= 0) {
if (A[i] > B[j]) A[k--] = A[i--];
else A[k--] = B[j--];
}
Complexité temporelle: O(m+n).
15) Quelles sont les différentes manières de rechercher un élément dans un tableau ?
| Méthode | Type | Complexité temporelle | Exemple d'utilisation |
|---|---|---|---|
| Recherche linéaire | Non trié | O (n) | Recherche générale |
| Recherche binaire | Trié | O (log n) | Recherche efficace |
| Hachage | Non ordonné | moyenne O(1) | Grands ensembles de données |
Exemple (Recherche binaire – Python):
def binary_search(arr, x):
l, r = 0, len(arr)-1
while l <= r:
mid = (l+r)//2
if arr[mid] == x: return mid
elif arr[mid] < x: l = mid+1
else: r = mid-1
return -1
16) Expliquez la différence entre une copie superficielle et une copie profonde dans les tableaux.
A copie superficielle copie les références aux éléments originaux, tandis qu'un copie profonde Duplique toutes les données vers de nouveaux emplacements mémoire.
| Type de copie | Indépendance des données | Exemple |
|---|---|---|
| Peu profond | Non | arr_copy = arr |
| Profond | Oui | arr_copy = arr[:] (Python) |
Exemple :
La modification d'une copie superficielle se répercute sur le tableau d'origine ; celle d'une copie profonde ne se répercute pas.
17) Comment trouver les doublons dans un tableau sans utiliser d'espace supplémentaire ?
Approche 1 (Tri) : Trier et vérifier les éléments adjacents.
Approche 2 (Méthode de négation pour les valeurs 1–n) : Mark a visité les indices en niant l'élément à cet indice.
Approche 3 (Détection du cycle de Floyd) : Traitez le tableau comme une liste chaînée et trouvez le cycle (pour les éléments répétés dans la plage [1..n]).
Exemple :
tableau [3,1,3,4,2] → Duplicata = 3.
Heure: Sur), Espace: O(1).
18) Que sont les tableaux clairsemés et quels sont leurs avantages ?
A tableau clairsemé Elle contient principalement des valeurs nulles ou par défaut. Au lieu de stocker tous les éléments, nous ne stockons que les entrées non nulles avec leurs indices.
Avantages :
- Économise de la mémoire.
- Efficace pour les grands ensembles de données tels que les matrices ou les fréquences de termes dans les documents.
| Type | Exemple | Case Study |
|---|---|---|
| Réseau dense | [0,1,0,2,3] |
Petites données |
| Tableau clairsemé | {1:1, 3:2, 4:3} |
Données éparses volumineuses |
Exemple : Utilisé dans les modèles d'apprentissage automatique (matrices TF-IDF).
19) Comment trouver efficacement l'intersection de deux tableaux ?
L'intersection peut être trouvée à l'aide de techniques de hachage ou de tri.
- Utilisation de HashSet : Ajoutez les éléments du premier tableau, puis vérifiez l'appartenance au second.
- Utilisation de deux pointeurs : Fonctionne pour les tableaux triés.
Exemple (Python):
intersection = list(set(arr1) & set(arr2))
Complexité:
- Ensemble de hachage : O(n)
- Deux pointeurs : O(n log n) en raison du tri.
20) Expliquez la différence entre l'ordre ligne-major et l'ordre colonne-major dans les tableaux.
Il s'agit des ordres de stockage en mémoire utilisés pour les tableaux multidimensionnels.
| Concept | Majeure de rangée (C/C++) | Colonne majeure (Fortran, MATLAB) |
|---|---|---|
| Ordre de stockage | Ligne par ligne | Colonne par colonne |
| Formule d'adresse | Base + ((i * cols) + j) * size |
Base + ((j * rows) + i) * size |
| Avantage | Plus rapide pour le parcours des lignes | Plus rapide pour le parcours des colonnes |
Exemple :
Pour un tableau 2D A[2][3], grands magasins [A[0][0], A[0][1], A[0][2], A[1][0], ...].
21) Qu'est-ce que la technique de la somme préfixe et comment est-elle utilisée dans les tableaux ?
Le somme préfixe Cette technique consiste à précalculer les sommes cumulées d'un tableau afin de répondre efficacement aux requêtes par plage.
Concept:
prefix[i] = prefix[i-1] + arr[i]
Ensuite, pour obtenir la somme des éléments de l à r, utilisez :
sum(l, r) = prefix[r] - prefix[l-1]
Exemple :
Tableau = [2, 3, 5, 7, 1]
Préfixe = [2, 5, 10, 17, 18]
Somme(2,4) = prefix[4] - prefix[1] = 15
Applications :
Utilisé dans les requêtes de somme de sous-tableaux, les tableaux de fréquences cumulées et la programmation compétitive.
Complexité:
Prétraitement : O(n), Requête : O(1)
22) Comment la technique de la fenêtre glissante améliore-t-elle les performances du réseau ?
Le fenêtre coulissante Cette technique est utilisée pour résoudre efficacement les problèmes impliquant des segments contigus (sous-tableaux).
Idée: Au lieu de recalculer la somme ou la condition pour chaque fenêtre, mettez à jour le résultat en ajoutant l'élément suivant et en supprimant le premier.
Exemple de problème :
Trouvez le sous-tableau de somme maximale de taille k.
Algorithme:
- Calculer la somme des premiers
kéléments. - Faites glisser la fenêtre élément par élément.
- Ajoutez le nouvel élément, supprimez le premier, et track le maximum.
Complexité temporelle: O(n) — beaucoup plus rapide que l'approche naïve O(n×k).
Applications :
Utilisé dans des problèmes tels que le sous-tableau moyen maximal, la sous-chaîne la plus longue ou le premier nombre négatif dans chaque fenêtre.
23) Quelle est la différence entre un tableau et un pointeur en langage C ?
| Fonctionnalité | tableau | Aiguille |
|---|---|---|
| Définition | Collection d'éléments de données similaires | Variable stockant l'adresse mémoire |
| Allocation de mémoire | Contigu | Dynamique ou arbitraire |
| Taille | Parfaitement fixé | Peut être redimensionné |
| Exemple | int a[5]; |
int *p; |
Différence clé :
Le nom d'un tableau agit comme un pointeur constant, mais un pointeur peut pointer n'importe où de manière dynamique.
Exemple :
int arr[3] = {1,2,3};
int *ptr = arr; // ptr points to first element
24) Comment trouver l'indice d'équilibre dans un tableau ?
An indice d'équilibre est une position où la somme des éléments à gauche est égale à la somme des éléments à droite.
Algorithme:
- Calculer la somme totale du tableau.
- Parcourir et maintenir la somme à gauche.
- If
(total_sum - left_sum - arr[i]) == left_sum, retourner l'index.
Exemple :
Tableau: [1, 3, 5, 2, 2] → Indice = 2 (puisque la somme de gauche = la somme de droite = 4)
Complexité: Sur), Espace: O (1)
25) Que sont les matrices creuses et comment sont-elles stockées efficacement ?
A matrice clairsemée Elle contient principalement des zéros. Afin d'économiser de la mémoire, seuls les éléments non nuls et leurs indices sont stockés.
Méthodes de stockage:
- Liste des coordonnées (COO) : Stocker (ligne, colonne, valeur).
- Ligne clairsemée compressée (CSR) : Trois tableaux :
values,col_index,row_pointer. - Dictionnaire des clés (DOK) : Table de hachage de (ligne, colonne) → valeur.
| Méthode | Efficacité de la mémoire | Exemple d'utilisation |
|---|---|---|
| COO | Modérée | Stockage général |
| CSR | Haute | Calculs numériques |
| DOK | Flexible | Insertion dynamique |
Largement utilisé dans machine learning (TF-IDF, matrices d'adjacence de graphes).
26) Comment réorganiser un tableau de sorte que les nombres pairs et impairs alternent ?
L'objectif est d'entrelacer les nombres pairs et impairs tout en conservant leur ordre relatif.
Algorithme:
- Séparer les tableaux pairs et impairs.
- Fusionnez alternativement en commençant par les nombres pairs ou impairs.
- Si un type vient à manquer, ajoutez les autres.
Exemple :
Input: [3, 6, 12, 1, 5, 8] Output: [6, 3, 12, 1, 8, 5]
Complexité: O (n)
27) Expliquez la différence entre la rotation et le décalage d'un tableau.
| Opération | Rotation | Shiftfaire respecter |
|---|---|---|
| Définition | Les éléments se déplacent en cercle | Les éléments se déplacent, les emplacements vacants sont occupés (par exemple, par des 0). |
| Exemple | [1,2,3,4] → [3,4,1,2] |
[1,2,3,4] → [0,1,2,3] |
| Données perdues | Non | Oui |
| Utilisation | Réarrangements cycliques | Implémentations de files d'attente |
En résumé:
La rotation est réversible ; le déplacement, en revanche, ne l'est généralement pas.
28) Comment pouvez-vous trouver le sous-tableau de produit maximal ?
Similaire à l'algorithme de Kadane, mais vous track à la fois les produits maximum et minimum en raison des valeurs négatives.
Algorithme:
- Initialiser
max_ending_here = min_ending_here = arr[0]. - Itérer et mettre à jour les deux en fonction de l'élément actuel.
- Piste
max_so_far.
Exemple :
Entrées : [2,3,-2,4] → Sortie : 6 (sous-tableau) [2,3])
Complexité: Sur), Espace: O (1)
29) Comment pouvez-vous compter efficacement le nombre de sous-tableaux avec une somme donnée ?
Approche (Somme des préfixes + Table de hachage) :
- Maintenir la somme cumulée pendant l'itération.
- Pour chaque somme préfixe, vérifiez si
(current_sum - target)existe dans la table de hachage. - Incrémentez le compteur en conséquence.
Exemple :
arr = [10,2,-2,-20,10], target = -10 Output = 3 subarrays
Complexité temporelle: O (n)
Complexité de l'espace: O (n)
30) Qu'est-ce que la manipulation de bits dans les problèmes de tableaux, et où est-elle appliquée ?
Manipulation de bits implique d'effectuer des opérations telles que ET, OU, OU exclusif et des décalages pour résoudre efficacement les problèmes.
Applications communes:
- Recherche d'un élément unique non répétitif à l'aide de l'opération XOR.
- Vérification de l'existence d'un sous-ensemble par masquage binaire.
- Représenter les ensembles sous forme de vecteurs binaires.
Exemple :
Trouvez l'élément qui apparaît une seule fois alors que les autres apparaissent deux fois :
int res = 0; for (int num : arr) res ^= num;
Avantages :
- Espace constant
- Calcul logique rapide
31) Comment parcourir une matrice en spirale ?
A parcours en spirale parcourt tous les éléments de la matrice couche par couche dans le sens horaire.
Algorithme:
- Définir quatre limites :
top,bottom,leftetright. - Traversez de gauche à droite, de haut en bas, de droite à gauche et de bas en haut.
- Réduisez les limites après chaque passage jusqu'à ce que tous les éléments soient couverts.
Exemple :
Input: 1 2 3 4 5 6 7 8 9 Output: [1,2,3,6,9,8,7,4,5]
Complexité:
Temps : O(n×m) | Espace : O(1)
32) Quelles sont les différentes manières de trier un tableau ? Expliquez avec des exemples.
Le tri réorganise les éléments dans un ordre spécifique. Le choix de l'algorithme dépend de contraintes liées à la taille, à la distribution et à la mémoire des données.
| Algorithme | Meilleur cas | Cas moyen | Stable | évenementiels |
|---|---|---|---|---|
| Bubble Trier | O (n) | O(n²) | Oui | O (1) |
| Tri par fusion | O (n log n) | O (n log n) | Oui | O (n) |
| Tri rapide | O (n log n) | O(n²) | Non | O (log n) |
| Tri de tas | O (n log n) | O (n log n) | Non | O (1) |
Exemple (Python Tri rapide :
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr)//2]
return quicksort([x for x in arr if x < pivot]) + [x for x in arr if x == pivot] + quicksort([x for x in arr if x > pivot])
33) Expliquez la technique à deux pointeurs dans les tableaux.
Le technique à deux points utilise deux index pour parcourir une structure de données à partir d'extrémités ou de vitesses différentes, optimisant ainsi le temps et l'espace.
Usages courants:
- Détection de paires ayant une somme donnée dans des tableaux triés.
- Suppression des doublons sur place.
- Revtableaux ersing.
- Fusion des intervalles.
Exemple (à associer avec Target Somme):
arr = [1,2,3,4,6], target = 6
left, right = 0, len(arr)-1
while left < right:
s = arr[left] + arr[right]
if s == target: print(arr[left], arr[right])
elif s < target: left += 1
else: right -= 1
Complexité: O (n)
34) Comment trouver l'élément majoritaire dans un tableau ?
A élément majoritaire apparaît plus de ⌊n/2⌋ fois.
Algorithme de vote de Boyer-Moore résout ce problème en temps linéaire et en espace constant.
Étapes de l'algorithme :
- Initialiser
candidateetcount = 0. - Pour chaque élément :
- Si le nombre = 0, définir
candidate = element. - Incrémentation/décrémentation du compteur basée sur l'égalité.
- Si le nombre = 0, définir
- Vérifiez le candidat.
Exemple : [3,2,3] → Sortie : 3
Complexité: O (n)
35) Quelle est la différence entre la recherche binaire et la recherche exponentielle ?
| Fonctionnalité | Recherche binaire | Recherche exponentielle |
|---|---|---|
| Exigence | Tableau trié | Tableau trié |
| Idée clé | Divisez le tableau en deux. | Trouver la plage de manière exponentielle avant la recherche binaire |
| Complexité | O (log n) | O (log n) |
| Case Study | Taille connue | tableaux inconnus ou infinis |
Exemple :
Pour les grands ensembles de données ou les tableaux non bornés (comme les API paginées), la recherche exponentielle trouve efficacement les plages.
36) Comment pouvez-vous trouver le k-ième plus petit ou plus grand élément dans un tableau ?
Approches:
- Tri: Trier et accéder
k-1ième indice (O(n log n)). - Tas Min/Max : Efficace pour les requêtes fréquentes (O(n log k)).
- Sélection rapide (algorithme de Hoare) : Moyenne O(n).
Exemple (Python en utilisant heapq) :
import heapq arr = [3,2,1,5,6,4] k = 2 print(heapq.nlargest(k, arr)[-1]) # 5
Cas d'utilisation: Classements, indicateurs de performance, analyse en percentiles.
37) Comment trouver le nombre manquant et le nombre répétitif dans un tableau de 1 à n ?
Étant donné un tableau contenant les nombres de 1 à n, avec un nombre manquant et un nombre répété :
Approche 1 (Mathématique) :
Utilisez la différence entre la somme et la somme des carrés réelles et attendues.
Approche 2 (méthode XOR) :
- XOR tous les éléments du tableau et 1…n.
- Le résultat correspond à un XOR des nombres manquants et répétés.
- Divisez en utilisant le bit de réglage le plus à droite.
Complexité: Sur), Espace: O (1)
Exemple :
Input: [4,3,6,2,1,1] Output: Missing = 5, Repeating = 1
38) Que sont les nombres d'inversions dans un tableau et comment les calculer ?
An inversion est une paire (i, j) telle que i < j et arr[i] > arr[j].
Approche:
- Naïf: Vérifier toutes les paires → O(n²).
- Optimisé (tri fusion) : Compter les inversions pendant la fusion → O(n log n).
Exemple :
Input: [8, 4, 2, 1] Inversions = 6 → (8,4), (8,2), (8,1), (4,2), (4,1), (2,1)
Utilisé dans mesure du désordre du réseau et systèmes de classement.
39) Comment trouver la médiane de deux tableaux triés ?
Approche optimale (recherche binaire) :
Divisez les deux tableaux de sorte que les moitiés gauches contiennent le même nombre d'éléments que les moitiés droites.
Algorithme:
- Utilisez la recherche binaire sur un tableau plus petit.
- Comparer les frontières des partitions.
- Renvoyer la médiane en fonction des valeurs de partition.
Complexité: O(log(min(n, m)))
Exemple :
A = [1,3], B = [2] Median = 2.0
40) Quels sont les avantages de l'utilisation des tableaux par rapport aux listes chaînées ?
| Facteur | tableau | Liste liée |
|---|---|---|
| Mémoire | Contigu | Non contigu |
| Temps d'accès | O (1) | O (n) |
| Insertion/Suppression | Cher | Efficace |
| Localité du cache | Excellent | Médiocre |
| Au-dessus | Aucun | espace de stockage supplémentaire pour le pointeur |
Conclusion:
Les tableaux sont optimaux pour les ensembles de données de taille fixe nécessitant un accès aléatoire, tandis que les listes chaînées sont meilleures pour l'insertion et la suppression dynamiques.
41) Comment trouver la somme maximale d'un sous-tableau circulaire ?
Dans une réseau circulaire, les éléments s'enroulent à la fin.
Approche:
- Trouver la somme maximale normale des sous-tableaux en utilisant L'algorithme de Kadane.
- Trouvez la somme minimale du sous-tableau.
- Le résultat =
max(normal_max, total_sum - min_subarray).
Cas limite : Si tous les éléments sont négatifs, renvoyez l'élément maximal.
Exemple :
Input: [5, -2, 3, 4] Normal Max = 10, Circular Max = 12 → Output = 12
Complexité: O (n)
42) Comment rechercher un élément dans un tableau trié et pivoté ?
Utiliser un recherche binaire modifiée pour trouver le point d'appui et ajuster les comparaisons.
Algorithme:
- Trouver le milieu = (bas + haut) / 2.
- Vérifier si
arr[mid] == target. - Si la moitié gauche est triée → recherche à gauche ; sinon, à droite.
Exemple :
Input: [4,5,6,7,0,1,2], target = 0 Output: Index = 4
Complexité temporelle: O (log n)
43) Expliquez l’approche de programmation dynamique pour la « sous-séquence croissante de somme maximale ».
L'objectif est de trouver la somme maximale d'une sous-suite croissante.
Algorithme:
- Initialiser
dp[i] = arr[i]. - Pour chaque
i, vérifiez les éléments précédentsj < i:- If
arr[j] < arr[i], puisdp[i] = max(dp[i], arr[i] + dp[j]).
- If
- Renvoyer la valeur maximale dans
dp.
Exemple :
Input: [1, 101, 2, 3, 100, 4, 5] Output: 106 (1 + 2 + 3 + 100)
Heure: O(n²) | Espace: O (n)
44) Qu'est-ce que le « piège » ?ping Le problème de l'eau de pluie et comment le résoudre ?
Ce problème classique de représentation graphique consiste à déterminer la quantité d'eau pouvant être piégée entre les barres après une averse.
Approche (deux points clés) :
- Initialiser
left,right,left_max,right_max. - Déplacer les pointeurs vers l'intérieur, mise à jour de l'eau piégée =
min(left_max, right_max) - height[i].
Exemple :
Input: [0,1,0,2,1,0,1,3,2,1,2,1] Output: 6
| Approche | Heure | évenementiels |
|---|---|---|
| Brute Force | O(n²) | O (1) |
| Programmation dynamique | O (n) | O (n) |
| Deux points | O (n) | O (1) |
45) Comment pouvez-vous trouver le plus long sous-tableau dont la somme est égale à zéro ?
Algorithme (table de hachage) :
- Initialisez une table de hachage pour stocker les sommes des préfixes.
- Si la même somme préfixe apparaît à nouveau, la somme du sous-tableau entre les indices est nulle.
Exemple :
Input: [15, -2, 2, -8, 1, 7, 10, 23] Output: Length = 5 (Subarray [-2, 2, -8, 1, 7])
Complexité: O (n)
46) Quelle est la différence entre l'aplatissement superficiel et l'aplatissement profond des tableaux multidimensionnels ?
| Type | Définition | Exemple |
|---|---|---|
| Aplatissement superficiel | Aplanit un seul niveau | [[1,2],[3,[4]]] → [1,2,3,[4]] |
| Aplatissement profond | Aplatit complètement tous les tableaux imbriqués | [[1,2],[3,[4]]] → [1,2,3,4] |
Exemple (Python):
import itertools shallow = list(itertools.chain.from_iterable(arr))
Cas d'utilisation: Utile pour le nettoyage des données et la normalisation hiérarchique des données.
47) Comment trouver l'élément d'équilibre dans une matrice (tableau 2D) ?
An élément d'équilibre dans une matrice est un élément dont sommes des lignes et des colonnes sont équilibrés.
Algorithme:
- Précalculez les sommes des lignes et des colonnes.
- Pour chaque élément, vérifiez si
row_sum[i] - arr[i][j] == col_sum[j] - arr[i][j].
Exemple :
Matrice:
Matrix: 2 7 5 3 1 1 4 6 8 Output: Element 1 at (1,1)
Complexité: O(n²)
48) Comment pouvez-vous partitionner un tableau en deux sous-ensembles de somme égale ?
Il s'agit d'un problème de somme de sous-ensembles, résolu en utilisant Programmation dynamique.
Approche:
- Calculer la somme totale.
- Si impair → renvoyer Faux.
- Créer une table DP pour vérifier si le sous-ensemble contient
sum/2existe.
Exemple :
Input: [1,5,11,5] Output: True (Subsets: [1,5,5] and [11])
Heure: O(n × somme/2) | Espace: O(somme/2)
49) Comment faire pivoter une matrice de 90 degrés dans le sens horaire ?
Algorithme:
- Transposer la matrice.
- Reverse chaque rangée.
Exemple :
Input: 1 2 3 4 5 6 7 8 9 Output: 7 4 1 8 5 2 9 6 3
Complexité: O(n²), Sur place.
Utilisé dans traitement d'image et Transformations de visualisation des données.
50) Quelles sont les applications concrètes les plus courantes des tableaux ?
Les tableaux sont fondamentaux pour de nombreux systèmes informatiques et du monde réel.
Applications :
- Indexation de la base de données : Stockage et tri des enregistrements.
- Apprentissage automatique Vecteurs de caractéristiques, matrices et tenseurs.
- Traitement d'image: Données de pixels 2D et 3D.
- OperaSystèmes de réglage : Planification de la mémoire et des processus.
- Mise en réseau: Mise en mémoire tampon et routage des paquets.
- Jeux: État du joueur tracroi et grilles.
| Domaine | Rôle du tableau |
|---|---|
| AI / ML | Représentation tensorielle et matricielle |
| SGBD | Indexation et optimisation pour les moteurs de recherche |
| Systèmes embarqués | Données de capteur en temps réel |
| Cloud Computing | panneaux de répartition de charge |
Les tableaux fournissent infrastructure pour une organisation, un calcul et une évolutivité efficaces des données.
🔍 Questions d'entretien les plus fréquentes pour le poste d'ingénieur en imagerie de données, avec des scénarios concrets et des réponses stratégiques
1) Qu'est-ce qu'un tableau et en quoi diffère-t-il des autres structures de données ?
Attendu du candidat : L'intervieweur souhaite évaluer votre compréhension fondamentale des tableaux, notamment leur utilité, leur structure et en quoi ils diffèrent d'autres types de données tels que les listes chaînées ou les tables de hachage.
Exemple de réponse:
Un tableau est une collection d'éléments stockés dans des emplacements mémoire contigus, chaque élément étant accessible par son index. Contrairement aux listes chaînées, les tableaux offrent un accès en temps constant (O(1)) aux éléments, mais leur taille est fixe et définie lors de leur création. Cela les rend efficaces pour les opérations de lecture, mais moins flexibles pour les insertions et les suppressions.
2) Comment trouver efficacement les éléments les plus grands et les plus petits d'un tableau ?
Attendu du candidat : L'intervieweur souhaite vérifier votre raisonnement algorithmique et votre capacité à optimiser les performances.
Exemple de réponse:
« Pour trouver efficacement à la fois le plus grand et le plus petit élément d'un tableau, je parcourrais le tableau une fois, puis je… »ping track du maximum et du minimum actuels. Cette approche a une complexité temporelle de O(n) et une complexité spatiale de O(1), ce qui est optimal pour ce problème.
3) Décrivez comment vous supprimeriez les doublons d'un tableau non trié.
Attendu du candidat : L'intervieweur souhaite évaluer vos connaissances en matière de manipulation de tableaux et de structures de données qui peuvent vous aider à accomplir cette tâche.
Exemple de réponse:
« J'utiliserais une table de hachage pour stocker les éléments uniques lors du parcours du tableau. Si un élément est déjà présent dans la table, je l'ignorerais ; sinon, je l'ajouterais. Cette méthode garantit l'élimination efficace des doublons avec une complexité temporelle de O(n) et une complexité spatiale de O(n). »
4) Pouvez-vous expliquer comment fonctionne le tri de tableaux et nommer quelques algorithmes courants ?
Attendu du candidat : L'intervieweur s'attend à ce que le candidat connaisse les différents algorithmes de tri et leurs cas d'utilisation.
Exemple de réponse:
« Le tri des tableaux peut être réalisé à l'aide de divers algorithmes tels que le tri rapide, le tri fusion et… » Bubble Tri. Le tri rapide est efficace pour les cas moyens avec une complexité O(n log n), tandis que le tri fusion est préféré pour les grands ensembles de données en raison de sa nature stable. Bubbl« e Sort, bien que simple, est rarement utilisé en raison de ses performances en O(n²). »
5) Parlez-moi d'une situation où vous avez optimisé un programme qui utilisait beaucoup de tableaux.
Attendu du candidat : Le recruteur souhaite comprendre votre approche de la résolution de problèmes et votre capacité à améliorer vos performances.
Exemple de réponse:
« Dans mon poste précédent, j'ai optimisé un script de traitement de données qui reposait sur de multiples boucles imbriquées sur des tableaux. En implémentant le découpage de tableaux et en utilisant des opérations vectorisées intégrées, j'ai réduit le temps d'exécution de près de 60 %, ce qui a considérablement amélioré la réactivité du système. »
6) Comment géreriez-vous une erreur d'index de tableau hors limites ?
Attendu du candidat : L'intervieweur vérifie votre compréhension de la gestion des erreurs et des bonnes pratiques de codage.
Exemple de réponse:
« Je veillerais à ce que tous les accès aux index soient validés avant utilisation en vérifiant qu'ils se situent dans les limites de la longueur du tableau. De plus, j'implémenterais des mécanismes try-catch ou des méthodes de gestion d'erreurs équivalentes afin de gérer élégamment les erreurs de dépassement de capacité inattendues. »
7) Comment inverser un tableau sans utiliser de mémoire supplémentaire ?
Attendu du candidat : L'intervieweur souhaite évaluer votre efficacité algorithmique et votre compréhension des opérations sur site.
Exemple de réponse:
« J’utiliserais deux pointeurs : un partant du début du tableau et l’autre de la fin. Par échangeping En déplaçant les deux pointeurs vers le centre et en inversant les éléments à ces positions, le tableau peut être inversé sur place avec une complexité temporelle O(n) et une complexité spatiale O(1).
8) Décrivez une situation où vous avez dû gérer un grand ensemble de données matricielles. Comment avez-vous assuré la performance et la précision ?
Attendu du candidat : Le recruteur souhaite évaluer votre capacité à gérer des données concrètes et à optimiser les performances.
Exemple de réponse:
« Dans mon précédent emploi, je travaillais avec de grands tableaux numériques pour l’analyse de données financières. Afin de maintenir les performances, j’utilisais des techniques efficaces de gestion de la mémoire et le traitement par lots. J’exploitais également les tableaux NumPy pour effectuer des opérations vectorisées, ce qui améliorait à la fois la précision et la vitesse d’exécution. »
9) Quelles étapes suivriez-vous pour rechercher une valeur spécifique dans un tableau trié ?
Attendu du candidat : L'intervieweur s'attend à ce que vous démontriez votre connaissance des algorithmes de recherche.
Exemple de réponse:
« Pour un tableau trié, j'utiliserais l'algorithme de recherche binaire, qui divise l'intervalle de recherche en deux de manière itérative. Cette approche réduit la complexité temporelle à O(log n), ce qui la rend beaucoup plus efficace qu'une recherche linéaire pour les grands ensembles de données. »
10) Quel rôle jouent les tableaux dans la résolution de problèmes concrets en développement logiciel ?
Attendu du candidat : Le recruteur souhaite comprendre comment vous reliez les connaissances techniques à des applications pratiques.
Exemple de réponse:
« Les tableaux sont essentiels au développement logiciel car ils permettent un stockage et une récupération efficaces des données. Par exemple, dans mon précédent poste, j'ai utilisé des tableaux pour implémenter des mécanismes de mise en cache et de tri des données pour les tableaux de bord analytiques. Cela a amélioré l'accessibilité des données et réduit les temps de réponse aux requêtes. »
