DIP Flashcards

1
Q

Hvordan fungerer Bubble Sort algoritmen?

A

Bruges til at sortere en liste. Starter ved index 0, hvis’ værdi sammenlignes med værdien på index 1. Hvis den første værdi er størst, bytter de plads. Sådan fortsættes der hele vejen igennem listen. Hvis listen ikke er sorteret efter første gennemløb, løbes den igennem igen. Sådan fortsætter det til listen er sorteret.

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

Hvordan fungerer en binær søgning?

A

Bruges til at søge efter specifikt element i en sorteret liste. Midten af listen findes, herefter undersøges det om den eftersøgte værdi er større eller mindre end midten. Hvis større, bliver midten til det nye startpunkt. Hvis mindre, bliver midten til det nye slutpunkt. Sådan halveres listen igen og igen indtil elementet findes.

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

Hvordan fungerer merge sort algoritmen?

A

Den usorterede liste splittes til dens mindste bestanddel, altså til hver sub-liste er 1 værdi lang. Herefter merges sublisterne sammen samtidig med at de sorteres.

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

Hvordan fungerer quick sort algoritmen?

A

Der vælges en “pivot” værdi i den usorterede liste som bliver sammenligningsgrundlaget for de andre værdier i listen. Herefter tages første værdi i listen, og det undersøges om denne er større eller mindre end pivot. Er den mindre placeres den i en ny liste bestående af tal mindre end pivot. Omvendt hvis den er større. Dette gentages så for sublisterne, indtil disse er sorteret, hvorefter sublisterne og pivot sammensættes til den samlede sorterede liste.

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

Hvordan fungerer Dijkstra’s algoritme? Hvilke elementer er vigtige hvis man skal implementere algoritmen?

A

Bruges til at finde den korteste afstand fra en node til alle andre noder i en graf.

For at implementere algoritmen skal man vedligeholde en liste af besøgte noder, nodernes naboer og deres vægt, samt en samlet liste af hver node og deres KORTESTE vej til startnoden.

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

Hvorfor bruges “let” og ikke “var” til at definere en variabel?

A

Fordi en variabel deklareret med var hoistes til funktionens, eller programmets, start. Det gør en let variabel ikke, den eksisterer først på/efter den linje hvor den er deklareret.

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

Hvad er forskellen på operator === og operator == i javascript?

A

== undersøger om to værdier er lig med hinanden og === undersøger om to værdier er helt ens

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

Hvad vil det sige at funktioner er “first class elementer” i JS?

A

Dvs. funktioner kan være værdien af
variable, konstanter og parameter, samt returneres af funktioner

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

Hvad er forskellen på en navngivet, anonym og arrow funktion?

A

Ingen funktionel forskel. En navngivet funktion har et navn. En anonym funktion deklareres som en navngivet, men får intet navn. En arrow funktion deklareres ikke som de øvrige, og bliver i stedet deklareret med “pil”

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

Hvad er særligt ved en navngiven funktion?

A

Den hoistes til starten af programmet, eller til funktionen (hvis den selv er en lokal funktion - altså en funktion i funktionen)

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

Hvad er en closure?

A

En lokal funktion (en funktion i en anden funktion) har en kopi af den ydre funktions variable og parametre. Det betyder, at den lokale funktion har sin egen private hukommelse.

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

Hvad er definitionen på en højere ordens funktion?

A

En højere orden funktion er en
funktion der enten tager en(eller
flere) funktion(er) som argument
og eller returnerer en funktion

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

Hvilke metoder er tilgængelige i et form element kontra ved brugen af fetch?

A

Ved brug af form elementer er metoderne “get” og “post” til rådighed. Ved brug af fetch er både “get”, “put”, “post” og “delete” tilgængelig.

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

Hvordan bruges fetch på klient siden og express på server siden, til at håndtere et post request (f.eks ved login)?

A

Når et event opstår (f.eks tryk på knap) bruges fetch i en js fil på klientsiden til at definere destinations url, metode og payload. Denne funktion videresender dens information til et endpoint på serversiden, som bruger payloaded (f.eks til at gemme i database). Herefter sender endpointet en besked tilbage til fetch funktionen på klient siden, som så herefter kan render noget på en HTML side.

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

Hvad er et form element?

A

En formular der bruges i HTML. Den definerer destinations url og metoden (post eller get), og indeholder desuden andre form elementer (såsom input, label, select osv.)

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

Hvornår bruges et form element?

A

Enten når man ønsker at redirecte til en anden side (eller at render den nuværende side igen - men med ændringer) på baggrund af et event. Eller når man ønsker at videresende information til en server.

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

Hvornår bruges de forskellige HTML metoder? (get, put, post og delete)

A

Get: Når man ønsker at hente en ressource
Put: Når man ønsker at opdatere en ressource
Post: Når man ønsker at tilføje en ressource
Delete: Når man ønsker at slette en ressource

18
Q

Hvis du skulle lave en RESTful web service med express og javascript, hvordan ville du så gøre?

A

Bruge fetch på klientsiden til at definere HTTP metoden, og have et tilsvarende endpoint på serversiden med express.

19
Q

Hvad er et promise?

A

En promise er et objekt, der repræsenterer en asynkron funktions returnerede værdi

20
Q

Hvilke tre stadier kan et promise være i?

A
  • En starttilstand, hvor værdien endnu ikke er returneret
  • En sluttilstand, hvor værdien er et positivt resultat
  • En sluttilstand, hvor værdien er en fejl eller exception
21
Q

Hvad er forgængeren for et promise? Og hvad kendetegner den?

A

Et callback - som er en funktion der fortsætter udførelsen, når dens ydre asynkrone funktion selv er blevet udført.

22
Q

Hvordan kommer et promise i sin sluttilstand?

A

Ved kald af funktionerne resolve(resultat) eller reject(fejl) - eller i tilfælde af en exception

23
Q

Hvilke metoder er tilknyttet et promise? Og hvad tager disse metoder imod?

A

Metoderne .then() og .catch() bruges på et promise. Metoderne tager imod eventhandlers then(onResultat) og catch(onFejl) - disse eventhandlers returnerer enten en returværdi, eller et nyt promise. (Afhænger af hvad eventhandleren gør)

24
Q

Hvad er asynkron programmering i javascript? Hvorfor er det relevant at bruge?

A

Javascript er “single threaded” - dermed er der kun en tilgængelig tråd.
Asynkron programmering opnås ved brug af asynkrone funktioner. En asynkron funktion kan igangsættes før en anden er færdig, men fordi javascript er single-threaded, er det stadig kun en funktion der eksekveres på et givent tidspunkt. I stedet springes der rundt mellem de forskellige funktioner, så det opleves som om de kører samtidig.

25
Q

Hvad bruges async/await til?

A

Async/await bruges til asynkron programmering. Async refererer til, at funktionen er asynkron og at den returnerer et promise, mens await refererer til, at der ventes på, at kaldet færdiggøres og et resultat returneres.

26
Q

Hvad er en RESTful webservice? Hvad betyder det at den er RESTful?

A

Er en webserver der både kan returnere en HTML side, JSON eller XML filer.

Web serveren er stateless. Den husker ikke noget om hvad der er foregået forinden - det er klienten der skal huske hvad der er sket.

27
Q

Hvad er en session? Hvornår er det relevant at bruge?

A

En session er det samme som en cookie. Den modarbejder det faktum, at en http server er stateless, ved at tildele et cookie ID til klienten. På dette cookieID er tilknyttet et sessionID, og en eller flere session filer. En session fil indeholder den data som serveren skal huske.
Dette er relevant at bruge hvis man ønsker at serveren skal huske klientens historik.

28
Q

Hvad er salt? Hvornår bruges det og hvorfor?

A

Salt er en tekststreng der indsættes et selvvalgt sted i eks. Et password inden dette bliver hashet. På den måde er sandsynligheden for, at kodeordet bliver gættet meget mindre.

29
Q

Hvad er middleware i en javascript applikation?

A

Noget kode der eksekveres hver gang et endpoint kaldes - hvis de rigtige betingelser (som programmøren bestemmer) er til stede. Altså undersøger compileren ved hvert request, om der er noget middleware der bør eksekveres. Hvis ja, gøres dette inden det givne endpoint eksekveres.

30
Q

Hvad er endpoints i en javascript applikation?

A

Funktioner som kan kaldes på baggrund af et request, og som altid eksekveres efter eventuel middleware.

31
Q

Hvad er en UUID? Hvor bruger vi den som udgangspunkt?

A

En unik identifikationskode. Vi bruger den som salt i en js applikkation.

32
Q

Hvad er JSON? Hvordan kan man genkende en JSON fil?

A

JSON er en tekstuel repræsentation af et JavaScript objekt.

En JSON fil kan genkendes ved, at alle keys (i et key:value par) skrives som tekststrenge.

33
Q

Hvad er prototypisk nedarvning? Hvordan adskiller det sig fra klasse nedarvning?

A

Et hvert objekt har en prototype. Denne prototype kan sagtens have en anden prototype, osv. Dermed arver objektet alle properties og metoder fra sin(e) prototype(r).

Hvis man for et enkelt objekt ændrer i en arvet property eller metode, er denne ændring kun gældende for dette objekt. Den arvede prototype forbliver dermed uændret.

Hvis man kalder en metode på et objekt der ikke har metoden i sin egen prototype, vil compileren gå videre til næste prototype i hierarkiet for at finde metoden. Dette kan fortsætte helt tilbage til prototypen af Object (som er roden).

34
Q

Hvordan kan man kende en constructor funktion i js?

A

At funktionens navn står med stort.

35
Q

Hvad er klasse notation i js?

A

En notation der bruges til at opnå den klassiske opbygning vi kender fra eks. Java.

Her defineres en klasse, en constructor og de ønskede metoder.

Der er ingen forskel på eksekveringen af koden - det er blot “syntaktisk sukker”.

36
Q

Hvordan fungerer det når man angiver en static variabel eller funktion/metode til en “klasse”?

A

Hvis en metode eller variabel er static i en klasse, kobles den på constructoren. Dermed kan den kun tilgås gennem constructoren. Eks: Person.staticMetode() eller Person.staticVariabel

37
Q

Hvis en “klasse” Student nedarver fra en “klasse” Person, hvordan kan man så ændre en metode i Person “klassen” gennem Student?

A

Med funktionen: Object.getPrototypeOf(Student.prototype) findes Person constructoren/prototypen. Herefter kan følgende gøres:
Object.getPrototypeOf(Student.prototype).getMethod = () => {
console.log(“I have changed the method in Person class”);
}

38
Q

Hvis en “klasse” Student nedarver fra en “klasse” Person, hvorfor kan Person prototypen så ikke tilgås med Student.prototype.prototype ?

A

Student.prototype virker fordi en constructor funktion har en ‘prototype’ variabel. Resultatet af kaldet er Students’ prototype, som er et normalt javascript objekt. Denne har ingen ‘prototype’ variabel, og derfor returnerer Student.prototype.prototype undefined.

39
Q

En “klasse” Student nedarver fra en “klasse” Person, og der oprettes et ny instans af Student kaldet student. På student instansen ændres en nedarvet metode fra Person. Hvis der nu oprettes endnu en instans af Student, har denne så også den ændrede metode?

A

Nej, ændringer i et objekts metoder berører kun det specifikke objekt. Hvis det er ønsket at ændre en metode for alle fremtidige objekter, skal metoden ændres på Person.prototype.

40
Q

Hvordan laver man en privat variabel eller metode i en “klasse”? Hvad betyder det at den er privat?

A

Med # som fortegn foran variablen eller metoden.
ved brug af nyere versioner af Node.js er det ikke muligt at tilgå en privat variabel/metode udenfor dens klasse. Men med andre og ældre versioner, bliver variablen/metoden ikke reelt privat. I stedet er brugen af # blot en indikation til andre udviklere om, at variablen/metoden bør håndteres som privat. Dermed er # egentlig mest en navngivnings konvention.