Top 50 Array-interviewspørgsmål og -svar (2026)

Forbereder du dig til en Array-samtale? Det er tid til at fokusere på, hvilke spørgsmål der kan komme. Forståelse af {{keyword}} hjælper kandidater med at afdække analytisk tænkning, logik og problemløsningsstyrker effektivt.

Arrays danner fundamentet for teknisk erfaring og professionel erfaring for programmører. Fra nyuddannede til erfarne fagfolk demonstrerer mestring af dem stærk teknisk ekspertise og erfaring på rodniveau med datamanipulation. Arbejdsgivere værdsætter sådanne færdigheder under spørgsmål og svar-sessioner, f.eks.ping Kandidater klarer almindelige, avancerede eller viva-runder med selvsikker analyse og praktiske færdigheder.

Baseret på indsigt fra over 85 tekniske ledere, managers og professionelle dækker denne samling forskellige perspektiver på tværs af brancher og sikrer, at hvert emne afspejler autentiske ansættelsesforventninger og virkelige standarder for kodningsevaluering.

Array-jobsamtalespørgsmål og -svar

Top Array-jobsamtalespørgsmål og -svar

1) Forklar hvad et array er, og hvordan det adskiller sig fra andre datastrukturer.

Et array er en sammenhængende hukommelsesblok, der lagrer flere elementer af samme datatype. Det giver adgang til ethvert element i konstant tid ved hjælp af dets indeks, hvilket gør det til en af ​​de mest effektive strukturer til tilfældig adgang. I modsætning til linkede lister har arrays en fast størrelse og ingen overhead til lagring af pointere. Arrays foretrækkes, når antallet af elementer er kendt på forhånd, hvorimod dynamiske strukturer som lister eller vektorer bruges, når hyppig ændring af størrelse forventes.

Feature Array Linked List
Hukommelsestildeling sammenhængende Ikke-sammenhængende
Adgangstid O (1) O (n)
Indsættelse/sletning Kostbar Effektiv
Hukommelse overhead Lav Høje (pointere)

👉 Gratis PDF-download: Array-jobsamtalespørgsmål og -svar


2) Hvad er de forskellige typer af arrays? Giv eksempler.

Arrays kategoriseres baseret på deres dimensioner og anvendelse. De primære typer omfatter:

  • En-dimensionel array: Lagrer elementer lineært, f.eks. int arr[5] = {1,2,3,4,5}.
  • Todimensionel matrix: Repræsenterer tabeldata, f.eks. matricer.
  • Flerdimensionelt array: Højere dimensioner, ofte brugt i simuleringer eller billedbehandling.
  • Dynamiske arrays: Tilpas automatisk størrelsen, når elementer tilføjes, f.eks. ArrayList in Java, vector in C++.
Type Struktur Eksempel
1D Lineær [1, 2, 3]
2D Matrix [[1, 2], [3, 4]]
Dynamisk resizable std::vector<int>

3) Hvordan finder man de største og mindste elementer i et array?

Dette problem løses ofte ved hjælp af en lineær gennemløbsmetode. Man vedligeholder to variabler – en for minimum og en for maksimum – og opdaterer dem under iterationen.

Algoritme:

  1. Initialiser min og max med det første element.
  2. Gennemgå arrayet og sammenlign hvert element.
  3. Opdatering min or max derfor.

Eksempel (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;
}

Tidskompleksitet: På).


4) Hvad er fordelene og ulemperne ved arrays?

Arrays leverer høj ydeevne til tilfældig adgang, men har en fast størrelse og kostbar størrelsesændring.

Aspect Fordele Ulemper
Ydeevne Hurtig indeksering (O(1)) Langsom indsættelse/sletning (O(n))
Hukommelse Kompakt opbevaring Statisk størrelsesallokering
Implementering Simpel syntaks Ingen grænser for kontrol på nogle sprog
Use Case Velegnet til faste datasæt Ineffektiv til hyppige ændringer

5) Beskriv forskellen mellem statiske og dynamiske arrays.

A statisk array har en fast størrelse bestemt ved kompileringstid, mens en dynamisk array kan vokse eller krympe under kørsel. Statiske arrays er effektive i hukommelsen, men rigide, hvorimod dynamiske arrays giver fleksibilitet til en lille omkostning ved ændring af størrelsen.

Feature Statisk array Dynamisk array
Størrelse Fast Variabel
Hukommelse Stak bunke
Eksempel int arr[5]; std::vector<int>
Ændring af størrelsen Ikke understøttet Understøttet

Eksempel på brug:
Brug statiske arrays i indlejrede systemer og dynamiske arrays til samlinger med uforudsigelig størrelse.


