Hvis du noen gang har forberedt deg på et intervju for en Java-programmererstilling eller bestått en sertifiseringseksamen (ikke nødvendigvis om programmering), så har du sannsynligvis allerede lagt merke til at spørsmålene som stilles der er veldig spesifikke. Mange av dem tvinger deg til å tenke på språkets design. Noen er designet for å undersøke dybden av kunnskapen din. Det er spørsmål som ser mer ut som gåter enn noe annet, mens andre forholder seg til nyanser av språket som er svært vanskelig å oppfatte uten øvelse. I denne artikkelen presenterer utvikler Sarans Sing noen få slike spørsmål om Java. Med svar, selvfølgelig.
1. Hva skjer hvis jeg legger en retursetning eller System.exit() i en try/catch-blokk? Dette er et veldig populært og subtilt Java-spørsmål. Trikset er at mange programmerere tror at blokken

finally
alltid blir utført. Ved å plassere et return
utsagn i en try/catch
blokk eller ringe System.exit()
fra innsiden av en try/catch
blokk, sår spørsmålet tvil om denne troen. Svaret på dette vanskelige spørsmålet er: blokken finally
vil bli utført når en return
setning er plassert i en try/catch
blokk, men vil ikke bli utført når System.exit()
den kalles opp fra en try/catch
blokk. 2. Støtter Java multippel arv? Dette er et veldig vanskelig spørsmål. Intervjuere spør ofte: "Hvis C ++ støtter direkte multippel arv, hvorfor kan ikke Java?" Svaret _er litt mer komplisert enn det kan virke, siden Java støtter arv av flere typer. Tross alt kan et Java-grensesnitt utvide andre grensesnitt. Når det er sagt, støtter ikke Java flere implementeringer. 3. Hvis en metode i en overordnet klasse kaster NullPointerException
s, kan den overstyres av en metode som kaster RuntimeException
s? Dette er et annet vanskelig spørsmål knyttet til overbelastning og overstyring. Svar: En overstyrt metode kan trygt kaste NullPointerException
sin overordnede klasse - RuntimeException, men du kan ikke gjøre det samme med en avmerket unntakstype som Exception
. 4. Hvordan garanterer du at N
tråder kan få tilgang til N
ressurser uten stopp? Hvis det ikke er din sterkeste å skrive flertrådskode, kan du virkelig snuble over dette spørsmålet. Det kan være vanskelig selv for en erfaren programmerer som ikke har støtt på vranglås og løpsforhold. Hele trikset her er i rekkefølgen: du kan forhindre deadlocks ved å frigjøre ressurser i motsatt rekkefølge som de ble anskaffet. 5. Hva er forskjellen mellom klassene StringBuffer
og StringBuilder
i Java? Dette er et klassisk Java-språkspørsmål som noen utviklere synes er vanskelig og andre - veldig enkelt. Klassen StringBuilder
dukket opp i JDK 1.5. Den eneste forskjellen mellom disse klassene er at StringBuffer
metodene, som length()
, capacity()
, og append()
, er synkronisert, mens de tilsvarende metodene iStringBuilder
er ikke. Denne grunnleggende forskjellen betyr at strengsammenkobling er raskere med StringBuilder
enn med StringBuffer
. Egentlig StringBuffer
anbefales ikke bruk, siden strengsammenkobling utføres på samme tråd 99 % av tiden. 6. Hva er resultatet av å evaluere uttrykket 1.0/0.0? Vil det produsere et unntak eller en kompileringsfeil? Dette er nok et vanskelig spørsmål om klassen. Java-utviklere er klar over eksistensen av en primitiv dobbel datatype og en klasse, men når de utfører flyttalloperasjoner, tar de ikke nok hensyn til , , , og reglene som styrer tilhørende aritmetiske beregninger. Svaret på dette spørsmålet er enkelt: an
Double
Double
Double.POSITIVE_INFINITY
Double.NEGATIVE_INFINITY
NaN
-0.0
ArithmeticException
vil ikke bli kastet; uttrykket evalueres til Double.POSITIVE_INFINITY
. 7. Hva skjer hvis du prøver å sette inn en nøkkel i en HashMap
som allerede inneholder den? Dette vanskelige spørsmålet er en del av et annet ofte stilt spørsmål: hvordan fungerer det HashMap
i Java? HashMap
er en populær kilde til forvirrende og vanskelige spørsmål om Java. Her er svaret: hvis du prøver å sette inn en nøkkel på nytt i en HashMap
, vil den gamle nøkkelen bli erstattet, siden HashMap
klassen ikke tillater dupliserte nøkler. Og den samme nøkkelen vil få samme hash-kode, noe som betyr at den havner på samme sted i hash-bøtta. Basert på Quora -materialer
GO TO FULL VERSION