Sp?rsm?l til eksamen
Her finner du en liste med sp?rsm?l som du kan bli spurt om. Du kan ogs? bli spurt om andre sp?rsm?l men dersom du klarer ? svare p? alle disse vil vi si at du er godt forberedt.
Sp?rsm?l om Pensum
Git
- Hva er Git og hvorfor er Git nyttig?
- Kan du forklare de vanligste Git-kommandoene du har brukt?
- Du b?r kunne
add
, commit
, push
og pull
.
- Hva er en pull request?
- Hva er en Git gren (engelsk: branch)?
- Hva er form?let med en
.gitignore
-fil?
- Hvordan oppst?r Git-konflikter?
- Hva er en Git commit-melding og hvorfor er de viktige?
Testing og kodestil
- Hvorfor b?r man teste koden?
- Hva er en enhetstest?
- Hva er test-dreven utvikling?
- Si du har en funksjon
sinus(x: float) -> float
:
- Hvordan ville du testet funksjonen?
- Hvordan ville du h?ndtert brukerfeil?
- Hva er parametriserte tester?
- Hva m? man passe p? n?r man tester at to tall er like?
- Er det forskjell p? om vi sammenligner heltall og flyttall?
- Hva legger man i begrepet kodestil?
- Hva menes med dokumentasjon i programmering?
C++
- Nevn noen forskjeller mellom Python og C++ som programmeringsspr?k.
- I C++ m? man spesifisere typen p? variabler. Er det noen fordeler med det?
- Hva er en kompilator?
- Hva er en referanse-variabel?
- Hva er en peker? Hva kan man si om f?lgende funksjoner basert p? signaturen?
double function(double*)
double* function(double, double, int)
void function(double*, int)
int& function(int, bool)
- Parametre til en funksjon:
- Hva er call by value?
- Hva er call by reference?
- Hvordan gj?res dynamisk minneallokering i C++?
- Hva er en destrukt?r?
- Hvordan kan en minnelekkasje oppst??
- Gitt en heltallsvariabel
bar
.
- Hvordan kan du opprette en peker
foo
til bar
?
- Hvordan kan du hente ut heltallet fra pekeren
foo
? Og,
- hva heter dette?
- Hva er funksjons-overlasting (egelsk: function overloading)?
- Hvordan kan man printe noe til terminalen i et C++-program?
- Klasser:
- Hva er forskjellen mellom
private
og public
?
- Hva er forskjellen p?
class
og struct
?
- Hva betyr det hvis vi skriver
using namespace std
?
- Hvordan er pekere og arrays relatert?
- Gitt et array
double arr[3] = {1.2, 1.3, 1.4}
:
- Hvis
double y = arr[1]
og man utf?rer y += 0.4
, hva er n? verdien til arr[1]?
- Hvis
double &z = arr[2]
og man utf?rer z += 0.4
, hva er n? verdien til arr[2]?
- Gitt et array
int r[3] = {5, 4, 3}
:
- Hva gir
*(r + 1)
?
- Gitt pekeren
auto *y_ptr = &r[1]
. Hva er y_ptr + 1
?
- Hva er et skop?
- Hvordan er skop relatert til dynamisk minneallokering?
- Gitt
Gridpoint
-objektet start
med medlemsvariabler x
, y
og z
:
- Hvordan kan du hente ut
x
fra start
?
- Gitt
Gridpoint* ptr = &start
, hvordan kan du hente ut x
fra ptr
?
Algoritmeanalyse
- Kan du forklare i grove trekk hva vi mener med kostnad?
- Hva menes med stor-O notasjon?
- Hva vil det si at en algoritme er ?(N2)?
Kodeoptimalisering
- Nevn noen teknikker man kan bruke for ? gj?re koden mer effektiv.
- Hvorfor er operasjoner i NumPy raskere enn operasjoner i ren Python?
- Hva b?r man gj?re f?r man starter ? optimalisere koden?
- Hva er forskjellen p? I/O-begrensede (I/O bounded) og CPU-begrensede (CPU bounded) problemer?
- Hva vil det si ? kj?re kode i parallell?
- Hva slags bibliotek kan vi bruke om vi ?nsker ? parallellisere koden v?r i Python?
Objektorientert programmering i Python
- Hva er en attributt? Forklar f?lgende begreper:
- Metoder: Instansmetoder, klassemetoder og statiske metoder.
- Datafelt: Instansvariabler og klassevariabler.
- Magiske metoder (som f.eks
__add__
):
- Hva brukes magiske metoder til?
- Gi eksempler p? andre magiske metoder.
- Kan man lage private attriubutter i Python?
- Forklar bruk av
@property
og @<datafield>.setter
- Hva betyr begrepet innkapsling i OOP?
- Hva betyr begrepet abstraksjon i OOP?
- Hva betyr begrepet polymorfisme i OOP?
- Hva betyr begrepet arv i OOP?
- Hvordan implementerer man arv i Python?
- Hvordan kan man kalle p? metoder i superklassen fra subklassen?
- Hva kjennetegner en abstrakt klasse i Python?
- Hva er et navnerom (engelsk: namespace) i Python?
Tilfeldige tall
- Hva er en pseudo-tilfeldig tallgenerator (pRNG)?
- Hva er egenskapene til en god pRNG?
- Hva er hensikten med ? bruke et
seed
(fr?)?
- Hva er virrevandring (engelsk: random walk)?
- Hva er en Markovkjede?
- Forklar hvordan man kan gj?re en stokastisk simulering av en Markovkjede.
- Hva er sammenhengen mellom de store talls lov og stokastiske simuleringer?
- Hva vil det si at et system er stokastisk / deterministisk
- Kan man bruke stokastiske simuleringer til ? bestemme deterministiske egenskaper?
Prosjektene
Generelt
- Hvordan har du jobbet for ? oppn? god kodestil?
- Har du opplevd noen rare bugs i kurset?
- Hva var buggen?
- Hvordan gikk du frem for finne ut av l?se problemet?
- Hvilket prosjekt syns du var vanskeligst?
Prosjekt 1 - Dobbelpendel
- Hvordan ble systemene av ordin?re differensialligninger (ODE) l?st?
- Hvordan ble ligningssystemene satt opp?
- Hvordan ble ODE’ene l?st?
- Hvordan ble resultatene lagret?
- Hvordan ble objektorientert programmering brukt i prosjektet?
- Hvis man implementerer en
__call__
-metode, hvordan kan man bruke denne?
- Hva ble
__call__
-metoden brukt til i klassene?
- Skriv en skisse av en av enhetstestene fra prosjekt 1 p? tavlen.
- Hva var hensikten ved ? f?rst implementere
ODEModel
og deretter la ExponentialDecay
, Pendulum
og DoublePendulum
arve fra denne?
- Forklar hvordan dere testet at dere l?ste ODE’ene riktig
- Hvordan testet du plotte funksjonen?
- P? hvilken m?te ble polymorfisme brukt i prosjekt 1?
Prosjekt 2 - Lister i C++
- Sp?rsm?l om enten array-lister eller lenkede lister:
- Forklar datastrukturen til listen i grove trekk.
- Hvordan lagres elementene i listen?
- Skriv en skisse av metoden
append
p? tavlen.
- Nevn noen attributter som b?r v?re
private
.
- Nevn noen attributter som b?r v?re
public
.
- Hva er fordelene med denne type liste?
- Hva er ulempen med denne typen liste?
- Hvordan gikk du frem for ? teste listen?
- Gi et eksempel p? et sted koden din kaster et unntak (engelsk: exception).
- Hva gj?r metoden
resize
i ArrayList
?
- Angi (og begrunn) kj?retiden til
append
, insert
og pop
for:
ArrayList
som er full.
ArrayList
som er ikke er full.
LinkedList
med eller uten tail
.
- Hva er forskjellen p? en enkelt-lenket og en dobbel-lenket liste
- Hva er forskjellen p? en enkel-lenket og en dobbel-lenket liste?
- Hvilken type ble implementert i prosjekt 2?
- Hvordan gikk du frem for ? teste listene dine?
- Du blir bedt om ? lage en metode med signaturen
int& operator[](int)
- Hva gj?r denne metoden?
- Hva betyr
&
i dette tilfellet?
- Du blir bedt om ? overloade konstrukt?ren med metoden
LinkedList(std::vector<int>)
- Hva betyr det ? overloade?
- Hva gj?r denne metoden?
- Hvordan er den forskjellig fra den andre konstrukt?ren?
- Hvordan ble smarte pekere brukt i prosjektet?
- Hva er forskjellen p? en smart og en r? peker?
Prosjekt 3 - Kaosspill
- Kan du forklare i grove trekk hvordan kaosspillet fungerer?
- Hvordan lager vi selve plottet?
- Kan du forklare hvordan vi velger et tilfeldig startpunkt innenfor den regul?re N-kanten?
- I 1e) blir du bedt om ? plotte trekanten i r?dt, gr?nt og bl?tt.
- Hvordan g?r du frem for ? tilordne en farge til hvert punkt?
- Hvordan ser figuren ut i disse fargene?
- I 1f) blir du bedt om ? lage figuren i farger p? en annen m?te
- Hva er forskjellene i fremgangsm?ten i 1e og 1f?
- Hvordan blir figuren seende ut denne gangen?
- N?r du generaliserer problemstillingen introduserer vi to parametere,
n
og r
.
- Hva er disse to parametrene?
- Hvordan gikk du frem for ? finne hj?rnene i en regul?r n-kant?
- Hva slags enhetstester skrev du i 2h)?
- Du ble bedt om ? lage en klasse
AffineTransform
:
- Hva gjorde denne klassen?
- Hva slags metode implementerte du?
- I 3c) m? vi tilfeldig plukke ut en av fire funksjoner i hver iterasjon.
- Var det uniform sannsynlighet?
- Forklar hvordan du plukket ut funksjonene tilfeldig.
- Beskriv plottet i oppgave 3.
- Hva brukes klassen
Variation
til?
Publisert 14. nov. 2022 15:21
- Sist endret 14. nov. 2022 15:21