JS jobbintervju Flashcards

1
Q

Vad är skillnaden mellan null och undefined?

A

null används för att indikera frånvaro av värde, undefined betyder att en variabel inte har tilldelats ett värde ännu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Vad är skillnaden mellan let, const och var när du deklarerar variabler?

A

let och const är blockomfattande och har blockscope, medan var har funktionsscope. let kan ändras, const är konstant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Vad är en closure?

A

En closure är en funktion tillsammans med den omgivande omfattningen av variabler.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Vad är skillnaden mellan synkron och asynkron kod?

A

Synkron kod körs i sekvens.
Asynkron kod kan utföras parallellt och väntar inte på att en uppgift ska slutföras innan den går vidare.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Vad är prototypkedja (prototype chain) och hur fungerar det i JavaScript?

A

Prototypkedjan är en mekanism för att söka efter egenskaper i objekts prototyp och dess prototypkedjor. Om en egenskap inte hittas i objektet söks det i dess prototyp och så vidare.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

När används en callback-funktion oftast?

A

Den används i asynkron kod för att hantera resultatet av en uppgift.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Vad är en IIFE (Immediately Invoked Function Expression)?

A

En IIFE är en funktion som definieras och omedelbart körs.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Hur väljer du ett element med JavaScript?

A

querySelector och getElementById

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Hur lägger du till en händelselyssnare på ett HTML-element?

A

Använd addEventListener för att lägga till en händelselyssnare på ett HTML-element. Det tar två argument: typen av händelse och en funktion som ska köras när händelsen inträffar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Vad är event bubbling och event delegation?

A

Event bubbling är när en händelse sprider sig genom DOM-trädet från det mest specifika elementet upp till dokumentet.

Event delegation är att placera en event listener på en gemensam förälder för att hantera händelser på dess barn. Det minskar antalet lyssnare och fungerar bra för dynamiskt skapade element.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Vad är arrow-funktioner och vad skiljer dem från vanliga funktioner?

A

Anonyma funktioner med kortare syntax.
Binder inte sitt eget this, vilket gör dem användbara i vissa sammanhang för att undvika problem med scopet av this.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Vad är destructuring?

A

Destructuring är en teknik som gör det möjligt att extrahera värden från objekt och arrayer och tilldela dem till variabler.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Hur används promises för att hantera asynkron kod?

A

Genom att representera resultatet av en asynkron operation. Det gör det möjligt att skriva kod som ser ut som synkron kod.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Vad är skillnaden mellan map(), filter() och reduce()?

A

map() gör något med varje element i en array och returnerar en ny array med de nya värdena.

filter() filtrerar element i en array baserat på ett villkor och returnerar en ny array.

reduce() används för att reducera arrayen till ett enda värde genom att applicera en funktion på varje element.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Vad står AJAX för?

A

AJAX står för Asynchronous JavaScript and XML.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Nämn 2 sätt att göra ett HTTP GET-anrop med JavaScript?

A

fetch() eller XMLHttpRequest

fetch() är en modern metod som returnerar en Promise som innehåller svaret från servern.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Vad är ett CORS-problem och hur kan det lösas?

A

CORS (Cross-Origin Resource Sharing) är en säkerhetsåtgärd som hindrar obehörig dataåtkomst över olika domäner.

Ställ in servern för att tillåta åtkomst från specifika domäner med hjälp av HTTP-headers.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Skillnad mellan Angular, React och Vue?

A
  1. Angular: ramverk för att bygga stora och komplexa applikationer.
  2. React: js-bibliotek för att bygga användargränssnitt med fokus på komponentbaserad utveckling.
  3. Vue: progressivt ramverk som är lätt att integrera och använda.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Vad är virtual DOM i React?

A

Virtual DOM är en virtuell representation av den riktiga DOM-strukturen i minnet.

20
Q

3 punkter för att beskriva konceptet “state” i React-komponenter?

A
  1. Intern data som kan ändras i en React-komponent.
  2. När state ändras, renderas komponenten om och visar den nya datan.
  3. State används för att hålla reda på komponentens tillstånd och uppdateras vanligtvis med setState()-metoden.
21
Q

XSS-attack (Cross-Site Scripting) och hur kan du förhindra det?

A

XSS: skadlig kod injiceras i en webbsida för att stjäla information från användare.

Förhindras genom:
1. Validera och escapera användargenererad indata
2. Använda Content Security Policy (CSP) för att begränsa exekvering av skript.

22
Q

Vad är en CSRF-attack (Cross-Site Request Forgery) och hur kan du skydda en applikation från det?

A

CSRF är en attack där en obehörig hemsida försöker komma åt en annan webbplats där användaren redan är inloggad.

Kan förebyggas genom anti-CSRF tokens, som genereras och kontrolleras för varje request.

23
Q

