CodeGym /Java blogg /Slumpmässig /Knepiga Java-frågor som ställs ofta vid intervjuer
John Squirrels
Nivå
San Francisco

Knepiga Java-frågor som ställs ofta vid intervjuer

Publicerad i gruppen
Om du någonsin har förberett dig för en intervju för en Java-programmerare position eller klarat något certifieringsprov (inte nödvändigtvis om programmering), så har du förmodligen redan märkt att frågorna som ställs där är mycket specifika. Många av dem tvingar dig att tänka på språkets design. Vissa är utformade för att undersöka djupet av din kunskap. Det finns frågor som mer ser ut som pussel än något annat, medan andra relaterar till nyanser av språket som är mycket svåra att uppfatta utan övning. I den här artikeln presenterar utvecklaren Sarans Sing några sådana frågor om Java. Med svar förstås. Knepiga Java-frågor som ofta ställs vid intervjuer - 11. Vad händer om jag lägger en retursats eller System.exit() i ett try/catch-block? Detta är en mycket populär och subtil Java-fråga. Tricket är att många programmerare tror att finallyblocket alltid exekveras. Genom att placera ett returnpåstående i ett try/catchblock eller ringa System.exit()inifrån ett try/catchblock, ställer frågan tvivel på denna övertygelse. Svaret på denna knepiga fråga är: blocket finallykommer att exekveras när en returnsats placeras i ett try/catchblock, men kommer inte att exekveras när System.exit()den anropas från ett try/catchblock. 2. Stöder Java multipelt arv? Det här är en väldigt knepig fråga. Intervjuare frågar ofta: "Om C ++ stöder direkt multipelarv, varför kan inte Java då?" Svaret _är lite mer komplicerat än det kan verka, eftersom Java stöder arv av flera typer. När allt kommer omkring kan ett Java-gränssnitt utöka andra gränssnitt. Som sagt, Java stöder inte multipla arv av implementeringar. 3. Om en metod i en föräldraklass kastar NullPointerExceptions, kan den åsidosättas av en metod som kastar RuntimeExceptions? Detta är en annan knepig fråga relaterad till överbelastning och åsidosättande. Svar: En åsidosatt metod kan säkert kasta NullPointerExceptionsin föräldraklass — RuntimeException, men du kan inte göra detsamma med en markerad undantagstyp som Exception. 4. Hur garanterar du att Ntrådar kan komma åt Nresurser utan dödläge? Om det inte är din starka sida att skriva flertrådad kod kan du verkligen snubbla på den här frågan. Det kan vara svårt även för en erfaren programmerare som inte har stött på dödlägen och tävlingsförhållanden. Hela tricket här är i ordningen: du kan förhindra dödlägen genom att släppa resurser i omvänd ordning som de förvärvades. 5. Vad är skillnaden mellan klasserna StringBufferoch StringBuilderi Java? Det här är en klassisk Java-språkfråga som vissa utvecklare tycker är knepig och andra – väldigt enkel. Klassen StringBuilderdök upp i JDK 1.5. Den enda skillnaden mellan dessa klasser är att StringBuffermetoderna, såsom length(), capacity(), och append(), är synkroniserade, medan motsvarande metoder iStringBuilderär inte. Denna grundläggande skillnad innebär att strängsammansättning är snabbare med StringBuilderän med StringBuffer. Egentligen StringBufferrekommenderas inte användning, eftersom strängsammansättning utförs på samma tråd 99 % av gångerna. 6. Vad blir resultatet av att utvärdera uttrycket 1.0/0.0? Kommer det att producera ett undantag eller ett kompileringsfel? Det här är en annan knepig fråga om klassen. Java-utvecklare är medvetna om att det finns en primitiv dubbeldatatyp och en klass, men när de utför flyttalsoperationer uppmärksammar de inte , , , och reglerna som styr associerade aritmetiska beräkningar. Svaret på denna fråga är enkelt: anKnepiga Java-frågor som ofta ställs vid intervjuer - 2DoubleDoubleDouble.POSITIVE_INFINITYDouble.NEGATIVE_INFINITYNaN-0.0ArithmeticExceptionkommer inte att kastas; uttrycket utvärderas till Double.POSITIVE_INFINITY. 7. Vad händer om du försöker infoga en nyckel i en HashMapsom redan innehåller den nyckeln? Den här knepiga frågan är en del av en annan ofta ställd fråga: hur fungerar HashMapdet i Java? HashMapär en populär källa till förvirrande och knepiga frågor om Java. Här är svaret: om du försöker infoga en nyckel igen i en , HashMapkommer den gamla nyckeln att ersättas, eftersom HashMapklassen inte tillåter dubbletter av nycklar. Och samma nyckel kommer att få samma hashkod, vilket betyder att den hamnar på samma plats i hash-hinken. Baserat på Quora -material
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION