CodeGym/Java blog/Tilfældig/Vanskelige Java-spørgsmål, der ofte stilles ved interview...
John Squirrels
Niveau
San Francisco

Vanskelige Java-spørgsmål, der ofte stilles ved interviews

Udgivet i gruppen
Hvis du nogensinde har forberedt dig til et interview til en Java-programmørstilling eller bestået en certificeringseksamen (ikke nødvendigvis om programmering), så har du sikkert allerede bemærket, at de spørgsmål, der stilles der, er meget specifikke. Mange af dem tvinger dig til at tænke over sprogets design. Nogle er designet til at undersøge dybden af ​​din viden. Der er spørgsmål, der ligner mere gåder end noget andet, mens andre vedrører nuancer af sproget, som er meget svære at opfatte uden øvelse. I denne artikel præsenterer udvikler Sarans Sing et par sådanne spørgsmål om Java. Med svar, selvfølgelig. Vanskelige Java-spørgsmål, der ofte stilles ved interviews - 11. Hvad sker der, hvis jeg sætter en return-sætning eller System.exit() i en try/catch-blok? Dette er et meget populært og subtilt Java-spørgsmål. Tricket er, at mange programmører tror, ​​at finallyblokken altid udføres. Ved at placere et returnudsagn i en try/catchblok eller kalde System.exit()inde fra en try/catchblok, sår spørgsmålet tvivl om denne tro. Svaret på dette vanskelige spørgsmål er: blokken finallyvil blive udført, når en returnsætning er placeret i en try/catchblok, men vil ikke blive udført, når System.exit()den kaldes inde fra en try/catchblok. 2. Understøtter Java multipel nedarvning? Dette er et meget vanskeligt spørgsmål. Interviewere spørger ofte: "Hvis C ++ understøtter direkte multipel nedarvning, hvorfor kan Java så ikke?" Svaret _er en smule mere kompliceret end det ser ud til, da Java understøtter arv af flere typer. En Java-grænseflade kan trods alt udvide andre grænseflader. Når det er sagt, understøtter Java ikke multipel nedarvning af implementeringer. 3. Hvis en metode i en overordnet klasse kaster NullPointerExceptions, kan den så tilsidesættes af en metode der kaster RuntimeExceptions? Dette er endnu et vanskeligt spørgsmål relateret til overbelastning og tilsidesættelse. Svar: En tilsidesat metode kan sikkert kaste NullPointerExceptionsin overordnede klasse — RuntimeException, men du kan ikke gøre det samme med en markeret undtagelsestype som Exception. 4. Hvordan garanterer du, at Ntråde kan få adgang til Nressourcer uden dødvande? Hvis det ikke er din stærke side at skrive flertrådskode, kan du virkelig snuble over dette spørgsmål. Det kan være svært, selv for en erfaren programmør, der ikke er stødt på dødvande og racerforhold. Hele tricket her er i rækkefølgen: du kan forhindre dødvande ved at frigive ressourcer i den omvendte rækkefølge, som de blev erhvervet. 5. Hvad er forskellen mellem StringBufferog StringBuilderklasserne i Java? Dette er et klassisk Java-sprogspørgsmål, som nogle udviklere finder svært og andre - meget enkelt. Klassen StringBuilderdukkede op i JDK 1.5. Den eneste forskel mellem disse klasser er, at StringBufferderes metoder, såsom length(), capacity(), og append(), er synkroniserede, mens de tilsvarende metoder iStringBuilderer ikke. Denne grundlæggende forskel betyder, at strengsammenkædning er hurtigere med StringBuilderend med StringBuffer. Faktisk StringBufferanbefales det ikke at bruge, da strengsammenkædning udføres på den samme tråd 99% af tiden. 6. Hvad er resultatet af at evaluere udtrykket 1.0/0.0? Vil det producere en undtagelse eller en kompileringsfejl? Dette er endnu et vanskeligt spørgsmål om klassen. Java-udviklere er opmærksomme på eksistensen af ​​en primitiv dobbelt datatype og en klasse, men når de udfører flydende kommaoperationer, er de ikke opmærksomme nok på , , , og reglerne for tilknyttede aritmetiske beregninger. Svaret på dette spørgsmål er enkelt: enVanskelige Java-spørgsmål, der ofte stilles ved interviews - 2DoubleDoubleDouble.POSITIVE_INFINITYDouble.NEGATIVE_INFINITYNaN-0.0ArithmeticExceptionvil ikke blive kastet; udtrykket evalueres til Double.POSITIVE_INFINITY. 7. Hvad sker der, hvis du forsøger at indsætte en nøgle i en HashMap, der allerede indeholder den pågældende nøgle? Dette vanskelige spørgsmål er en del af et andet ofte stillet spørgsmål: hvordan fungerer det HashMapi Java? HashMaper en populær kilde til forvirrende og vanskelige spørgsmål om Java. Her er svaret: Hvis du forsøger at genindsætte en nøgle i en HashMap, vil den gamle nøgle blive erstattet, da HashMapklassen ikke tillader duplikerede nøgler. Og den samme nøgle får den samme hash-kode, hvilket betyder, at den ender samme sted i hash-bøtten. Baseret på Quora materialer
Kommentarer
  • Populær
  • Ny
  • Gammel
Du skal være logget ind for at skrive en kommentar
Denne side har ingen kommentarer endnu