Vad är enhetstestning?
Hur kan du utföra enhetstester för JavaScript-kod?

A

Att testa enskilda enheter av kod (funktioner eller metoder) för att säkerställa att de fungerar som förväntat.

Kan utföras med testramverk som Jest eller Mocha genom att skriva testcase som kontrollerar funktionernas resultat och beteende.

24
Q

Nämn 3 verktyg för att felsöka JavaScript-kod?

A
  1. Webbläsarkonsolen för att inspektera variabler och logga meddelanden.
  2. Google Chrome DevTools eller Firefox Developer Tools, kan också användas för att stega igenom koden och identifiera fel.
  3. Linters
25
Q

Vad är hoisting?

A

Hoisting är mekanismen där JavaScript flyttar deklarationer av variabler och funktioner till toppen av deras scope innan koden körs.

26
Q

Vad är lexical scoping?

A

Det avgör utvärderingen av variabler baserat på var en funktion skapas funktions-hierarkin.

Inre funktioner har åtkomst till yttre funktioners variabler, oavsett om den yttre funktionen slutat exekvera.

27
Q

Vad är en generator-funktion och hur används den?

A

En generator-funktion är en speciell typ av funktion som kan pausa sin exekvering och återupptas senare. Den används med nyckelordet yield för att generera värden stegvis och asynkront.

28
Q

Hur skrivs spread-operatören?

A

(…)

29
Q

3 sätt att använda spread-operatören i JavaScript?

A
  1. Skapa kopior av arrayer eller objekt
  2. Kombinera arrayer eller objekt
  3. Sprida argument till funktioner.
30
Q

Vad är skillnaden mellan “==” och “===”?

A

== jämför värden efter typkonvertering, medan === jämför värden utan typkonvertering och kräver att både värde och typ är lika.

31
Q

Vad är memoization och hur kan det förbättra prestandan?

A

Memoization är en teknik där funktionens resultat sparas baserat på dess inmatning.

Om samma inmatning används igen, returneras det sparade resultatet istället för att beräkningen görs igen, vilket förbättrar prestanda.

32
Q

Vad är Webpack?

A

Webpack är en modulbyggare och buntare för webbapplikationer.

33
Q

Vilka tre saker används Webpack för?

A
  1. hantera beroenden,
  2. kompilera och optimera koden
  3. skapa buntade filer som används i webbapplikationen.
34
Q

Vad är lazy loading?

A

Lazy loading är en teknik där resurser, som bilder eller komponenter, laddas först när de behövs.

35
Q

Varför är lazy loading användbart i webbapplikationer?

A

Det förbättrar prestandan genom att fördröja laddningen av icke-essentiella resurser och snabbar upp initial sidbelastning.

36
Q

Vad är WebSockets?

A

WebSockets är en teknik som möjliggör tvåvägskommunikation mellan webbläsaren och servern över en enda TCP-anslutning.

37
Q

2 fördelar med destructuring?

A
  1. Det hjälper till att skriva renare kod
  2. Undvika upprepade referenser till samma objekt eller array.
38
Q

Vad användes IIFEs för?

A

Undvika namnkonflikter med andra kodblock genom att skapa en ny omfattning för att isolera variabler.

Kan istället göras genom att använda let, const och es moduler.

39
Q

vad gör querySelector och getElementById?

A
  1. querySelector använder CSS-selektorer för att matcha element
  2. getElementById väljer ett element med dess unika ID
40
Q

Skillnad på querySelector() och querySelectorAll()?

A

querySelector = första matchen
querySelectorAll = alla matchade element i en NodeList

41
Q

Hur använder React virtual DOM?

A

Genom att hålla en representation av DOM-strukturen i minnet kan React göra ändringar i minnet och sedan uppdatera den riktiga DOM:en enbart för de faktiska ändringarna, vilket ger förbättrad prestanda.

42
Q

Tre anledningar att är closures användbara?

A
  1. funktioner kan komma åt variabler utanför sin egen omfattning
  2. för att skapa privat data och
  3. bibehålla variabler mellan anrop.
43
Q

Hur skiljer sig WebSockets från HTTP-protokollet?

A

WebSockets tillåter kontinuerlig och interaktiv kommunikation mellan klient och server.

HTTP är stateless och kräver upprepade anrop.

44
Q

Vad används AJAX för?

A

Göra asynkrona HTTP-anrop i bakgrunden utan att behöva ladda om hela sidan. Det gör det möjligt att uppdatera innehållet på sidan utan att användaren märker det.

45
Q

Skillnaden på AJAX och fetch()

A

AJAX är en äldre teknik som använder XMLHTTPRequest-objekt för att göra asynkrona begäranden till en server.

Fetch är en modernare API som erbjuder en enklare och mer flexibel metod för att göra liknande begäranden genom att använda Promise-baserade fetch() -funktionen.