50 suosituinta haastattelun kysymystä ja vastausta (2026)

Valmistaudutko Array-haastatteluun? On aika keskittyä siihen, mitä kysymyksiä eteesi saattaa tulla. Avainsanan {{keyword}} ymmärtäminen auttaa hakijoita paljastamaan analyyttisen ajattelun, loogisen ajattelun ja ongelmanratkaisukyvyn tehokkaasti.

Taulukot muodostavat ohjelmoijien teknisen kokemuksen ja ammatillisen kokemuksen perustan. Aloittelijoista kokeneisiin ammattilaisiin, niiden hallinta osoittaa vahvaa teknistä asiantuntemusta ja juuritason kokemusta datan käsittelystä. Työnantajat arvostavat näitä taitoja kysymys- ja vastaustilaisuuksissa, helping Ehdokkaat läpäisevät yleiset, edistyneet tai viva-kierrokset itsevarmalla analyysillä ja käytännön taidoilla.

Yli 85 teknisen johtajan, esimiehen ja ammattilaisen näkemyksiin perustuva kokoelma kattaa monipuolisia näkökulmia eri toimialoilta varmistaen, että jokainen aihe vastaa aitoja rekrytointiodotuksia ja todellisia koodauksen arviointistandardeja.

Array-haastattelukysymykset ja vastaukset

Tärkeimmät Array-haastattelukysymykset ja vastaukset

1) Selitä, mikä taulukko on ja miten se eroaa muista tietorakenteista.

Taulukko on yhtenäinen muistilohko, joka tallentaa useita saman tietotyypin elementtejä. Se mahdollistaa vakioaikaisen pääsyn mihin tahansa elementtiin sen indeksin avulla, mikä tekee siitä yhden tehokkaimmista rakenteista satunnaiseen hakuun. Toisin kuin linkitetyillä listoilla, taulukoilla on kiinteä koko, eikä osoittimien tallentamiseen tarvita lisäresurssia. Taulukoita suositaan, kun elementtien lukumäärä tiedetään etukäteen, kun taas dynaamisia rakenteita, kuten listoja tai vektoreita, käytetään, kun koon muutos on odotettavissa usein.

Ominaisuus Ryhmä Linkitetty luettelo
Muistin varaus rajakkain Ei-vierekkäinen
Kirjautumisaika O (1) O (n)
Lisäys/Poisto kallis Tehokas
Ylimääräinen muisti Matala Korkea (osoittimet)

👉 Ilmainen PDF-lataus: Array-haastattelukysymykset ja vastaukset


2) Mitä erilaisia ​​taulukoita on olemassa? Anna esimerkkejä.

Taulukot luokitellaan niiden mittojen ja käytön perusteella. Päätyyppejä ovat:

  • Yksiulotteinen taulukko: Tallentaa elementit lineaarisesti, esim. int arr[5] = {1,2,3,4,5}.
  • Kaksiulotteinen taulukko: Edustaa taulukkomuotoista dataa, esim. matriiseja.
  • Moniulotteinen taulukko: Korkeammat mitat, joita käytetään usein simulaatioissa tai kuvankäsittelyssä.
  • Dynaamiset taulukot: Muuta kokoa automaattisesti elementtien lisäyksen yhteydessä, esim. ArrayList in Java, vector in C++.
Tyyppi Tuote mallit esimerkki
1D Lineaarinen [1, 2, 3]
2D Matriisi [[1, 2], [3, 4]]
Dynaaminen resizable std::vector<int>

3) Miten löydät taulukon suurimmat ja pienimmät alkiot?

Tämä ongelma ratkaistaan ​​usein lineaarisella läpikululla. Ylläpidät kahta muuttujaa – yhtä minimiä ja toista maksimia varten – ja päivität niitä iteraation aikana.

algoritmi:

  1. Alustaa min ja max ensimmäisen elementin kanssa.
  2. Käy läpi taulukko ja vertaa sen alkioita.
  3. Päivitykset min or max vastaavasti.

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

Ajan monimutkaisuus: O(n).


4) Mitkä ovat taulukoiden edut ja haitat?

Taulukot tarjoavat korkean suorituskyvyn satunnaisessa käytössä, mutta niillä on kiinteä koko ja niiden koon muuttaminen on kallista.

Aspect edut Haitat
Suorituskyky Nopea indeksointi (O(1)) Hidas lisäys/poisto (O(n))
Muisti Kompakti säilytystila Staattinen koon allokointi
Täytäntöönpano Yksinkertainen syntakse Rajatonta tarkistusta joillakin kielillä
Käytä asiaa Sopii kiinteille tietojoukoille Tehoton toistuville muutoksille

5) Kuvaile staattisten ja dynaamisten taulukoiden välisiä eroja.

A staattinen taulukko on kiinteä koko, joka määritetään käännösaikana, kun taas dynaaminen matriisi voi kasvaa tai kutistua ajon aikana. Staattiset taulukot ovat tehokkaita muistin käytössä, mutta jäykkiä, kun taas dynaamiset taulukot tarjoavat joustavuutta pienellä lisäkustannuksella koon muuttamisen aikana.

Ominaisuus Staattinen taulukko Dynaaminen Array
Koko kiinteä Muuttuja
Muisti Pinota pino
esimerkki int arr[5]; std::vector<int>
koon muuttaminen Ei tuettu Tuetut

