Se ti sei mai preparato per un colloquio per la posizione di programmatore Java o hai sostenuto qualche esame (non necessariamente di programmazione) per ottenere un certificato, molto probabilmente hai già notato che le domande che fanno sono molto specifiche. Molti di loro ti fanno pensare all'architettura della lingua, altri sono progettati per una conoscenza approfondita. Ci sono anche quelli che sono più simili a enigmi o riguardano sfumature che sono molto difficili da percepire senza pratica. In questo articolo, lo sviluppatore Saraans Singh fornisce diverse domande simili su Java. Con risposte, ovviamente. 1. Cosa succede se inserisci un'istruzione return o System.exit() in un blocco try/catch? Questa è una domanda di recupero molto popolare in Java. Il problema è che molti programmatori credono che il blocco
finally
verrà eseguito comunque. Questa domanda sfida questo concetto inserendo un'istruzione return
in un blocco try/catch
o chiamando da un blocco try/catch
di istruzioni System.exit ()
. La risposta a questa domanda complicata: il blocco finally
verrà eseguito quando un'istruzione viene inserita return
in un blocco try/catch
e non verrà eseguito quando viene chiamato da un blocco try/catch
di istruzioni System.exit ()
. 2. Java supporta l'ereditarietà multipla? Questa è una domanda molto complicata. Gli intervistatori spesso dicono: se il C++ può supportare l'ereditarietà multipla diretta, perché Java non può farlo? La risposta è un po' più complicata di quanto possa sembrare, poiché Java supporta l'ereditarietà di tipi multipli, poiché un'interfaccia al suo interno può estendere altre interfacce. Ma il linguaggio Java non supporta l'ereditarietà multipla delle implementazioni. 3. Nel caso in cui un metodo lanci un'eccezione NullPointerException
nella classe genitore, può essere sovrascritto dal metodo che lancia RuntimeException
? Un'altra domanda complicata riguarda i concetti di sovraccarico e override. Risposta: puoi tranquillamente lanciare un'eccezione della classe genitore in un metodo sovrascritto NullPointerException – RuntimeException
, ma non puoi fare lo stesso con un'eccezione controllata di tipo Exception
. 4. Come garantire che i thread possano accedere alle risorse senza bloccarsi? N
N
Se non sei molto bravo a scrivere codice multi-thread, questa domanda sarà davvero complicata per te. Può essere impegnativo anche per un programmatore esperto che non ha avuto a che fare con situazioni di stallo e condizioni di gara. Il trucco qui sta nell’ordine: lo stallo può essere evitato liberando le risorse nell’ordine inverso in cui sono state acquisite. 5. Qual è la differenza tra le classi StringBuffer
e StringBuilder
nel linguaggio Java? Una classica domanda sul linguaggio Java, considerata complicata da alcuni sviluppatori e molto semplice da altri. La classe StringBuilder
è stata introdotta in JDK 1.5 e l'unica differenza tra loro è che i metodi della classe StringBuffer
, ad esempio, length()
o capacity()
, append()
sono sincronizzati, mentre i metodi corrispondenti della classe StringBuilder
non lo sono. A causa di questa differenza fondamentale, la concatenazione delle stringhe StringBuilder
è più veloce con StringBuffer
. In effetti, StringBuffer
se ne sconsiglia l'utilizzo, poiché nel 99% dei casi d'uso la concatenazione delle stringhe avviene sullo stesso thread. 6. Cosa restituisce l'espressione 1.0/0.0? Genererà un'eccezione o causerà un errore di compilazione? Un'altra domanda complicata sulla classe Double
. Sebbene gli sviluppatori Java siano consapevoli del semplice tipo di dati double e della classe , quando eseguono operazioni in virgola mobile , Double
non prestano sufficiente attenzione a Double.INFINITY
, e alle regole che governano i calcoli aritmetici ad essi associati. La risposta a questa domanda è semplice: non verrà generata alcuna eccezione , verrà restituito il valore . 7. Cosa succede se provi a inserire un oggetto chiave in un oggetto chiave che già esiste al suo interno? Questa domanda complicata fa parte di un'altra domanda frequente: come funzionano in Java? è un argomento popolare per domande confuse e complicate sul linguaggio Java. La risposta è che se provi a reinserire una chiave in , sostituirà quella vecchia perché la classe non consente chiavi duplicate. E la stessa chiave significa lo stesso codice hash, quindi finirà nello stesso posto nel segmento hash. Basato su materiali di QuoraNaN
-0.0
ArithmeticException
Double.INFINITY
HashMap
HashMap
HashMap
HashMap
HashMap
GO TO FULL VERSION