6) Hvordan kan man vende et array på stedet?

RevSletning af et array på stedet involverer swapping elementer fra begge ender bevæger sig mod midten.

Algoritme:

  1. Initialiser to pointere: start = 0 og end = n - 1.
  2. Byt elementer arr[start] og arr[end].
  3. Increment (Forøgelse) start og reduktion end indtil de mødes.

Eksempel (Python):

arr = [1, 2, 3, 4, 5]
arr.reverse()  # Built-in method
# or manually
arr = arr[::-1]

Tidskompleksitet: På), Rumkompleksitet: O(1).


7) Hvad er forskellen på et takket array og et flerdimensionelt array?

A takket array er et array af arrays, hvor indre arrays kan have forskellige længder, hvorimod en flerdimensionelt array har ensartede række- og kolonnestørrelser.

Feature Takket array Flerdimensionel matrix
Struktur Uregelmæssig (indlejrede arrays) Rektangulær (matrix)
Hukommelse Ikke-sammenhængende sammenhængende
Adgang arr[i][j] arr[i][j]
Eksempel int[][] jagged = {{1,2}, {3,4,5}}; int[,] matrix = {{1,2}, {3,4}};

Takkede arrays er mere hukommelseseffektive, når dataene er ujævne.


8) Hvordan finder man det manglende tal i en matrix fra 1 til n?

Dette problem udnytter de matematiske egenskaber ved naturlige tal.

Fremgangsmåde 1 (sumformel):
Summen af ​​første n naturlige tal = n*(n+1)/2.

Undertract summen af ​​array-elementer fra denne total.

Tilgang 2 (XOR):
XOR alle elementer med tal fra 1 til n. Den resterende værdi er det manglende tal.

Eksempel:
Til [1,2,4,5,6] (n=6):

Forventet sum = 21, Faktisk sum = 18 → Mangler = 3.

Tidskompleksitet: På), Rumkompleksitet: O(1).


9) Hvad er de forskellige måder at fjerne dubletter fra et array?

Der er flere tilgange afhængigt af sprog og begrænsninger:

  • Brug af HashSet: Gem kun unikke elementer.
  • Brug af sortering: Sorter arrayet og fjern tilstødende dubletter.
  • Brug af frekvenskort: Track antal af hvert element.

Eksempel (Java):

Set<Integer> unique = new HashSet<>(Arrays.asList(arr));
Tilgang Tid Space
HashSet O (n) O (n)
Sortering O (n log n) O (1)
Frekvens O (n) O (n)

10) Hvordan finder man det næststørste element i et array?

Du kan finde det næststørste element ved hjælp af én gennemgang ved at opretholde to variabler.

Algoritme:

  1. Initialiser first og second as INT_MIN.
  2. Gennemgå arrayet.
  3. Opdater begge, når en større værdi findes.

Eksempel (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;
    }
}

Tidskompleksitet: På), Rumkompleksitet: O(1).


11) Hvordan kan man rotere et array med 'k' positioner? Forklar forskellige tilgange.

Arrayrotation flytter elementer cyklisk. Der er tre hovedmetoder at opnå det:

  1. Brug af et midlertidigt array: Kopier de første k elementer og tilføj dem til sidst efter at have flyttet andre.
  2. Ved brug af Reversal algoritme: Reverse tre dele af arrayet – første del, anden del og derefter hele arrayet.
  3. Brug af jongleringsalgoritme: Baseret på GCD af n og k (effektiv i O(n)).

Eksempel (højrerotation med 2):

Input: [1,2,3,4,5]
Output: [4,5,1,2,3]
Metode Tid Space Beskrivelse
Midlertidig array O (n) O(k) Enkel og intuitiv
Reversal O (n) O (1) På stedet og effektivt
Jonglere O (n) O (1) Baseret på GCD-cyklusser

12) Hvad er et subarray, og hvordan adskiller det sig fra en subsekvens?

A underarray er en sammenhængende sektion af et array, mens en efterfølge opretholder orden, men kan springe elementer over.

Ejendom Underarray Efterfølgende
sammenhængende Ja Ingen
Ordre bevaret Ja Ja
Eksempel (fra [1,2,3]) [1,2] [1,3]

Eksempel:
Givet array [1,2,3], samlede underarrays = n*(n+1)/2 = 6.

Efterfølgende sekvenser er derimod 2ⁿ - 1 = 7 ikke-tomme kombinationer.


13) Hvordan finder man det maksimale sum-underarray?

Kadanes algoritme er den mest effektive måde at finde det sammenhængende underarray med den maksimale sum.