Esimerkki käyttötapauksesta:
Käytä staattisia taulukoita sulautetuissa järjestelmissä ja dynaamisia taulukoita kokoelmille, joiden kokoa ei voida määrittää ennalta.


6) Miten voit kääntää taulukon takaisin paikoilleen?

RevTaulukon asettaminen paikalleen edellyttää swap-toimintoaping elementit liikkuvat molemmista päistä kohti keskustaa.

algoritmi:

  1. Alusta kaksi osoitinta: start = 0 ja end = n - 1.
  2. Vaihda elementit arr[start] ja arr[end].
  3. lisäys start ja vähennys end kunnes he tapaavat.

Esimerkki (Python):

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

Ajan monimutkaisuus: O(n), Avaruuden monimutkaisuus: O(1).


7) Mitä eroa on rosoisella taulukolla ja moniulotteisella taulukolla?

A rosoinen taulukko on taulukoiden taulukko, jossa sisätaulukoilla voi olla eri pituuksia, kun taas moniulotteinen taulukko on yhtenäinen rivi- ja sarakekoko.

Ominaisuus Rosoinen taulukko Moniulotteinen taulukko
Tuote mallit Epäsäännölliset (sisäkkäiset taulukot) Suorakulmainen (matriisi)
Muisti Ei-vierekkäinen rajakkain
Pääsy arr[i][j] arr[i][j]
esimerkki int[][] jagged = {{1,2}, {3,4,5}}; int[,] matrix = {{1,2}, {3,4}};

Rosoiset taulukot ovat muistitehokkaampia, kun data on epätasaista.


8) Miten löydetään puuttuva luku taulukosta, jonka arvo on 1 - n?

Tämä ongelma hyödyntää luonnollisten lukujen matemaattisia ominaisuuksia.

Lähestymistapa 1 (summakaava):
Ensimmäisen summa n luonnolliset luvut = n*(n+1)/2.

allatract taulukon alkioiden summa tästä kokonaissummasta.

Lähestymistapa 2 (XOR):
XOR-komennolla kaikki alkiot, joiden numerot ovat 1:stä n:ään. Jäljelle jäävä arvo on puuttuva luku.

Esimerkiksi:
varten [1,2,4,5,6] (n=6):

Odotettu summa = 21, Todellinen summa = 18 → Puuttuva = 3.

Ajan monimutkaisuus: O(n), Avaruuden monimutkaisuus: O(1).


9) Millä eri tavoilla kaksoiskappaleita voidaan poistaa taulukosta?

Kielestä ja rajoituksista riippuen on useita lähestymistapoja:

  • HashSetin käyttäminen: Säilytä vain ainutlaatuisia elementtejä.
  • Lajittelun käyttäminen: Lajittele taulukko ja poista vierekkäiset kaksoiskappaleet.
  • Taajuuskartan käyttö: Track kappaletta kutakin elementtiä.

Esimerkki (Java):

Set<Integer> unique = new HashSet<>(Arrays.asList(arr));
Lähestymistapa Aika: Tila
HashSet O (n) O (n)
lajittelu O (n log n) O (1)
Taajuus O (n) O (n)

10) Miten löydät taulukon toiseksi suurimman alkion?

Voit löytää toiseksi suurimman elementin yhdellä läpikäynnillä ylläpitämällä kahta muuttujaa.

algoritmi:

  1. Alustaa first ja second as INT_MIN.
  2. Käy läpi taulukko.
  3. Päivitä molemmat, kun löytyy suurempi arvo.

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

Ajan monimutkaisuus: O(n), Avaruuden monimutkaisuus: O(1).


11) Kuinka voit kiertää taulukkoa k:n position verran? Selitä eri lähestymistavat.

Taulukon rotaatio siirtää elementtejä syklisesti. On olemassa kolme päämenetelmää sen saavuttamiseksi:

  1. Väliaikaisen taulukon käyttäminen: Kopioi ensimmäiset k elementtiä ja lisää ne loppuun muiden siirtämisen jälkeen.
  2. Käyttäminen Reversal-algoritmi: Reverse taulukon kolme osaa – ensimmäinen osa, toinen osa ja sitten koko taulukko.
  3. Jonglöörialgoritmin käyttö: Perustuu n:n ja k:n YK-yhtälöön (tehokas O(n):ssä).

Esimerkki (oikealle kierto 2:lla):

Input: [1,2,3,4,5]
Output: [4,5,1,2,3]
Menetelmä Aika: Tila Tuotetiedot
Väliaikainen taulukko O (n) O(k) Yksinkertainen ja intuitiivinen
Reversal O (n) O (1) Paikan päällä ja tehokkaasti
Jongleeraa O (n) O (1) Perustuu GCD-sykleihin

12) Mikä on alitaulukko ja miten se eroaa alisekvenssistä?

A alitaulukko on taulukon yhtenäinen osa, kun taas a alisekvenssi ylläpitää järjestystä, mutta saattaa jättää elementtejä väliin.

Omaisuus Alaryhmä Alasekvenssi
rajakkain Kyllä Ei
Järjestys säilytetty Kyllä Kyllä
Esimerkki (kohdasta [1,2,3]) [1,2] [1,3]

Esimerkiksi:
Annettu taulukko [1,2,3], alitaulukoiden kokonaismäärä = n*(n+1)/2 = 6.

Alisekvenssit taas ovat 2ⁿ - 1 = 7 ei-tyhjät yhdistelmät.


13) Miten löydät suurimman summan alitaulukon?

Kadanen algoritmi on tehokkain tapa löytää yhtenäinen alitaulukko, jolla on suurin summa.

Vaiheet:

  1. Alustaa max_current = max_global = arr[0].
  2. Iteroi elementtien läpi.
  3. Päivitykset max_current = max(arr[i], arr[i] + max_current).
  4. Track on globaali maksimi.

Esimerkiksi:
input: [-2,1,-3,4,-1,2,1,-5,4] → Tuloste: 6 (alitaulukko [4,-1,2,1]).

Monimutkaisuus:
Aika O(n), avaruus O(1).


14) Miten kaksi lajiteltua taulukkoa voidaan yhdistää käyttämättä ylimääräistä tilaa?

Kahden lajitellun taulukon yhdistäminen paikallaan, ajatuksena on vertailla molempien taulukoiden lopusta.

Lähestyä:

  1. Aloita molempien taulukoiden viimeisestä kelvollisesta alkiosta.
  2. Vertaa ja siirrä suurempi yhdistetyn tilan loppuun.
  3. Toista, kunnes kaikki elementit on yhdistetty.

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

Ajan monimutkaisuus: O(m+n).


15) Millä eri tavoilla taulukon elementtiä voi hakea?

Menetelmä Tyyppi Ajan monimutkaisuus Käyttöesimerkki
Lineaarinen haku Lajittelematon O (n) Yleinen haku
Binaarihaku lajiteltu O (log n) Tehokas haku
hajautusta Järjestämätön O(1) keskiarvo Suuret tietojoukot

Esimerkki (binäärihaku – 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) Selitä shallow copyn ja deep copyn välinen ero taulukoissa.

A matala kopio kopioi viittaukset alkuperäisiin elementteihin, kun taas syväkopio kopioi kaikki tiedot uusiin muistipaikkoihin.

Kopiotyyppi Tietojen riippumattomuus esimerkki
Matala Ei arr_copy = arr
Syvä Kyllä arr_copy = arr[:] (Python)

Esimerkiksi:
Pinnallisen kopion muokkaaminen heijastuu alkuperäiseen taulukkoon; syväkopio ei.


17) Miten löydät kaksoiskappaleita taulukosta käyttämättä ylimääräistä välilyöntiä?

Lähestymistapa 1 (lajittelu): Lajittele ja tarkista vierekkäiset elementit.

Lähestymistapa 2 (kieltomenetelmä arvoille 1–n): Merkitse vieraillut indeksit negaatioimalla kyseisen indeksin elementti.

Lähestymistapa 3 (Floydin syklin havaitseminen): Käsittele taulukkoa linkitettynä listana ja etsi sykli (toistuville elementeille välillä [1..n]).

Esimerkiksi:
Ryhmä [3,1,3,4,2] → Kopio = 3.

aika: O(n), space: O(1).


18) Mitä ovat harvat taulukkomallit ja niiden hyödyt?

A harva taulukko sisältää enimmäkseen nolla- tai oletusarvoja. Kaikkien elementtien tallentamisen sijaan tallennamme vain nollasta poikkeavia merkintöjä indekseineen.

edut:

  • Säästää muistia.
  • Tehokas suurille tietojoukoille, kuten matriiseille tai dokumenttitermien frekvensseille.
Tyyppi esimerkki Käytä asiaa
Tiheä taulukko [0,1,0,2,3] Pieni data
Harva taulukko {1:1, 3:2, 4:3} Suuri harva data

Esimerkiksi: Käytetään koneoppimismalleissa (TF-IDF-matriisit).


19) Kuinka voit löytää kahden taulukon leikkauspisteen tehokkaasti?

Risteys voidaan löytää käyttämällä hajautus- tai lajittelutekniikoita.

  • HashSetin käyttäminen: Lisää ensimmäisen taulukon elementit ja tarkista sitten toisen taulukon jäsenyys.
  • Kahden osoittimen käyttäminen: Toimii lajitelluille taulukoille.

Esimerkki (Python):

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

Monimutkaisuus:

  • Hajautusjoukko: O(n)
  • Kaksi osoitinta: O(n log n) lajittelun vuoksi.

20) Selitä rivi-pääjärjestys- ja sarake-pääjärjestysten ero taulukoissa.

Nämä ovat muistin tallennusjärjestyksiä, joita käytetään moniulotteisissa taulukoissa.

Käsite Rivi-pääaine (C/C++) Palsta-Pää (Fortran, MATLAB)
Varastointijärjestys Rivi riviltä Sarake sarakkeelta
Osoitekaava Base + ((i * cols) + j) * size Base + ((j * rows) + i) * size
Advantage Nopeampi rivien läpikäymiseen Nopeampi sarakkeiden läpikäymiseen

Esimerkiksi:
2D-matriisille A[2][3], rivitalot [A[0][0], A[0][1], A[0][2], A[1][0], ...].


21) Mikä on prefix-summaustekniikka ja miten sitä käytetään taulukoissa?

