CodeGym /Java Blog /Random-IT /Domande ingannevoli su Java poste frequentemente durante ...
John Squirrels
Livello 41
San Francisco

Domande ingannevoli su Java poste frequentemente durante le interviste

Pubblicato nel gruppo Random-IT
Se ti sei mai preparato per un colloquio per una posizione di programmatore Java o hai superato un esame di certificazione (non necessariamente sulla programmazione), probabilmente avrai già notato che le domande poste sono molto specifiche. Molti di loro ti costringono a pensare al design della lingua. Alcuni sono progettati per sondare le profondità della tua conoscenza. Ci sono domande che sembrano più enigmi che altro, mentre altre riguardano sfumature della lingua molto difficili da percepire senza pratica. In questo articolo, lo sviluppatore Sarans Sing presenta alcune di queste domande su Java. Con le risposte, ovviamente. Domande frequenti su Java ingannevoli durante le interviste - 11. Cosa succede se inserisco un'istruzione return o System.exit() in un blocco try/catch? Questa è una domanda Java molto popolare e sottile. Il trucco è che molti programmatori credono che il finallyblocco venga sempre eseguito. Inserendo returnun'istruzione in un try/catchblocco o chiamando System.exit()dall'interno di un try/catchblocco, la domanda mette in dubbio questa convinzione. La risposta a questa domanda complicata è: il finallyblocco verrà eseguito quando returnun'istruzione viene inserita in un try/catchblocco, ma non verrà eseguito quando System.exit()viene chiamato dall'interno di un try/catchblocco. 2. Java supporta l'ereditarietà multipla? Questa è una domanda molto delicata. Gli intervistatori spesso chiedono: "Se C ++ supporta l'ereditarietà multipla diretta, allora perché Java non può?" La rispostaè un po' più complicato di quanto possa sembrare, dato che Java supporta l'ereditarietà di più tipi. Dopotutto, un'interfaccia Java può estendere altre interfacce. Detto questo, Java non supporta l'ereditarietà multipla delle implementazioni. 3. Se un metodo in una classe genitore lancia NullPointerExceptions, può essere sovrascritto da un metodo che lancia RuntimeExceptions? Questa è un'altra domanda complicata relativa al sovraccarico e all'override. Risposta: un metodo sottoposto a override può tranquillamente lanciare NullPointerExceptionla classe genitore di , RuntimeException, ma non puoi fare lo stesso con un tipo di eccezione verificato come Exception. 4. Come garantite che Ni thread possano accedere Nalle risorse senza deadlock? Se scrivere codice multithread non è il tuo forte, potresti davvero imbatterti in questa domanda. Può essere difficile anche per un programmatore esperto che non ha incontrato stalli e condizioni di gara. L'intero trucco qui è nell'ordine: puoi prevenire i deadlock rilasciando le risorse nell'ordine inverso in cui sono state acquisite. 5. Qual è la differenza tra le classi StringBuffere StringBuilderin Java? Questa è una classica domanda sul linguaggio Java che alcuni sviluppatori trovano complicata e altri molto semplice. La StringBuilderclasse è apparsa in JDK 1.5. L'unica differenza tra queste classi è che StringBufferi metodi di , come length(), capacity()e append(), sono sincronizzati, mentre i metodi corrispondenti inStringBuildernon sono. Questa differenza fondamentale significa che la concatenazione di stringhe è più veloce con StringBuilderche con StringBuffer. In realtà, l'utilizzo StringBuffernon è consigliato, poiché la concatenazione di stringhe viene eseguita sullo stesso thread il 99% delle volte. 6. Qual è il risultato della valutazione dell'espressione 1.0/0.0? Produrrà un'eccezione o un errore di compilazione? Questa è un'altra domanda complicata sulla classe. Gli sviluppatori Java sono a conoscenza dell'esistenza di un tipo di dati double primitivo e di una classe, ma quando eseguono operazioni in virgola mobile non prestano sufficiente attenzione a , , e alle regole che governano i calcoli aritmetici associati. La risposta a questa domanda è semplice: anDomande frequenti su Java ingannevoli durante le interviste - 2DoubleDoubleDouble.POSITIVE_INFINITYDouble.NEGATIVE_INFINITYNaN-0.0ArithmeticExceptionnon sarà gettato; l'espressione restituisce Double.POSITIVE_INFINITY. 7. Cosa succede se si tenta di inserire una chiave in un HashMapche contiene già quella chiave? Questa domanda delicata fa parte di un'altra domanda frequente: come funziona HashMapin Java? HashMapè una fonte popolare di domande confuse e complicate su Java. Ecco la risposta: se provi a reinserire una chiave in un HashMap, la vecchia chiave verrà sostituita, poiché la HashMapclasse non consente chiavi duplicate. E la stessa chiave otterrà lo stesso codice hash, il che significa che finirà nello stesso posto nel secchio hash. Basato sui materiali di Quora
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION