Teknologian jakaminen

Etupään korkean taajuuden haastattelukysymykset (1)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Usein kysytyt kysymykset etupään JS-haastatteluissa kattavat monia näkökohtia, mukaan lukien perussyntaksin, tietorakenteet ja algoritmit, DOM-toiminnot, asynkronisen ohjelmoinnin, modularisoinnin, kehyksen/kirjaston käytön jne. Seuraavassa on joitain yleisiä JS-haastattelukysymyksiä ja niiden lyhyt analyysi:

1. Peruskielioppi

  • Tietotyypit ja tallennuserot :Mitä tietotyyppejä JavaScriptissä on? Mitä eroa on niiden tallentamisessa muistiin? (Kuten ero primitiivisten tietotyyppien ja viitetietotyyppien välillä)
  • muuttujan ilmoitusvarletconst Mitä eroa? Mikä on niiden laajuus ja elinkaari?
  • Operaattorii++ja++iMitä eroa?breakjacontinueMiten se eroaa, kun sitä käytetään silmukassa?

2. Tietorakenteet ja algoritmit

  • Array-operaatiot : Mitkä ovat yleisesti käytetyt menetelmät taulukoille? (Kutenpushpopshiftunshiftspliceslicejoinsortodota)
  • Syväkopio ja matala kopio : Mitä ovat syväkopio ja matala kopio? Miten ne toteutetaan? (Jos käytätJSON.parse(JSON.stringify(obj)), levitysoperaattori, rekursio ja muut menetelmät)
  • Lajittelualgoritmi: Ymmärrä ja ota käyttöön lajittelualgoritmi (kuten kuplalajittelu, pikalajittelu jne.)

3. DOM-toiminnot

  • Yleiset DOM-toiminnot: Kuinka suorittaa toimintoja, kuten DOM-elementtien valinta, lisääminen, poistaminen, muokkaaminen ja tarkistaminen?
  • innerHTML ja innerText: Mitkä ovat näiden kahden erot ja soveltuvat skenaariot?
  • tapahtuman käsittely :Mikä on JavaScriptin tapahtumamalli? Kuinka ottaa tapahtuman välityspalvelin käyttöön?

4. Asynkroninen ohjelmointi

  • Lupaus : Mikä on Promise? Mitkä ovat sen kolme tilaa?kuinka käyttääPromise.alljaPromise.race
  • Async/Await : Kuinka käyttää async/await-toimintoa asynkronisten toimintojen käsittelemiseen? Miten se liittyy Promiseen?
  • Takaisinsoittotoiminnot ja tapahtumasilmukat: Ymmärrätkö JavaScript-tapahtumasilmukan mekanismin ja kuinka takaisinsoittotoiminnot toimivat?

5. Modulaarisuus

  • ES6 modulaarinen: Ymmärrä ES6:n modulaarinen syntaksi (import/export), ja mitkä ovat sen edut?
  • CommonJS ja AMD/CMD: Ymmärrä ja vertaa CommonJS-, AMD- ja CMD-moduulimäärittelyjen eroja ja soveltuvia skenaarioita.

6. Kehyksen/kirjaston käyttö

  • React/Vue/Angular: Ymmärrä ja vertaa näiden käyttöliittymäkehysten/kirjastojen ominaisuuksia, etuja ja soveltuvia skenaarioita.
  • elinkaari: Mikä on komponenttien elinkaari kehyksissä, kuten React ja Vue?
  • Statushallinta: Kuinka käyttää tilanhallintatyökaluja, kuten Redux tai Vuex, Reactissa?

7. Muut korkean taajuuden ongelmat

  • Prototyypit ja prototyyppiketjut: Ymmärrä JavaScriptin prototyyppi ja prototyyppiketjumekanismit ja niiden toiminnot.
  • tämä avainsana: JavaScriptin ymmärtäminenthisosoitussäännöt ja suorituskyky eri skenaarioissa.
  • Päättäminen: Ymmärrä sulkemisten käsite, toiminta ja käyttöskenaariot.
  • Jätteenkeräysmekanismi: Ymmärrä roskien keräysmekanismi JavaScriptissä (kuten merkki-sweep-menetelmä, viitelaskentamenetelmä jne.).

Esimerkkikysymykset ja analyysi

Esimerkkikysymykset: Selitä prototyyppiketjumekanismi JavaScriptissä.

jäsentää

  • Prototyyppiketju on mekanismi periytymisen toteuttamiseksi JavaScriptissä.
  • Jokaisella esineellä on a__proto__Ominaisuudet (suositus ES6Object.getPrototypeOf()menetelmä), tämä ominaisuus osoittaa sen konstruktoriinprototypeAttribuutit.
  • Käytettäessä kohteen ominaisuutta tai menetelmää, jos ominaisuutta tai menetelmää ei ole itse objektissa, sitä etsitään sen prototyyppiketjua pitkin, kunnes se löydetään tai saavuttaa prototyyppiketjun huipulle (Object.prototype)。
  • Prototyyppiketjun huippu onnull, mikä osoittaa, että prototyyppiobjekteja ei ole enää etsittävä.
  • Prototyyppiketjun avulla voidaan saavuttaa omaisuuden jakaminen ja menetelmien periytyminen objektien välillä.

1. Mitkä ovat JavaScriptin tietotyypit? Mitä eroa niillä on?

vastaus
JavaScriptissä on 8 tietotyyppiä, mukaan lukien perustietotyypit (primitiivityypit) ja viitetietotyypit (viitetyypit).

  • Perustietotyypit
    • Määrittämätön: Määrittelemätön, arvo, kun muuttuja on ilmoitettu, mutta sitä ei ole määritetty.
    • Tyhjä: Nolla-arvo, joka ilmaisee tyhjän objektiviittauksen.
    • Boolean: Boolen tyyppi, jossa on vain kaksi arvoa, tosi ja epätosi.
    • Määrä: Numerotyypit, mukaan lukien kokonaisluvut ja liukulukuluvut.
    • merkkijono: Merkkijonotyyppi, jota käytetään edustamaan tekstidataa.
    • Symboli: Yksilöllinen arvotyyppi, jota käytetään yksilöllisten tunnisteiden luomiseen.
    • BigInt: Suuri kokonaislukutyyppi, jota käytetään edustamaan mielivaltaisen tarkkuuden kokonaislukuja.
  • Viitetietotyyppi
    • Esine: Objektityyppi, joka on perusluokka kaikille JavaScriptin monimutkaisille tietotyypeille, mukaan lukien taulukot (Array), funktiot (Function), päivämäärät (päivämäärä) jne.

Suurin ero primitiivisten tietotyyppien ja viitetietotyyppien välillä on, kuinka ne tallennetaan ja osoitetaan. Perustietotyyppien arvot tallennetaan pinomuistiin ja arvot kopioidaan suoraan määrityksen aikana, kun taas viitetietotyyppien arvot tallennetaan kasomuistiin ja pinomuisti tallentaa viittaukset (eli osoitteet) arvoihin; kasomuistissa, jotka kopioidaan tehtävän aikana.

2. Puhutaanko laajuudesta ja sulkemisesta JavaScriptissä?

vastaus

  • Laajuus : viittaa voimassa olevaan tunnistealueeseen, kuten muuttujiin ja funktioihin koodilohkossa. JavaScriptillä on pääasiassa kaksi laajuutta: globaali laajuus ja paikallinen laajuus (mukaan lukien funktioalue, lohkotason laajuus jne.). Globaalin laajuuden muuttujat näkyvät koko komentosarjassa, kun taas paikallisen laajuuden muuttujia voidaan käyttää vain siinä koodilohkossa, jossa se on määritetty.

  • Päättäminen : tarkoittaa, että funktio muistaa ja pääsee käsiksi leksikaaliseen laajuuteensa, vaikka funktio suoritetaan sen leksikaalisen laajuuden ulkopuolella. Sulkemisen pääasialliset käyttötarkoitukset ovat yksityisten muuttujien kapselointi, moduulien luominen jne. Sulkeminen mahdollistaa funktioiden pääsyn ja manipuloinnin funktion ulkopuolisiin muuttujiin, eivätkä nämä muuttujat ole helposti saastuneita tai muuttuvia edes funktion ulkopuolella.