etuliitesumma tekniikkaan kuuluu taulukon kumulatiivisen summan esilaskenta, jotta välikyselyihin voidaan vastata tehokkaasti.

Konsepti:

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

Sitten saadaksesi elementtien summan l:stä r:ään, käytä:

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

Esimerkiksi:

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

Etuliite = [2, 5, 10, 17, 18]

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

Sovellukset:
Käytetään alitaulukoiden summakyselyissä, kumulatiivisissa frekvenssitaulukoissa ja kilpailullisessa ohjelmoinnissa.

Monimutkaisuus:
Esikäsittely: O(n), Kysely: O(1)


22) Miten liukuvan ikkunan tekniikka parantaa taulukon suorituskykyä?

Liukuikkuna tekniikkaa käytetään ratkaisemaan tehokkaasti vierekkäisiä segmenttejä (alimatriiseja) sisältäviä ongelmia.

Idea: Sen sijaan, että laskeisit summan tai ehdon uudelleen jokaiselle ikkunalle, päivitä tulos lisäämällä seuraava elementti ja poistamalla ensimmäinen.

Esimerkki ongelma:
Etsi kooltaan suurin summa-alitaulukko k.

algoritmi:

  1. Laske ensimmäisen summa k elementtejä.
  2. Liu'uta ikkunaa yksi elementti kerrallaan.
  3. Lisää uusi elementti, poista ensimmäinen ja track maksimiarvo.

Ajan monimutkaisuus: O(n) — paljon nopeampi kuin naiivi O(n×k) -lähestymistapa.

Sovellukset:
Käytetään ongelmissa, kuten alitaulukon maksimikeskiarvon, pisimmän alimerkkijonon tai jokaisen ikkunan ensimmäisen negatiivisen luvun haussa.


23) Mitä eroa on taulukolla ja osoittimella C-kielellä?

Ominaisuus Ryhmä Osoitin
Määritelmä Samankaltaisten tietoelementtien kokoelma Muuttujan tallennusmuistiosoite
Muistin varaus rajakkain Dynaaminen tai mielivaltainen
Koko kiinteä Kokoa voi muuttaa
esimerkki int a[5]; int *p;

Keskeinen ero:
Taulukon nimi toimii vakio-osoittimena, mutta osoitin voi osoittaa mihin tahansa dynaamisesti.

Esimerkiksi:

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

24) Miten löydät tasapainoindeksin taulukosta?

An tasapainoindeksi on tilanne, jossa vasemmanpuoleisten alkioiden summa on yhtä suuri kuin oikeanpuoleisten alkioiden summa.

algoritmi:

  1. Laske taulukon kokonaissumma.
  2. Liiku ja säilytä vasen summa.
  3. If (total_sum - left_sum - arr[i]) == left_sum, paluuindeksi.

Esimerkiksi:
array: [1, 3, 5, 2, 2] → Indeksi = 2 (koska vasen summa = oikea summa = 4)

Monimutkaisuus: O(n), space: O (1)


25) Mitä ovat harvat matriisit ja miten ne tallennetaan tehokkaasti?

A harva matriisi sisältää enimmäkseen nollia. Muistin säästämiseksi tallennetaan vain nollasta poikkeavat elementit ja niiden indeksit.

Säilytysmenetelmät:

  1. Koordinaattiluettelo (COO): Tallenna (rivi, sarake, arvo).
  2. Pakattu harva rivi (CSR): Kolme taulukkoa: values, col_index, row_pointer.
  3. Avainten sanakirja (DOK): Hajautuskartta (rivi, sarake) → arvo.
Menetelmä Muistin tehokkuus Käyttöesimerkki
KUJERTAA Kohtalainen Yleinen varastointi
CSR Korkea Numeeriset laskelmat
D.O.K. Joustava Dynaaminen lisäys

Käytetään laajalti koneoppiminen (TF-IDF, graafin vierekkäisyysmatriisit).


26) Miten taulukko järjestetään uudelleen siten, että parilliset ja parittomat luvut vuorottelevat?

Tavoitteena on lomittaa parilliset ja parittomat luvut säilyttäen niiden suhteellisen järjestyksen.

algoritmi:

  1. Erottele parilliset ja parittomat taulukot.
  2. Yhdistä vuorotellen aloittaen parillisista tai parittomista.
  3. Jos yksi tyyppi loppuu, lisää jäljelle jäänyt.

Esimerkiksi:

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

Monimutkaisuus: O (n)


27) Selitä taulukon kierron ja taulukon siirron ero.

OperaTUKSEN Kierto Shiftta
Määritelmä Elementit liikkuvat ympyränmuotoisesti Elementit liikkuvat, tyhjät paikat täyttyvät (esim. nollat)
esimerkki [1,2,3,4] → [3,4,1,2] [1,2,3,4] → [0,1,2,3]
Tiedot menetetty Ei Kyllä
Käyttö Sykliset uudelleenjärjestelyt Jonototeutukset

Yhteenvetona:
Kierto on palautuva; siirtyminen ei tyypillisesti ole.


28) Miten löydät suurimman tuloalitaulukon?

Samanlainen kuin Kadanen algoritmi, mutta sinä track sekä maksimi- että minimitulot negatiivisten arvojen vuoksi.

algoritmi:

  1. Alustaa max_ending_here = min_ending_here = arr[0].
  2. Iteroi ja päivitä molemmat nykyisen elementin perusteella.
  3. Seurata max_so_far.

Esimerkiksi:
input: [2,3,-2,4] → Tuloste: 6 (alitaulukko [2,3])

Monimutkaisuus: O(n), space: O (1)


29) Kuinka voit tehokkaasti laskea alitaulukoiden lukumäärän annetulla summalla?

Lähestymistapa (etuliitesumma + hajautuskartta):

  1. Säilytä juokseva summa iteroinnin aikana.
  2. Tarkista jokaiselle etuliitesummalle, onko (current_sum - target) on olemassa hajautuskartalla.
  3. Lisää laskua vastaavasti.

Esimerkiksi:

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

Ajan monimutkaisuus: O (n)

Avaruuden monimutkaisuus: O (n)


30) Mitä on bittimanipulaatio taulukko-ongelmissa ja missä sitä sovelletaan?

Bittien manipulointi sisältää operaatioiden, kuten AND, OR ja XOR, suorittamisen sekä siirtoja ongelmien tehokkaaksi ratkaisemiseksi.

Yleiset sovellukset:

  • Yksittäisen ei-toistuvan elementin löytäminen XOR-operaatiolla.
  • Osajoukon olemassaolon tarkistaminen bittimaskauksen avulla.
  • Joukkojen esittäminen bittivektoreina.

Esimerkiksi:

Etsi elementti, joka esiintyy kerran, kun muut esiintyvät kahdesti:

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

edut:

  • Vakiotila
  • Nopea looginen laskenta

31) Miten matriisia liikutaan spiraalimaisessa järjestyksessä?

A spiraalimainen läpikulku käy läpi kaikki matriisin elementit kerros kerrokselta myötäpäivään.

algoritmi:

  1. Määrittele neljä rajaa: top, bottom, leftja right.
  2. Liiku vasemmalta oikealle, ylhäältä alas, oikealta vasemmalle ja alhaalta ylös.
  3. Kavenna rajoja jokaisen läpimenon jälkeen, kunnes kaikki elementit on peitetty.

Esimerkiksi:

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

Monimutkaisuus:
Aika: O(n×m) | Avaruus: O(1)


32) Millä eri tavoilla taulukkoa voi lajitella? Selitä esimerkkien avulla.

Lajittelu järjestää elementit tiettyyn järjestykseen. Algoritmin valinta riippuu datan koko, jakelu ja muistirajoitukset.

algoritmi Paras tapaus Keskimääräinen kotelo Vakaa Tila
Bubble Lajittele O (n) O(n²) Kyllä O (1)
Yhdistä lajittelu O (n log n) O (n log n) Kyllä O (n)
Nopea lajittelu O (n log n) O(n²) Ei O (log n)
Keon lajittelu O (n log n) O (n log n) Ei O (1)

Esimerkki (Python Pikalajittelu):

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) Selitä kahden osoittimen tekniikka taulukoissa.

kahden pisteen tekniikka käyttää kahta indeksiä tietorakenteen läpikäymiseen eri päistä tai nopeuksilla, optimoiden aikaa ja tilaa.

Yleiset käyttötavat:

  • Annetun summan omaavien parien havaitseminen lajitelluista taulukoista.
  • Kaksoiskappaleiden poistaminen paikan päällä.
  • Reversing-taulukot.
  • Yhdistävät intervallit.

Esimerkki (Yhdistä Target Summa):

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

Monimutkaisuus: O (n)


34) Miten löydät taulukon enemmistöalkion?

A enemmistöelementti esiintyy useammin kuin ⌊n/2⌋ kertaa.

Boyer–Moore-äänestysalgoritmi ratkaisee tämän lineaarisessa ajassa ja vakioavaruudessa.

Algoritmin vaiheet:

  1. Alustaa candidate ja count = 0.
  2. Jokaiselle elementille:
    • Jos määrä = 0, aseta candidate = element.
    • Tasa-arvoon perustuva lisäys-/vähennysmäärä.
  3. Vahvista ehdokas.

Esimerkiksi: [3,2,3] → Tuloste: 3

Monimutkaisuus: O (n)


35) Mitä eroa on binäärihaulla ja eksponentiaalisella haulla?

Ominaisuus Binaarihaku Eksponentiaalinen haku
Vaatimus Lajiteltu taulukko Lajiteltu taulukko
Keskeinen Idea Jaa taulukko puoliksi Etsi alue eksponentiaalisesti ennen binäärihakua
Monimutkaisuus O (log n) O (log n)
Käytä asiaa Tunnettu koko Tuntemattomat tai äärettömät taulukot

Esimerkiksi:
Suurissa tietojoukoissa tai rajaamattomissa taulukoissa (kuten sivutetuissa API:ssa) eksponentiaalinen haku löytää alueen tehokkaasti.


36) Miten löydät taulukon k:nneksi pienimmän tai suurimman alkion?

Lähestymistavat:

  1. Lajittelu: Lajittelu ja käyttö k-1:s indeksi (O(n log n)).
  2. Min/Max-keo: Tehokas usein toistuville kyselyille (O(n log k)).
  3. Pikavalinta (Hoaren algoritmi): Keskimääräinen O(n).

