Als je je ooit hebt voorbereid op een sollicitatiegesprek voor een functie als Java-programmeur of bent geslaagd voor een certificeringsexamen (niet noodzakelijkerwijs over programmeren), dan heb je waarschijnlijk al gemerkt dat de vragen die daar worden gesteld heel specifiek zijn. Velen van hen dwingen je na te denken over het ontwerp van de taal. Sommige zijn ontworpen om de diepten van uw kennis te peilen. Er zijn vragen die meer op puzzels lijken dan wat dan ook, terwijl andere betrekking hebben op nuances van de taal die heel moeilijk waar te nemen zijn zonder oefening. In dit artikel presenteert ontwikkelaar Sarans Sing enkele van dergelijke vragen over Java. Met antwoorden natuurlijk. Lastige Java-vragen die vaak worden gesteld tijdens interviews - 11. Wat gebeurt er als ik een return-statement of System.exit() in een try/catch-blok plaats? Dit is een zeer populaire en subtiele Java-vraag. De truc is dat veel programmeurs denken dat het finallyblok altijd wordt uitgevoerd. Door een returnuitspraak in een try/catchblok te plaatsen of System.exit()vanuit een try/catchblok te bellen, zet de vraag deze overtuiging in twijfel. Het antwoord op deze lastige vraag is: het finallyblok wordt uitgevoerd als een returnstatement in een blok wordt geplaatst try/catch, maar niet als System.exit()het vanuit een try/catchblok wordt aangeroepen. 2. Ondersteunt Java meervoudige overerving? Dit is een erg lastige vraag. Interviewers vragen vaak: "Als C ++ directe meervoudige overerving ondersteunt, waarom kan Java dan niet?" Het antwoordis een beetje ingewikkelder dan het lijkt, aangezien Java overerving van meerdere typen ondersteunt. Een Java-interface kan immers andere interfaces uitbreiden. Dat gezegd hebbende, ondersteunt Java geen meervoudige overerving van implementaties. 3. Als een methode in een bovenliggende klasse NullPointerExceptions genereert, kan deze dan worden overschreven door een methode die RuntimeExceptions genereert? Dit is een andere lastige vraag met betrekking tot overbelasting en overheersing. Antwoord: Een overschreven methode kan veilig NullPointerExceptionde bovenliggende klasse - RuntimeException - gooien, maar u kunt niet hetzelfde doen met een aangevinkt uitzonderingstype zoals Exception. 4. Hoe garandeer je dat Nthreads toegang hebben tot Nbronnen zonder een impasse? Als het schrijven van multithreaded code niet jouw sterkste punt is, kun je echt op deze vraag stuiten. Het kan moeilijk zijn, zelfs voor een ervaren programmeur die geen impasses en racecondities is tegengekomen. De hele truc hier zit in de volgorde: je kunt impasses voorkomen door middelen vrij te geven in de omgekeerde volgorde waarin ze zijn verkregen. 5. Wat is het verschil tussen de klassen StringBufferen StringBuilderin Java? Dit is een klassieke Java-taalvraag die sommige ontwikkelaars lastig vinden en andere heel eenvoudig. De StringBuilderklas verscheen in JDK 1.5. Het enige verschil tussen deze klassen is dat StringBufferde methoden, zoals length(), capacity(), en append(), worden gesynchroniseerd, terwijl de corresponderende methoden inStringBuilderzijn niet. Dit fundamentele verschil betekent dat stringaaneenschakeling sneller gaat met StringBuilderdan met StringBuffer. Het gebruik ervan wordt eigenlijk StringBufferniet aanbevolen, aangezien string-aaneenschakeling 99% van de tijd op dezelfde thread wordt uitgevoerd. 6. Wat is het resultaat van het evalueren van de uitdrukking 1.0/0.0? Zal het een uitzondering of een compilatiefout opleveren? Dit is een andere lastige vraag over de klas. Java - ontwikkelaars zijn op de hoogte van het bestaan ​​van een primitief dubbel gegevenstype en een klasse, maar bij het uitvoeren van drijvende-kommabewerkingen besteden ze onvoldoende aandacht aan , , en de regels voor bijbehorende rekenkundige berekeningen. Het antwoord op deze vraag is eenvoudig: anLastige Java-vragen die vaak worden gesteld tijdens interviews - 2DoubleDoubleDouble.POSITIVE_INFINITYDouble.NEGATIVE_INFINITYNaN-0.0ArithmeticExceptionzal niet worden gegooid; de uitdrukking evalueert naar Double.POSITIVE_INFINITY. 7. Wat gebeurt er als u een sleutel probeert in te voegen in een kaart HashMapdie die sleutel al bevat? Deze lastige vraag maakt deel uit van een andere veelgestelde vraag: hoe werkt het HashMapin Java? HashMapis een populaire bron van verwarrende en lastige vragen over Java. Hier is het antwoord: als je probeert een sleutel opnieuw in te voegen in een HashMap, wordt de oude sleutel vervangen, aangezien de HashMapklasse geen dubbele sleutels toestaat. En dezelfde sleutel krijgt dezelfde hashcode, wat betekent dat hij op dezelfde plek in de hash-bucket terechtkomt. Gebaseerd op Quora -materialen