3. Selitä asynkroninen ohjelmointi ja lupaus JavaScriptissä?

vastaus

  • Asynkroninen ohjelmointi : tarkoittaa, että koodin suoritusjärjestys ei perustu kirjoitusjärjestykseen, vaan määräytyy tiettyjen ehtojen täyttymisen perusteella (kuten verkkopyynnöt, tiedostojen lukeminen ja kirjoittaminen jne.). JavaScript on yksisäikeinen, mutta se toteuttaa asynkronisen ohjelmoinnin tapahtumasilmukoiden ja takaisinsoittotoimintojen kautta.

  • Lupaus : on uusi ES6:ssa esitelty objekti, jota käytetään käsittelemään asynkronisia toimintoja. Lupausobjekti edustaa toimintoa, jota ei ehkä saada valmiiksi nyt, mutta joka valmistuu (tai epäonnistuu) tulevaisuudessa, ja sen tulosarvoa. Lupauksella on kolme tilaa: vireillä (käynnissä), täytetty (onnistui) ja hylätty (epäonnistunut). Promisen avulla voimme kirjoittaa asynkronista koodia synkronisesti, jolloin koodista tulee tiiviimpi, helpompi ymmärtää ja ylläpitää.

4. Puhutaanko tapahtumien kuplittamisesta ja tapahtumien sieppaamisesta JavaScriptillä?

vastaus

  • Tapahtuma kuplii : tarkoittaa, että tapahtuma alkaa kohdeelementistä ja etenee sitten DOM-puun ylimmälle tasolle (eli asiakirjaobjektiin). Tapahtuman kuplitusprosessin aikana minkä tahansa tason DOM-elementit voivat kaapata tapahtuman ja käsitellä sitä.

  • tapahtuman talteenotto : Toisin kuin tapahtumien kupliminen, tapahtuman sieppaus alkaa DOM-puun yläosasta ja etenee sitten kohdeelementtiin. Tapahtuman talteenottoprosessin aikana minkä tahansa tason DOM-elementit voivat kaapata tapahtuman ja käsitellä sitä.

JavaScriptissä voit asettaa tapahtumankäsittelymenetelmän addEventListener-menetelmän kolmannen parametrin kautta, eli käyttää tapahtumakuplaa tai tapahtuman kaappausta. Jos kolmas parametri on tosi, se tarkoittaa tapahtumien sieppauksen käyttöä, jos se on epätosi tai se jätetään pois, se tarkoittaa tapahtumakuplauksen käyttöä.

5. Mitä uusia ominaisuuksia ES6+ sisältää?

vastaus
ES6:ssa (ECMAScript 2015) ja myöhemmissä versioissa on otettu käyttöön monia uusia ominaisuuksia, mukaan lukien, mutta niihin rajoittumatta:

  • anna ja const: Käytetään paikallisten muuttujien ja vakioiden ilmoittamiseen lohkotason laajuudella.
  • nuolitoiminto: Tarjoaa tiiviimmän tavan kirjoittaa funktioita, eikä sido omaa tätä, argumentteja jne.
  • mallimerkkijono: Sallii upotetut lausekkeet ja tukee monirivisiä merkkijonoja.
  • Rakennemuutostehtävä: Mahdollistaa tietojen poimimisen taulukosta tai objektista ja liittämisen ilmoitettuun muuttujaan.
  • Parametrien oletusarvot, muut parametrit ja hajautusoperaattorit: Parannetut toimintoparametrien käsittelyominaisuudet.
  • Lupaa ja asynkronoida/odota: Käytetään asynkronisten toimintojen käsittelemiseen, mikä tekee asynkronisesta koodista tiiviimmän ja helpommin ymmärrettävän.
  • Luokan syntaksi: Tarjoaa syntaktisen sokerin luokille, jotka ovat lähempänä perinteistä olioohjelmointia.
  • Moduulit: Tukee ES6-moduulin syntaksia ja toteuttaa JavaScriptin modulaarisen ohjelmoinnin.