Esimerkki (Python käyttäen heapq:ta):

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

Käyttötapa: Tulostaulukot, parhaiten suoriutuvat mittarit, prosenttipisteanalyysi.


37) Miten löydetään puuttuva ja toistuva luku taulukosta 1:stä n:ään?

Olkoon taulukko, joka sisältää numeroita 1 - n, joista yksi puuttuu ja yksi toistuu:

Lähestymistapa 1 (matemaattinen):
Käytä todellisen ja odotetun summan välistä erotusta ja neliösummaa.

Lähestymistapa 2 (XOR-menetelmä):

  1. XOR kaikki taulukon alkiot ja 1…n.
  2. Tulos antaa XOR-operaation puuttuville ja toistuville luvuille.
  3. Jaa käyttämällä oikeanpuoleisinta settibittiä.

Monimutkaisuus: O(n), space: O (1)

Esimerkiksi:

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

38) Mitä ovat inversioluvut taulukossa ja miten ne lasketaan?

An inversio on pari (i, j) siten, että i < j ja arr[i] > arr[j].

Lähestyä:

  • Naiivi: Tarkista kaikki parit → O(n²).
  • Optimoitu (yhdistämislajittelu): Laske inversiot yhdistämisen aikana → O(n log n).

Esimerkiksi:

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

Käytetty mittausryhmän häiriö ja ranking-järjestelmät.


39) Miten löydät kahden lajitellun taulukon mediaanin?

Optimaalinen lähestymistapa (binäärihaku):
Jaa molemmat taulukot siten, että vasemmassa puoliskossa on yhtä monta alkiota kuin oikeassa puoliskossa.

algoritmi:

  1. Käytä binäärihakua pienemmille taulukoille.
  2. Vertaile osioiden reunoja.
  3. Palauttaa mediaanin osioarvojen perusteella.

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

Esimerkiksi:

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

40) Mitä etuja taulukoiden käyttämisessä on linkitettyihin listoihin verrattuna?

Tekijä Ryhmä Linkitetty luettelo
Muisti rajakkain Ei-vierekkäinen
Kirjautumisaika O (1) O (n)
Lisäys/Poisto Kallis Tehokas
Välimuistin sijainti Erinomainen Huono
Yläpuolella Ei eristetty Ylimääräistä osoittimen tallennustilaa

Johtopäätös:
Taulukot ovat optimaalisia kiinteän kokoisille tietojoukoille, jotka vaativat satunnaista käyttöä, kun taas linkitetyt listat ovat parempia dynaamiseen lisäykseen ja poistoon.


41) Miten löydät ympyrämäisen alitaulukon maksimisumman?

Jonkin sisällä pyöreä ryhmä, elementit kietoutuvat lopussa ympäriinsä.

Lähestyä:

  1. Etsi normaali maksimi alitaulukon summa käyttämällä Kadanen algoritmi.
  2. Etsi alitaulukon pienin summa.
  3. Tulos = max(normal_max, total_sum - min_subarray).

Reunakotelo: Jos kaikki elementit ovat negatiivisia, palauta suurin elementti.

Esimerkiksi:

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

Monimutkaisuus: O (n)


42) Miten etsit alkiota kierretystä lajitellusta taulukosta?

Käyttää muokattu binäärihaku löytääksesi keskipisteen ja säätääksesi vertailuja.

algoritmi:

  1. Etsi keskiarvo = (matala + korkea) / 2.
  2. Tarkista, onko arr[mid] == target.
  3. Jos vasen puolisko on lajiteltu → etsitään vasemmalta; muuten oikealta.

Esimerkiksi:

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

Ajan monimutkaisuus: O (log n)


43) Selitä dynaamisen ohjelmoinnin lähestymistapa "maksimisummaa kasvavalle alijonolle".

Tavoitteena on löytää kasvavan alijonon maksimisumma.

algoritmi:

  1. Alustaa dp[i] = arr[i].
  2. Kunkin i, tarkista edelliset elementit j < i:
    • If arr[j] < arr[i], sitten dp[i] = max(dp[i], arr[i] + dp[j]).
  3. Palauta suurin arvo kohdassa dp.

Esimerkiksi:

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

aika: O(n²) | space: O (n)


44) Mikä on "ansa"ping Sadevesiongelma ja miten se ratkaistaan?

Tämä klassinen matriisiongelma kysyy, kuinka paljon vettä voi jäädä loukkuun tankojen väliin sateen jälkeen.

Lähestymistapa (kaksi osoitinta):

  1. Alustaa left, right, left_max, right_max.
  2. Siirrä osoittimia sisäänpäin, päivittäen loukkuun jäänyttä vettä = min(left_max, right_max) - height[i].

Esimerkiksi:

Input: [0,1,0,2,1,0,1,3,2,1,2,1]
Output: 6
Lähestymistapa Aika: Tila
Raaka voima O(n²) O (1)
Dynaaminen ohjelmointi O (n) O (n)
Kaksi pistettä O (n) O (1)

45) Miten löydät pisimmän alitaulukon, jonka summa on nolla?

Algoritmi (hajautuskartta):

  1. Alusta hajautuskartta etuliitesummien tallentamiseksi.
  2. Jos sama etuliitesumma esiintyy uudelleen, indeksien välisen alitaulukon summa on nolla.

Esimerkiksi:

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

Monimutkaisuus: O (n)


46) Mitä eroa on moniulotteisten taulukoiden matalalla ja syvällä litistyksellä?

Tyyppi Määritelmä esimerkki
Matala litistyminen Litistää vain yhden tason [[1,2],[3,[4]]] → [1,2,3,[4]]
Syvä litistyminen Litistää kaikki sisäkkäiset taulukot täysin [[1,2],[3,[4]]] → [1,2,3,4]

Esimerkki (Python):

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

Käyttötapa: Hyödyllinen datan puhdistuksessa ja hierarkkisessa datan normalisoinnissa.


47) Miten löydetään matriisin (2D-taulukon) tasapainoalkio?

An tasapainoelementti matriisissa on elementti, jonka rivi- ja sarakesummat ovat tasapainossa.

algoritmi:

  1. Laske rivi- ja sarakesummat etukäteen.
  2. Tarkista jokaisen elementin kohdalla, onko row_sum[i] - arr[i][j] == col_sum[j] - arr[i][j].

Esimerkiksi:

Matrix:

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

Monimutkaisuus: O(n²)


48) Kuinka voit jakaa taulukon kahteen osajoukkoon, joiden summat ovat yhtä suuret?

Tämä on osajoukkosummaongelma, ratkaistu käyttämällä Dynaaminen ohjelmointi.

Lähestyä:

  1. Laske kokonaissumma.
  2. Jos pariton → palauta Epätosi.
  3. Luo DP-taulukko tarkistaaksesi, onko osajoukko sum/2 on olemassa.

Esimerkiksi:

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

aika: O(n × summa/2) | space: O(summa/2)


49) Kuinka matriisia kierretään 90 astetta myötäpäivään?

algoritmi:

  1. Transponoi matriisi.
  2. Reverse jokainen rivi.

Esimerkiksi:

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

Monimutkaisuus: O(n²), Paikan päällä.

Käytetty kuvankäsittely ja datan visualisointimuunnokset.


50) Mitkä ovat yleisimmät taulukoiden käyttösovellukset käytännössä?

Taulukot ovat perusta lukuisille laskennallisille ja reaalimaailman järjestelmille.

Sovellukset:

  • Tietokannan indeksointi: Tietueiden tallentaminen ja lajittelu.
  • Koneoppiminen: Ominaisuusvektorit, matriisit ja tensorit.
  • Kuvankäsittely: 2D- ja 3D-pikselidata.
  • Operating-järjestelmät: Muisti ja prosessien ajoitus.
  • Verkostoituminen: Pakettien puskurointi ja reititys.
  • Pelit: Pelaajan tila trackuningas ja ruudukot.
Domain Taulukon rooli
AI / ML Tensori- ja matriisiesitys
DBMS Indeksointi ja hakukoneoptimointi
Sisällytetty järjestelmä Reaaliaikainen anturidata
Cloud Computing Kuormanjakojärjestelmät

Taulukot tarjoavat selkäranka tehokkaalle datan organisoinnille, laskennalle ja skaalautuvuudelle.


🔍 Parhaat haastattelukysymykset tosielämän skenaarioilla ja strategisilla vastauksilla

1) Mikä on taulukko ja miten se eroaa muista tietorakenteista?

Ehdokkaalta odotetaan: Haastattelija haluaa arvioida perusymmärrystäsi taulukoista, mukaan lukien niiden tarkoitus, rakenne ja miten ne eroavat muista tietotyypeistä, kuten linkitetyistä listoista tai hajautusmapeista.

Esimerkki vastauksesta:
”Taulukko on kokoelma elementtejä, jotka on tallennettu vierekkäisiin muistipaikkoihin, joissa kutakin elementtiä voidaan käyttää indeksin avulla. Toisin kuin linkitetyt listat, taulukot tarjoavat vakioaikaisen (O(1)) pääsyn elementteihin, mutta vaativat kiinteän koon, joka määritetään luomisen yhteydessä. Tämä tekee niistä tehokkaita lukutoiminnoissa, mutta vähemmän joustavia lisäyksissä ja poistoissa.”


2) Kuinka löydät tehokkaasti taulukon suurimmat ja pienimmät alkiot?

Ehdokkaalta odotetaan: Haastattelija haluaa tarkistaa algoritmisen ajattelusi ja kykysi optimoida suorituskykyä.

Esimerkki vastauksesta:
"Löytääkseni tehokkaasti sekä suurimmat että pienimmät alkiot taulukosta, kävisin taulukon läpi kerran, pitäenping track nykyisestä maksimista ja minimistä. Tämän lähestymistavan aikavaativuus on O(n) ja tilavaativuus O(1), mikä on optimaalinen tälle ongelmalle.”


3) Kuvaile, miten poistaisit kaksoiskappaleet lajittelemattomasta taulukosta.

Ehdokkaalta odotetaan: Haastattelija haluaa arvioida tietämystäsi taulukon käsittelystä ja tietorakenteista, jotka voivat auttaa tässä tehtävässä.

Esimerkki vastauksesta:
”Käyttäisin hajautusjoukkoa tallentaakseni yksilöllisiä elementtejä iteroitaessani taulukkoa. Jos elementti on jo joukossa, ohittaisin sen; muuten lisäisin sen. Tämä menetelmä varmistaa, että kaksoiskappaleet poistetaan tehokkaasti O(n):n aikakompleksisuudella ja O(n):n tilakompleksisuudella.”


4) Voitko selittää, miten taulukon lajittelu toimii, ja mainita muutamia yleisiä algoritmeja?

Ehdokkaalta odotetaan: Haastattelija odottaa perehtyneisyyttä erilaisiin lajittelualgoritmeihin ja niiden käyttötapauksiin.

Esimerkki vastauksesta:
Taulukkolajittelu voidaan saavuttaa useilla eri algoritmeilla, kuten pikalajittelulla, yhdistämislajittelulla ja BubblLajittelu. Nopea lajittelu on tehokas keskimääräisissä tapauksissa, joissa monimutkaisuus on O(n log n), kun taas yhdistämislajittelua suositaan suurille tietojoukoille sen vakaan luonteen vuoksi. BubblVaikka e-lajittelu on yksinkertaista, sitä käytetään harvoin sen O(n²)-suorituskyvyn vuoksi.


5) Kerro minulle tilanteesta, jossa optimoit ohjelmaa, joka käytti paljon taulukoita.

Ehdokkaalta odotetaan: Haastattelija haluaa ymmärtää ongelmanratkaisutapasi ja kykysi parantaa suoritustasi.

Esimerkki vastauksesta:
”Edellisessä roolissani optimoin tietojenkäsittelyskriptiä, joka perustui useisiin sisäkkäisiin silmukoihin taulukoiden päällä. Toteuttamalla taulukon viipaloinnin ja käyttämällä sisäänrakennettuja vektorioperaatioita lyhensin suoritusaikaa lähes 60 prosentilla, mikä paransi merkittävästi järjestelmän reagointikykyä.”


6) Miten käsittelisit rajojen ulkopuolisen taulukkoindeksin virheen?

Ehdokkaalta odotetaan: Haastattelija tarkistaa, että ymmärrät virheiden käsittelyn ja turvallisen koodauksen käytännöt.

Esimerkki vastauksesta:
”Varmistaisin, että kaikki indeksihaut validoidaan ennen käyttöä tarkistamalla, ovatko ne taulukon pituuden sisällä. Lisäksi toteuttaisin try-catch-mekanismeja tai vastaavia virheenkäsittelymenetelmiä odottamattomien rajojen ulkopuolisten virheiden hallitsemiseksi sujuvasti.”


7) Miten taulukko käännetään käyttämättä lisää muistia?

Ehdokkaalta odotetaan: Haastattelija haluaa arvioida algoritmistasi tehokkuutta ja ymmärrystäsi paikan päällä toimivista toiminnoista.

Esimerkki vastauksesta:
"Käyttäisin kahta osoitinta: toista taulukon alusta ja toista lopusta. Vaihtotoiminnallaping elementtejä näissä paikoissa ja siirtämällä molempia osoittimia kohti keskustaa, taulukko voidaan kääntää paikalleen O(n) aikakompleksisuudella ja O(1) tilakompleksisuudella.”


8) Kuvaile tilannetta, jossa jouduit hallitsemaan suurta taulukkoaineistoa. Miten varmistit suorituskyvyn ja tarkkuuden?

Ehdokkaalta odotetaan: Haastattelija haluaa arvioida kykyäsi hallita tosielämän tiedonhallintaa ja suorituskyvyn optimointia.

Esimerkki vastauksesta:
”Edellisessä työssäni työskentelin suurten numeeristen taulukoiden kanssa talousdatan analysoinnissa. Suorituskyvyn ylläpitämiseksi käytin tehokkaita muistinhallintatekniikoita ja eräkäsittelyä. Käytin myös NumPy-taulukoita vektorioperaatioiden suorittamiseen, mikä paransi sekä tarkkuutta että suoritusnopeutta.”


9) Mitä vaiheita tekisit etsiäksesi tiettyä arvoa lajitellusta taulukosta?

Ehdokkaalta odotetaan: Haastattelija odottaa sinun osoittavan hakualgoritmien tuntemusta.

Esimerkki vastauksesta:
”Lajitellulle taulukolle käyttäisin binäärihakualgoritmia, joka jakaa hakuvälin toistuvasti puoliksi. Tämä lähestymistapa vähentää aikakompleksisuuden arvoon O(log n), mikä tekee siitä paljon tehokkaamman kuin lineaarinen haku suurille tietojoukoille.”


10) Miten taulukoilla on rooli reaalimaailman ongelmien ratkaisemisessa ohjelmistokehityksessä?

Ehdokkaalta odotetaan: Haastattelija haluaa ymmärtää, miten yhdistät teknisen tiedon käytännön sovelluksiin.

Esimerkki vastauksesta:
”Taulukot ovat olennaisia ​​ohjelmistokehityksessä, koska ne tukevat tehokasta tiedon tallennusta ja hakua. Esimerkiksi edellisessä roolissani käytin taulukoita toteuttaakseni välimuistimekanismeja ja tiedon lajittelua analytiikkakojelaudoissa. Tämä paransi tiedon saatavuutta ja lyhensi kyselyiden vastausaikoja.”

Tiivistä tämä viesti seuraavasti: