Står du overfor et jobbintervju i Java for drømmejobben? Her er en samling spørsmål og svar som kan forberede deg optimalt.
James Gosling utviklet Java på 1980-tallet. Det er et høynivå programmeringsspråk som følger prinsippene for objektorientert programmering. Java er et av de mest brukte programmeringsspråkene, populært både blant nybegynnere og erfarne utviklere.
Java omfatter begreper som klasser, arv, JSON, iteratorer, oppregninger, volatile variabler, transient, dvalemodus (hibernation), HTTP-tunneling og abstrakte klasser. Språket er inspirert av syntaksen til C++ og C, men det er viktig å være forberedt på de typiske spørsmålene man kan forvente i et intervju.
For å bistå Java-utviklere, presenteres her et utvalg av relevante intervjuspørsmål og tilhørende svar.
Er Java et fullstendig objektorientert språk? Gi en begrunnelse.
Nei, Java er ikke et rent objektorientert språk. Det støtter primitive datatyper som `short`, `byte`, `double`, `float`, `long`, `char` og `boolean`, som ikke er objekter. Likevel innfrir Java mange av de sentrale aspektene ved objektorientert programmering.
Hva er årsaken til at Java er ansett som et plattformuavhengig språk?
Javas uavhengighet av maskinvare og programvare bunner i bruk av en kompilator og et runtime-miljø (JRE). Java-kompilatoren oversetter kildekoden til bytekode (som er plattformuavhengig). Denne bytekoden kan kjøres på ulike operativsystemer, noe som gjør Java svært anvendelig.
Forklar forskjellene mellom JDK, JRE og JVM.
Java Development Kit (JDK) | Java Runtime Environment (JRE) | Java Virtual Machine (JVM) |
JDK er verktøysettet for å dokumentere, kompilere og pakke Java-programmer. Inkluderer verktøy for utvikling i tillegg til JRE. | JRE benyttes for å kjøre Java-bytekode. Inneholder bibliotekene og filene som kreves for å kjøre Java-applikasjoner. | JVM er en abstrakt maskin som tilrettelegger for et kjøremiljø for Java-bytekode. Den er en implementasjon, en spesifikasjon og en runtime-forekomst. |
Inkluderer utviklingsverktøy og JRE. | Den kommer med flere filer og biblioteker, noe som gjør det lettere å bruke JVM. | Implementerer standardutgave, mikroutgave og Java-plattformer for bedriftsutgaver. Står for kodekjøring, verifisering og lasting. |
Beskriv tilgangsmodifikatorer for Java-klasser.
Tilgangsmodifikatorer er nøkkelord som angir tilgjengeligheten til klasser, metoder og variabler. De bestemmer omfanget av tilgang. Her er en oversikt:
protected
– Gir tilgang til felter og metoder innenfor samme klasse, samme pakke og underklasser, men ikke fra andre pakker.private
– Tillater tilgang kun innenfor klassen der feltene eller metodene er definert.public
– Metoden, klassen eller feltet er tilgjengelig fra alle deler av koden.default
(ingen modifikator) – Klasse, felt og metode er tilgjengelig fra samme pakke, men ikke fra andre pakker.
Hva er en lokal variabel og en instansvariabel?
Lokal variabel – En lokal variabel er definert i en konstruktør, en metode eller en blokk, og kan kun brukes der. Lokale variabler har begrenset omfang. En lokal variabel deklarert i en metode er ikke tilgjengelig i en annen metode.
Instansvariabel – Instansvariabler er deklarert i klassen, utenfor metodene, og er tilgjengelige for alle metodene i klassen. De gir en beskrivelse av objektets egenskaper. Endringer i en instansvariabel påvirker kun den aktuelle instansen, ikke andre instanser av klassen.
Hva er JIT-kompilatoren?
Just In Time (JIT)-kompilatoren forbedrer ytelsen av applikasjoner ved å kompilere bytekoden under kjøring. Dette reduserer tidsforbruket. JIT-kompilatoren oversetter koden fra JVM til maskinkode som kan utføres direkte av CPU-en.
Hva er en singleton-klasse i én setning?
En singleton-klasse er en klassetype som sikrer at det kun eksisterer én instans (ett objekt) av klassen til enhver tid.
Hva betyr objektkloning?
Objektkloning innebærer å opprette en identisk kopi av et Java-objekt. Utviklere benytter `clone()`-metoden for å implementere `java.lang.Cloneable`-grensesnittet.
Hva er en konstruktør?
Konstruktører er kodeblokker med samme navn som klassen, og de brukes til å initialisere et objekt. Et objekt opprettes automatisk ved bruk av en konstruktør. Konstruktører har ingen returtype, og finnes i to hovedtyper:
- Parametrisert konstruktør – En konstruktør som tar argumenter og initialiserer instansvariabler med de spesifiserte verdiene.
- Standardkonstruktør – En konstruktør uten argumenter, som initialiserer instansvariabler med standardverdier. Denne opprettes automatisk dersom ingen andre konstruktører er definert.
Hva er forskjellen mellom `==` og `equals()` i Java?
Likhetsoperatoren (`==`) brukes til å sammenligne primitive datatyper og objektreferanser i Java. `equals()`-metoden, som tilhører `Object`-klassen, er en metode som brukes til å sammenligne innholdet i objekter. `equals()` i `Object`-klassen fungerer som `==`, men den kan overskrives i klassene, for å definere sammenlikning av objektdata.
Hva er forskjellene mellom `TreeSet` og `HashSet`?
TreeSet | HashSet |
Opprettholder elementene i sortert rekkefølge. | Elementene er ikke lagret i sortert rekkefølge. |
Tillater objekter av ulike typer (heterogene objekter), forutsatt at de implementerer `Comparable`-grensesnittet. | Tillater ikke objekter av ulike typer, dersom det ikke er definert en `Comparator` for sortering. |
Implementerer `SortedSet`-grensesnittet, og benytter trær for datalagring. | Implementert gjennom en hash-tabell. |
Forklar initialisering med dobbel klammeparentes.
Initialisering med dobbel klammeparentes kombinerer to separate prosesser. Det opprettes en anonym intern klasse, og en initialiseringsblokk. «this»-pekeren i den indre klassen henviser til den ytre klassen under initialiseringen.
Hva er Java String Pool?
Java String Pool er en samling av strenger som er lagret i heap-minnet. Når en ny streng opprettes, undersøker String Pool om en streng med samme verdi allerede eksisterer. Hvis den finnes, returneres den eksisterende referansen, i stedet for å skape et nytt objekt. Hvis ikke, opprettes en ny streng i poolen.
Hva menes med en samlingsklasse i Java?
En samlingsklasse representerer et rammeverk for manipulering og sortering av grupper av objekter. Samlinger legger til rette for oppgaver som sletting, søking, manipulering, sortering, redigering og innsetting, og inkluderer metoder, klasser og grensesnitt.
Avsluttende ord
Java er et veletablert programmeringsspråk med et omfattende bibliotek og sterke verktøy. Språket tilbyr støtte for flertrådet programmering for å løse samtidighetsproblemer, og kombinerer stabilitet med brukervennlig syntaks.
Dersom du ønsker å utvikle din Java-kompetanse, kan du vurdere å melde deg på et av de mange tilgjengelige online Java-kursene.