Trin:

  1. Initialiser max_current = max_global = arr[0].
  2. Iterer gennem elementer.
  3. Opdatering max_current = max(arr[i], arr[i] + max_current).
  4. Track det globale maksimum.

Eksempel:
Input: [-2,1,-3,4,-1,2,1,-5,4] → Udgang: 6 (underarray [4,-1,2,1]).

kompleksitet:
O(n) tid, O(1) rum.


14) Hvordan kan man flette to sorterede arrays sammen uden at bruge ekstra plads?

At flette to sorterede arrays på plads, ideen er at sammenligne fra slutningen af ​​begge arrays.

Nærme sig:

  1. Start fra det sidste gyldige element i begge arrays.
  2. Sammenlign og flyt den større til enden af ​​det kombinerede rum.
  3. Gentag indtil alle elementer er flettet sammen.

Eksempel (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--];
}

Tidskompleksitet: O(m+n).


15) Hvad er forskellige måder at søge efter et element i et array på?

Metode Type Tidskompleksitet Eksempel på brug
Lineær søgning Usorteret O (n) Generel søgning
Binær søgning sorteret O (log n) Effektiv opslag
hashing Uordnet O(1) gennemsnit Store datasæt

Eksempel (binær søgning – 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) Forklar forskellen mellem overfladisk kopiering og dyb kopiering i arrays.

A flad kopi kopierer referencer til de originale elementer, mens en dyb kopi duplikerer alle data til nye hukommelsesplaceringer.

Kopitype Data uafhængighed Eksempel
Shallow Ingen arr_copy = arr
Dyb Ja arr_copy = arr[:] (Python)

Eksempel:
Ændring af en overfladisk kopi afspejles i det originale array; dyb kopi gør ikke.


17) Hvordan finder man dubletter i et array uden at bruge ekstra plads?

Metode 1 (Sortering): Sortér og tjek tilstødende elementer.

Tilgang 2 (negationsmetode for 1–n værdier): Markér besøgte indekser ved at negere elementet ved det pågældende indeks.

Tilgang 3 (Floyds cyklusdetektion): Behandl array som en linket liste og find cyklussen (for gentagne elementer i området [1..n]).

Eksempel:
Array [3,1,3,4,2] → Dupliker = 3.

Tid: På), Plads: O(1).


18) Hvad er sparse arrays, og hvad er deres fordele?

A sparsomt array indeholder for det meste nul- eller standardværdier. I stedet for at gemme alle elementer, gemmer vi kun poster, der ikke er nul, med deres indekser.

fordele:

  • Sparer hukommelse.
  • Effektiv til store datasæt som matricer eller dokumenttermfrekvenser.
Type Eksempel Use Case
Tæt array [0,1,0,2,3] Små data
Sparse Array {1:1, 3:2, 4:3} Store, sparsomme data

Eksempel: Anvendes i maskinlæringsmodeller (TF-IDF-matricer).


19) Hvordan kan man effektivt finde skæringspunktet mellem to arrays?

Skæringspunkter kan findes ved hjælp af hashing- eller sorteringsteknikker.

  • Brug af HashSet: Tilføj elementer fra det første array, og tjek derefter medlemskabet for det andet.
  • Brug af to pointere: Fungerer for sorterede arrays.

Eksempel (Python):

intersection = list(set(arr1) & set(arr2))

kompleksitet:

  • HashSet: O(n)
  • To pointere: O(n log n) på grund af sortering.

20) Forklar forskellen mellem række-overordnet og kolonne-overordnet rækkefølge i arrays.

Dette er hukommelseslagerrækkefølger, der bruges til flerdimensionelle arrays.

Concept Række-dur (C/C++) Kolonne-Stor (Fortran, MATLAB)
Opbevaringsordre Række for række Kolonne for kolonne
Adresseformel Base + ((i * cols) + j) * size Base + ((j * rows) + i) * size
Advantage Hurtigere til rækkegennemgang Hurtigere til kolonnegennemgang

Eksempel:
For et 2D-array A[2][3], række-store butikker [A[0][0], A[0][1], A[0][2], A[1][0], ...].


21) Hvad er præfikssumteknikken, og hvordan bruges den i arrays?

præfiks sum Teknikken involverer forudberegning af kumulative summer af et array for at besvare intervalforespørgsler effektivt.

Koncept:

prefix[i] = prefix[i-1] + arr[i]

For at få summen af ​​elementerne fra l til r, brug derefter:

sum(l, r) = prefix[r] - prefix[l-1]

Eksempel:

Array = [2, 3, 5, 7, 1]

Præfiks = [2, 5, 10, 17, 18]

Sum(2,4) = prefix[4] - prefix[1] = 15

Applikationer:
Bruges i subarray sumforespørgsler, kumulative frekvenstabeller og konkurrencepræget programmering.

kompleksitet:
Forbehandling: O(n), Forespørgsel: O(1)


22) Hvordan forbedrer glidende vinduesteknikken arrayets ydeevne?

skydevindue Teknikken bruges til at løse problemer, der involverer sammenhængende segmenter (underarrays), effektivt.

Ide: I stedet for at genberegne summen eller betingelsen for hvert vindue, skal du opdatere resultatet ved at tilføje det næste element og fjerne det første.

Eksempelproblem:
Find den maksimale sum af underarray af størrelse k.

Algoritme:

  1. Beregn summen af ​​første k elementer.
  2. Skub vinduet ét element ad gangen.
  3. Tilføj det nye element, fjern det første, og track det maksimale.

Tidskompleksitet: O(n) — meget hurtigere end den naive O(n×k)-tilgang.

Applikationer:
Bruges i problemer som maksimal gennemsnitlig underarray, længste delstreng eller det første negative tal i hvert vindue.


23) Hvad er forskellen mellem et array og en pointer i C-sprog?

Feature Array Pointer
Definition Indsamling af lignende dataelementer Variabel lagring af hukommelsesadresse
Hukommelsestildeling sammenhængende Dynamisk eller vilkårlig
Størrelse Fast Kan skaleres
Eksempel int a[5]; int *p;

Nøgleforskel:
Et arraynavn fungerer som en konstant pointer, men en pointer kan dynamisk pege hvor som helst.

Eksempel:

int arr[3] = {1,2,3};
int *ptr = arr;  // ptr points to first element

24) Hvordan kan man finde ligevægtsindekset i et array?

An ligevægtsindeks er en position, hvor summen af ​​elementerne til venstre er lig med summen til højre.

Algoritme:

  1. Beregn den samlede sum af arrayet.
  2. Traversér og behold venstre sum.
  3. If (total_sum - left_sum - arr[i]) == left_sum, returindeks.

Eksempel:
Array: [1, 3, 5, 2, 2] → Indeks = 2 (da venstre sum = højre sum = 4)

kompleksitet: På), Plads: O (1)


25) Hvad er sparse matricer, og hvordan lagres de effektivt?

A sparsom matrix indeholder for det meste nuller. For at spare hukommelse gemmes kun elementer, der ikke er nul, og deres indekser.

Opbevaringsmetoder:

  1. Koordinatliste (COO): Gem (række, kolonne, værdi).
  2. Komprimeret spars række (CSR): Tre arrays: values, col_index, row_pointer.
  3. Nøgleordbog (DOK): Hash-kort af (række, kolonne) → værdi.
Metode Hukommelseseffektivitet Eksempel på brug
COO Moderat Generel opbevaring
CSR Høj Numeriske beregninger
D.O.K. Fleksibel Dynamisk indsættelse

Bruges bredt i machine learning (TF-IDF, grafadjacensmatricer).


26) Hvordan omarrangerer man et array, så lige og ulige tal skifter til hinanden?

Målet er at flette lige og ulige tal sammen, samtidig med at deres relative rækkefølge bevares.

Algoritme:

  1. Adskil lige og ulige arrays.
  2. Flet skiftevis startende med lige eller ulige.
  3. Hvis én type løber tør, tilføj den resterende.

Eksempel:

Input: [3, 6, 12, 1, 5, 8]
Output: [6, 3, 12, 1, 8, 5]

kompleksitet: O (n)


27) Forklar forskellen mellem arrayrotation og arrayshifting.

Produktion Rotation ShiftING
Definition Elementer bevæger sig cirkulært Elementer flytter sig, ledige pladser udfyldes (f.eks. 0'ere)
Eksempel [1,2,3,4] → [3,4,1,2] [1,2,3,4] → [0,1,2,3]
Data tabt Ingen Ja
Brug Cykliske omlejringer Køimplementeringer

Sammenfattende:
Rotation er reversibel; forskydning er typisk ikke.


28) Hvordan kan man finde det maksimale produkt-underarray?

Ligner Kadanes algoritme, men du track både maksimum- og minimumsprodukter på grund af negative værdier.

Algoritme:

  1. Initialiser max_ending_here = min_ending_here = arr[0].
  2. Iterer og opdater begge baseret på det aktuelle element.
  3. Spor max_so_far.

Eksempel:
Input: [2,3,-2,4] → Udgang: 6 (underarray [2,3])

kompleksitet: På), Plads: O (1)


29) Hvordan kan man effektivt tælle antallet af underarrays med en given sum?

Tilgang (Præfikssum + Hash-kort):

  1. Bevar den løbende sum under iteration.
  2. For hver præfikssum, tjek om (current_sum - target) findes i hash-kortet.
  3. Øg antallet i overensstemmelse hermed.

Eksempel:

arr = [10,2,-2,-20,10], target = -10
Output = 3 subarrays

Tidskompleksitet: O (n)

Rumkompleksitet: O (n)


30) Hvad er bitmanipulation i arrayproblemer, og hvor anvendes det?

Bitmanipulation involverer udførelse af operationer som AND, OR, XOR og shifts for at løse problemer effektivt.

Almindelige applikationer:

  • Find et enkelt ikke-gentagende element ved hjælp af XOR.
  • Kontrol af om et delmængde findes ved hjælp af bitmasking.
  • Repræsentation af sæt som bitvektorer.

Eksempel:

Find det element, der optræder én gang, når andre optræder to gange:

int res = 0;
for (int num : arr) res ^= num;

fordele:

  • Konstant rum
  • Hurtig logisk beregning

31) Hvordan bevæger man sig gennem en matrix i spiralform?

A spiralformet gennemløb besøger alle matrixelementer lag for lag i urets retning.

Algoritme:

  1. Definer fire grænser: top, bottom, leftog right.
  2. Bevæg dig fra venstre → højre, top → bund, højre → venstre og bund → top.
  3. Krymp grænserne efter hver gennemgang, indtil alle elementer er dækket.

Eksempel:

Input:
1 2 3
4 5 6
7 8 9
Output: [1,2,3,6,9,8,7,4,5]

kompleksitet:
Tid: O(n×m) | Rum: O(1)


32) Hvad er de forskellige måder at sortere et array på? Forklar med eksempler.

Sortering omarrangerer elementer i en bestemt rækkefølge. Valget af algoritme afhænger af datastørrelse, distribution og hukommelsesbegrænsninger.

Algoritme Bedste Sag Gennemsnitlig sag Stabil Space
Bubble Sortere O (n) O(n²) Ja O (1)
Flet sortering O (n log n) O (n log n) Ja O (n)
Hurtig sortering O (n log n) O(n²) Ingen O (log n)
Dynge sortering O (n log n) O (n log n) Ingen O (1)

Eksempel (Python Hurtig sortering):

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) Forklar to-pointerteknikken i arrays.

to-pointer teknik bruger to indekser til at gennemløbe en datastruktur fra forskellige ender eller hastigheder, hvilket optimerer tid og rum.

Almindelige anvendelser:

  • Detektering af par med en given sum i sorterede arrays.
  • Fjernelse af dubletter på stedet.
  • Revsletter arrays.
  • Sammenlægning af intervaller.

Eksempel (Par med Target Sum):

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

kompleksitet: O (n)


34) Hvordan kan man finde majoritetselementet i et array?

A majoritetselement forekommer mere end ⌊n/2⌋ gange.

Boyer-Moore-afstemningsalgoritme løser dette i lineær tid og konstant rum.

Algoritmetrin:

  1. Initialiser candidate og count = 0.
  2. For hvert element:
    • Hvis antal = 0, sæt candidate = element.
    • Forøgelse/formindskelse af antal baseret på lighed.
  3. Bekræft kandidaten.

Eksempel: [3,2,3] → Udgang: 3

kompleksitet: O (n)


35) Hvad er forskellen mellem binær søgning og eksponentiel søgning?

Feature Binær søgning Eksponentiel søgning
Krav Sorteret array Sorteret array
Nøgleidé Opdel arrayet i halvdele Find eksponentielt interval før binær søgning
Kompleksitet O (log n) O (log n)
Use Case Kendt størrelse Ukendte eller uendelige arrays

Eksempel:
For store datasæt eller ubegrænsede arrays (som paginerede API'er) spænder eksponentielle søgeresultater effektivt.


36) Hvordan kan man finde det k'te mindste eller største element i et array?

Tilgange:

  1. Sortering: Sortér og få adgang k-1indeks (O(n log n)).
  2. Min./maks. bunke: Effektiv til hyppige forespørgsler (O(n log k)).
  3. QuickSelect (Hoares algoritme): Gennemsnitlig O(n).

Eksempel (Python ved hjælp af heapq):

import heapq
arr = [3,2,1,5,6,4]
k = 2
print(heapq.nlargest(k, arr)[-1])  # 5

Brug Case: Ranglister, bedst præsterende målinger, percentilanalyse.


37) Hvordan finder man det manglende og gentagne tal i en matrix fra 1 til n?

Givet et array indeholdende tallene 1 til n, med ét manglende og ét gentaget:

Tilgang 1 (Matematisk):
Brug forskellen mellem den faktiske og forventede sum samt kvadratsummen.

Tilgang 2 (XOR-metoden):

  1. XOR alle array-elementer og 1…n.
  2. Resultatet giver XOR af manglende og gentagne tal.
  3. Divider ved hjælp af den yderste højre sætbit.

kompleksitet: På), Plads: O (1)

Eksempel:

Input: [4,3,6,2,1,1]
Output: Missing = 5, Repeating = 1

38) Hvad er inversionstællinger i et array, og hvordan beregnes de?

An inversion er et par (i, j) således at i < j og arr[i] > arr[j].

Nærme sig:

  • Naiv: Tjek alle par → O(n²).
  • Optimeret (Flet sortering): Tæl inversioner under merge → O(n log n).

Eksempel:

Input: [8, 4, 2, 1]
Inversions = 6 → (8,4), (8,2), (8,1), (4,2), (4,1), (2,1)

Brugt i målearrayforstyrrelse og rangordningssystemer.


39) Hvordan kan man finde medianen af ​​to sorterede arrays?

Optimal tilgang (binær søgning):
Divider begge arrays således at venstre halvdel indeholder det samme antal elementer som højre halvdel.

Algoritme:

  1. Brug binær søgning på et mindre array.
  2. Sammenlign partitionsgrænser.
  3. Returmedian baseret på partitionsværdier.

kompleksitet: O(log(min(n, m)))

Eksempel:

A = [1,3], B = [2]
Median = 2.0

40) Hvad er fordelene ved at bruge arrays i forhold til linkede lister?

faktor Array Linked List
Hukommelse sammenhængende Ikke-sammenhængende
Adgangstid O (1) O (n)
Indsættelse/sletning Dyrt Effektiv
Cache-lokalitet Fantastike Dårlig
Overhead Ingen Ekstra pointer-lagerplads

konklusion:
Arrays er optimale til datasæt med fast størrelse, der kræver tilfældig adgang, mens sammenkædede lister er bedre til dynamisk indsættelse og sletning.


41) Hvordan finder man den maksimale sum af et cirkulært underarray?

I en cirkulært array, elementer vikler sig rundt til sidst.

Nærme sig:

  1. Find normal maksimal subarray sum ved hjælp af Kadanes algoritme.
  2. Find den minimale sum af underarrayet.
  3. Resultatet = max(normal_max, total_sum - min_subarray).

Kanttilfælde: Hvis alle elementer er negative, returneres det største element.

Eksempel:

Input: [5, -2, 3, 4]
Normal Max = 10, Circular Max = 12 → Output = 12

kompleksitet: O (n)


42) Hvordan søger man efter et element i et roteret sorteret array?

Brug modificeret binær søgning for at finde pivotpunktet og justere sammenligninger.

Algoritme:

  1. Find midt = (lav + høj) / 2.
  2. Tjek om arr[mid] == target.
  3. Hvis venstre halvdel er sorteret → søg til venstre; ellers søg til højre.

Eksempel:

Input: [4,5,6,7,0,1,2], target = 0
Output: Index = 4

Tidskompleksitet: O (log n)


43) Forklar den dynamiske programmeringstilgang for den "maksimale sum af stigende delfølge".

Målet er at finde den maksimale sum af en stigende delfølge.

Algoritme:

  1. Initialiser dp[i] = arr[i].
  2. For hver i, tjek tidligere elementer j < i:
    • If arr[j] < arr[i], derefter dp[i] = max(dp[i], arr[i] + dp[j]).
  3. Returner den maksimale værdi i dp.

Eksempel:

Input: [1, 101, 2, 3, 100, 4, 5]
Output: 106 (1 + 2 + 3 + 100)

Tid: O(n²) | Plads: O (n)


44) Hvad er "fælden"?ping Problemet med "regnvand", og hvordan kan det løses?

Dette klassiske array-problem spørger, hvor meget vand der kan blive fanget mellem stængerne efter nedbør.

Tilgang (to pointere):

  1. Initialiser left, right, left_max, right_max.
  2. Flyt markørerne indad, og opdatering af fanget vand = min(left_max, right_max) - height[i].

Eksempel:

Input: [0,1,0,2,1,0,1,3,2,1,2,1]
Output: 6
Tilgang Tid Space
Brute Force O(n²) O (1)
Dynamisk programmering O (n) O (n)
To pointere O (n) O (1)

45) Hvordan kan man finde det længste underarray med en sum lig med nul?

Algoritme (Hash-kort):

  1. Initialiser et hash-kort for at gemme præfikssummer.
  2. Hvis den samme præfikssum vises igen, har underarrayet mellem indekserne en nulsum.

Eksempel:

Input: [15, -2, 2, -8, 1, 7, 10, 23]
Output: Length = 5 (Subarray [-2, 2, -8, 1, 7])

kompleksitet: O (n)


46) Hvad er forskellen mellem overfladisk og dyb udfladning af flerdimensionelle arrays?

Type Definition Eksempel
Lavvandet udfladning Flader kun ét niveau ud [[1,2],[3,[4]]] → [1,2,3,[4]]
Dyb udfladning Flader alle indbyggede arrays fuldstændigt ud [[1,2],[3,[4]]] → [1,2,3,4]

Eksempel (Python):

import itertools
shallow = list(itertools.chain.from_iterable(arr))

Brug Case: Nyttig til dataoprydning og hierarkisk datanormalisering.


47) Hvordan finder man ligevægtselementet i en matrix (2D-array)?

An ligevægtselement i en matrix er et element, hvis række- og kolonnesummer er afbalancerede.

Algoritme:

  1. Forudberegn række- og kolonnesummer.
  2. For hvert element, tjek om row_sum[i] - arr[i][j] == col_sum[j] - arr[i][j].

Eksempel:

matrix:

Matrix:
2 7 5
3 1 1
4 6 8
Output: Element 1 at (1,1)

kompleksitet: O(n²)


48) Hvordan kan man opdele et array i to delmængder med samme sum?

Dette er et delmængde-sum problem, løst ved hjælp af Dynamisk programmering.

Nærme sig:

  1. Beregn den samlede sum.
  2. Hvis ulige → returner Falsk.
  3. Opret DP-tabel for at kontrollere, om delmængden med sum/2 eksisterer.

Eksempel:

Input: [1,5,11,5]
Output: True (Subsets: [1,5,5] and [11])

Tid: O(n × sum/2) | Plads: O(sum/2)


49) Hvordan roterer man en matrix 90 grader med uret?

Algoritme:

  1. Transponer matricen.
  2. Reverse hver række.

Eksempel:

Input:
1 2 3
4 5 6
7 8 9
Output:
7 4 1
8 5 2
9 6 3

kompleksitet: O(n²), På plads.

Brugt i billedbehandling og transformationer af datavisualisering.


50) Hvad er de mest almindelige anvendelser af arrays i den virkelige verden?

Arrays er grundlæggende for adskillige beregningsmæssige og virkelige systemer.

Applikationer:

  • Databaseindeksering: Opbevaring og sortering af optegnelser.
  • Maskinelæring: Funktionsvektorer, matricer og tensorer.
  • Billedbehandling: 2D- og 3D-pixeldata.
  • Operating systemer: Hukommelses- og procesplanlægning.
  • Netværk: Pakkebuffering og routing.
  • Spil: Spillerens tilstand trackonge og gitre.
Domæne Array-rolle
AI / ML Tensor- og matrixrepræsentation
DBMS Indeksering og søgeoptimering
Indlejrede Systemer Sensordata i realtid
Cloud Computing Belastningsfordelingsarrays

Arrays leverer rygrad for effektiv dataorganisering, beregning og skalerbarhed.


🔍 Top Array interviewspørgsmål med virkelige scenarier og strategiske svar

1) Hvad er et array, og hvordan adskiller det sig fra andre datastrukturer?

Forventet af kandidaten: Intervieweren ønsker at vurdere din grundlæggende forståelse af arrays, herunder deres formål, struktur og hvordan de adskiller sig fra andre datatyper såsom linkede lister eller hashmaps.

Eksempel på svar:
"Et array er en samling af elementer, der er gemt i sammenhængende hukommelsessteder, hvor hvert element kan tilgås ved hjælp af et indeks. I modsætning til sammenkædede lister giver arrays adgang i konstant tid (O(1)) til elementer, men kræver en fast størrelse, der er defineret på oprettelsestidspunktet. Dette gør dem effektive til læseoperationer, men mindre fleksible til indsættelser og sletninger."


2) Hvordan finder man effektivt de største og mindste elementer i et array?

Forventet af kandidaten: Intervieweren vil gerne tjekke din algoritmiske tænkning og evne til at optimere præstationen.

Eksempel på svar:
"For effektivt at finde både de største og mindste elementer i et array, ville jeg iterere gennem arrayet én gang, keep"ping track af det nuværende maksimum og minimum. Denne tilgang har en tidskompleksitet på O(n) og en rumkompleksitet på O(1), hvilket er optimalt for dette problem.”


3) Beskriv, hvordan du ville fjerne dubletter fra et usorteret array.

Forventet af kandidaten: Intervieweren ønsker at vurdere din viden om arraymanipulation og datastrukturer, der kan hjælpe med at udføre denne opgave.

Eksempel på svar:
"Jeg ville bruge et hashsæt til at gemme unikke elementer, mens jeg itererer gennem arrayet. Hvis et element allerede er i sættet, ville jeg springe det over; ellers ville jeg tilføje det. Denne metode sikrer, at dubletter fjernes effektivt med en tidskompleksitet på O(n) og en rumkompleksitet på O(n)."


4) Kan du forklare, hvordan array-sortering fungerer, og nævne et par almindelige algoritmer?

Forventet af kandidaten: Intervieweren forventer at være fortrolig med forskellige sorteringsalgoritmer og deres anvendelsesscenarier.

Eksempel på svar:
"Array-sortering kan opnås ved hjælp af forskellige algoritmer såsom Quick Sort, Merge Sort og" Bubble Sort. Hurtig sortering er effektiv til gennemsnitlige tilfælde med O(n log n) kompleksitet, mens Merge Sort foretrækkes til store datasæt på grund af dens stabile natur. Bubble Sort, selvom det er simpelt, bruges sjældent på grund af dets O(n²)-ydeevne.


5) Fortæl mig om en gang, hvor du optimerede et program, der brugte arrays i høj grad.

Forventet af kandidaten: Intervieweren ønsker at forstå din problemløsningsstrategi og evne til at forbedre din præstation.

Eksempel på svar:
"I min tidligere rolle optimerede jeg et databehandlingsscript, der var baseret på flere indbyggede løkker over arrays. Ved at implementere array slicing og bruge indbyggede vektoriserede operationer reducerede jeg udførelsestiden med næsten 60 procent, hvilket forbedrede systemets responstid betydeligt."


6) Hvordan ville du håndtere en fejl i et array-indeks, der er uden for grænsen?

Forventet af kandidaten: Intervieweren tjekker din forståelse af fejlhåndtering og sikker kodningspraksis.

Eksempel på svar:
"Jeg ville sikre, at alle indeksadgange valideres, før de bruges, ved at kontrollere, om de er inden for arrayets længdeområde. Derudover ville jeg implementere try-catch-mekanismer eller tilsvarende fejlhåndteringsmetoder for at håndtere uventede fejl uden for grænsen på en elegant måde."


7) Hvordan vender man et array om uden at bruge ekstra hukommelse?

Forventet af kandidaten: Intervieweren ønsker at evaluere din algoritmiske effektivitet og forståelse af operationer på stedet.

Eksempel på svar:
"Jeg ville bruge to pointere: en der starter i begyndelsen af ​​arrayet og den anden i slutningen. Ved at bytteping elementer på disse positioner og flytter begge pointere mod midten, kan arrayet vendes på plads med O(n) tidskompleksitet og O(1) rumkompleksitet.”


8) Beskriv en situation, hvor du skulle håndtere et stort array-datasæt. Hvordan sikrede du ydeevne og nøjagtighed?

Forventet af kandidaten: Intervieweren ønsker at vurdere din evne til at håndtere datahåndtering og performanceoptimering i den virkelige verden.

Eksempel på svar:
"I mit tidligere job arbejdede jeg med store numeriske arrays til analyse af finansielle data. For at opretholde ydeevnen brugte jeg effektive hukommelsesstyringsteknikker og batchbehandling. Jeg udnyttede også NumPy-arrays til at udføre vektoriserede operationer, hvilket forbedrede både nøjagtighed og udførelseshastighed."


9) Hvilke trin ville du tage for at søge efter en specifik værdi i et sorteret array?

Forventet af kandidaten: Intervieweren forventer, at du demonstrerer kendskab til søgealgoritmer.

Eksempel på svar:
"For et sorteret array ville jeg bruge den binære søgealgoritme, som gentagne gange deler søgeintervallet i to. Denne tilgang reducerer tidskompleksiteten til O(log n), hvilket gør den langt mere effektiv end en lineær søgning efter store datasæt."


10) Hvordan spiller arrays en rolle i løsningen af ​​virkelige problemer inden for softwareudvikling?

Forventet af kandidaten: Intervieweren vil gerne forstå, hvordan du forbinder teknisk viden med praktiske anvendelser.

Eksempel på svar:
"Arrays er fundamentale i softwareudvikling, fordi de understøtter effektiv datalagring og -hentning. For eksempel brugte jeg i min sidste rolle arrays til at implementere caching-mekanismer og datasortering til analysedashboards. Dette forbedrede datatilgængeligheden og reducerede svartiderne på forespørgsler."

Opsummer dette indlæg med: