Domande ogni buon sviluppatore Java/Java EE dovrebbe essere in grado di rispondere? [chiuso]


Stavo attraversando Domande ogni buon sviluppatore.Net dovrebbe essere in grado di rispondere e sono rimasto molto colpito dal contenuto e dall'approccio di questa domanda, e quindi nello stesso spirito, sto facendo questa domanda per Java/Java EE Developer.

A quali domande pensi che un buon programmatore Java/Java EE sia in grado di rispondere?

Sto contrassegnando questa domanda come community wiki in quanto non è specifica per l'utente e mira a servire la comunità di programmazione a grande.

In attesa di alcune risposte sorprendenti.

EDIT : Si prega di rispondere alle domande troppo, come suggerito nei commenti, in modo che le persone potrebbero imparare qualcosa di nuovo per quanto riguarda la lingua, pure.

Author: Rachel, 2010-01-22

30 answers

Qual è la relazione tra hashCode() ed equals()? Qual è il significato di questi metodi? Quali sono i requisiti per implementarli?

 83
Author: Jeff, 2010-01-22 01:06:27

Qual è la differenza tra Set, Map e List?

Sono ancora stupito di quante persone non lo sappiano in un'intervista telefonica.

 70
Author: Jon, 2010-01-22 01:09:18

Un'interfaccia può estendere più interfacce?

La maggior parte delle persone risponde "no", perché sa che java non ha ereditarietà multipla. Ma un'interfaccia può ancora estendere più interfacce (ma una classe non può estendere più classi). Questo non porta al problema del diamante.

Se la risposta è "no", l'intervistatore dovrebbe chiedere "perché sarebbe vietato?". Poi si inizia a pensarci e si dovrebbe rendersi conto che non c'è problema con esso.

Quindi hai imparato qualcosa (da solo) nell'intervista e hai mostrato all'intervistatore che sei in grado di ragionare su classi, oggetti, ereditarietà, polimorfismo, ecc. In realtà è molto meglio di un candidato che conosce la risposta a memoria ma non capisce perché

 44
Author: ewernli, 2010-01-22 19:26:20

Utilizzo della parola chiave final nelle chiamate al metodo. Ad esempio perché il metodo prova nel codice seguente non fornisce alcun errore di compilazione nonostante l'utilizzo del qualificatore final per il parametro del metodo.

class Name {
    private String name;

    public Name (String s) {
        this.name = s;
    }

    public void setName(String s) {
        this.name = s;
    }
}

private void test (final Name n) {
    n.setName("test");
}

 23
Author: sateesh, 2010-02-01 10:08:41

Un certo è il confronto della stringa. Differenza tra

String HelloWorld = "Ciao mondo";
HelloWorld = = "Ciao mondo";
"Ciao mondo".uguale(HelloWorld);

 19
Author: zapping, 2010-02-01 08:36:38

Domanda trabocchetto: quali tipi di parametri vengono passati per riferimento in Java?

È incredibile quante persone ancora pappagallo il mantra "primitive sono passati per valore, gli oggetti sono passati per riferimento".

 17
Author: Chinmay Kanchi, 2010-01-22 01:12:20

Hai detto "Buono", "Sviluppatore". Ecco i miei 2 centesimi troppo.. :)

  • Cosa significa "eccezione controllata"?
  • Quale è meglio usare e quando: Asserzioni o eccezioni per gestire condizioni impreviste?
  • Perché la classe String è definitiva? (o non è? ;) )
  • i metodi wait, notify e notifyAll sono nella classe Object?
  • Perché la classe Thread non è finale? Perché dovrei estendere il thread, mai?
  • Perché ci sono due classi di date; una in java.pacchetto util e un altro in java.sql?
  • Cosa succede se un'eccezione viene generata in finally block? Il rimanente è finalmente eseguito o no?
  • C'è un garbage collector va bene, ma allora la perdita di memoria è totalmente assente in un'applicazione Java? Se no, in che modo?

Per J2EE:

  • È bene avere variabili instance/statiche in un servlet? Perché no? Allora dove si memorizza "stato"?
  • continuando sulla domanda precedente: cosa e dove è uno "stato" per un (web) applicazione?
  • Cosa succede se ho iniziato a creare / chiudere le connessioni DB in"JSP"?
  • Quali sono i modi per gestire le eccezioni JSP? prova-cattura? Hmmm.. c'e ' qualcos'altro?

Posso pensare molti, molti, molti di più di 'em ma questo farà per ora:)

 17
Author: Elister, 2010-01-25 13:24:33

Qual è la differenza tra String, StringBuffer e StringBuilder?

 16
Author: Thunderhashy, 2010-01-25 17:59:18

"Che cos'è un descrittore di distribuzione?"

Se il candidato rabbrividisce involontariamente, ha esperienza di lavoro con EJB pre-3.0.

 13
Author: Michael Borgwardt, 2010-01-22 08:57:34

Molte domande e interviste sono disponibili su http://www.techinterviews.com/interview-questions/java e non vedo davvero valore nel copiare / incollare una selezione di essi.

No, sta a te creare la tua raccolta di cose che tu pensi siano importanti. Personalmente, procedo sempre in due passaggi: prima alcune domande per avere un'idea di base dell'esperienza e delle competenze, poi una situazione di problem solving. Non sono davvero convinto che essere in grado di rispondere a qualsiasi noto domande ti rende un buono o cattivo sconosciuto risolutore di problemi. Quindi, preferisco chiedere alle persone di risolvere un dato problema, di dare loro alcuni requisiti e chiedere loro di scrivere codice (ma non su carta). Do loro un po ' di tempo per tornare da me e controllare come lo hanno fatto, il loro stile di codifica, come hanno usato le API suggerite, ecc.

Detto questo, la mia domanda preferita è "cosa non ti piace di Java?"(nello spirito di questo ). È davvero un eccellente domanda, ti dà un feedback immediato su quanto un candidato ha usato Java ed esplorato la sua API e se ne è solo religioso o meno (come ha scritto l'OP).

Update: Come suggerito da CPerkins, una formulazione migliore per la domanda suggerita sopra potrebbe essere "Cosa ti piacerebbe di più vedere cambiato in Java?". E in effetti, preferisco così.

 12
Author: Pascal Thivent, 2017-05-23 12:25:34

Che cos'è' System',' out',' println ' nel sistema.fuori.println ? Cosa succede quando chiami " put " su HashMap ?

 11
Author: Adi, 2010-01-22 05:18:18
  1. Spiega i vari modificatori di accesso utilizzati in Java. Ho avuto molte persone che lottano con questo, in particolare l'accesso predefinito.
  2. Se potessi cambiare una cosa sul linguaggio Java o sulla piattaforma quale sarebbe? I buoni sviluppatori avranno una risposta qui mentre quelli che non sono realmente interessati allo sviluppo probabilmente non si preoccupano.
  3. Se il loro CV dice qualcosa come usano EJB2.1 allora chiedi di EJB3 per vedere cosa ne sanno. I migliori sviluppatori terranno il passo con gli ultimi sviluppi anche se non usano le versioni più recenti.
 10
Author: Mark, 2010-01-22 13:16:37
  • Qual è il contratto generale quando l'override è uguale?
  • L'opzione migliore preferisce elenchi o array?
  • Quali sono le convenzioni di denominazione generalmente accettate?
  • Come funziona la serializzazione?
  • Come implementare Comparable?
  • Quali sono i vantaggi dell'utilizzo delle dichiarazioni preparate da JDBC?
  • Che cos'è Java EE?
  • Che cos'è un contenitore e quali servizi fornisce?
 10
Author: JuanZe, 2010-01-22 19:25:22

Se stai assumendo laureati con Java "esperienza" una semplice domanda come Scrivi del codice che causerà il lancio di una NullPointerException può distinguere quali candidati hanno usato Java di recente e non si sono fermati quando hanno terminato la loro unità/corso.

 9
Author: David, 2010-01-22 06:01:08

Cosa verrà stampato?

public void testFinally(){
    System.out.println(setOne().toString());

}

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        return builder.append("Return");
    }finally{
        builder.append("+1");
    }
}

Risposta : CoolReturn+1

Un po ' più difficile:

public void testFinally(){
    System.out.println(setOne().toString());

}

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        return builder.append("Return");
    }finally{
        builder=null;  /* ;) */
    }
}

Risposta : CoolReturn

 9
Author: zaletniy, 2010-04-18 17:50:31

Qual è la differenza tra una classe astratta e un'interfaccia? Quando useresti ciascuno di essi?

Molti sviluppatori Java non lo sanno, ho chiesto alla maggior parte delle persone al mio corso di informatica all'università e la stragrande maggioranza non ha potuto rispondere.

 8
Author: ZoFreX, 2010-01-24 22:33:57

Domande semplici come,

  • Che cos'è JRE e JDK?
  • Perché java rivendica l'interoperabilità?

Sebbene questi siano molto semplici, molti sviluppatori non conoscono le risposte. Suggerisco che questi vengano chiesti prima delle query relative al codice.

 8
Author: Ravisha, 2012-03-12 12:03:23

Top 5 domande J2EE/JEE

L'elenco delle domande middleware J2EE/JEE che ho affrontato è eccezionalmente lungo, ma qui ci sono le prime 5 che mi sono state poste e hanno portato a buone discussioni:

  1. Cosa succede quando un MDB incontra un'eccezione che non può gestire?
    Questa domanda di solito porta a varie discussioni interessanti su messaggi di veleno, code di errore, ecc.,
  2. Dato un argomento JMS, e alcuni consumatori su diversi JVM, domande su vari scenari con e senza consumatori durevoli.
    Questa domanda di solito mi consente di discutere in termini di quando utilizzare abbonati durevoli, quando utilizzare le code, ecc.,
  3. Se bloccato in una situazione in cui l'accesso a un contenuto POJO Hibernate/JPA porta a eccezioni, come risolverlo?
    Questo porta a meravigliose discussioni su caricamento pigro, reidratazione, ecc., ha perfino condotto a comparare e contrapporre JPA con fagioli di Entità. L'ho fatto ho trovato utile essere preparati e essere chiari nei concetti.
  4. Come potrebbe essere fornito un semplice servizio web?
    Qualsiasi soluzione, dal semplice server Web basato su sofisticate soluzioni SOAP / REST e qualsiasi altra via di mezzo, dovrebbe essere abbastanza buona. Inoltre, sulla base dell'intervistatore, a volte porta a discussioni molto interessanti su argomenti come alcune idee di design - WSDL prima, doc-style, intermediari di sapone, ecc., potrebbe condurre a domande come miglioramenti di elenco in JAX-WS su JAX-RPC, o SOAP1. 2 su SOAP1.1, le cui risposte sono solitamente basate su quanto ricordo.
  5. JEE 5 iniezione di risorse
    Questa domanda è posta in molti modi, a partire da Service Locator pattern a javax.naming.Context domande.

Un'altra domanda difficile che trovo preoccupante, ma che ho affrontato molte volte è, In che modo le librerie dipendenti sono impacchettate in un archivio?
o Visibilità di varie classi in un bundle archivio.
Se la discussione non porta alla gerarchia del caricatore di classi di diversi server di applicazioni,archivi di risorse, ecc., è migliore per dimettersi e andare avanti.

Top 5 core Java domande:

  1. Domande su java.util.collezioni
    Questa è la madre di tutte le domande. Una volta che si può effettivamente terra l'intervistatore in questa zona, e se si è preparati, il resto del colloquio di solito rimane qui. Essere sicuri di conoscere Set, List, Map, e l'importanza di Object.equals() e Object.hashCode() in ogni implementazione di queste interfacce.
  2. Domande di refactoring
    Questi sono buoni se l'intervistatore ha una mente aperta. Se l'intervistatore ha già in mente una soluzione specifica, e il tuo non corrisponde al suo, sei praticamente condannato. È meglio essere d'accordo con la risposta "Capisco che sono possibili altre soluzioni. "
  3. Domande sul multi-threading in JDK5, confronto con JDK precedente versioni Ho trovato che è meglio essere preparati con java.util.concurrent classi di pacchetti. Il libro di Doug Lea ha la maggior parte delle risposte.
  4. Cosa c'è di nuovo in JDK1.6 / JDK1.7...?
    Questa è una domanda sicura con molti intervistatori. Per quanto io odio questo, è meglio essere preparati. Almeno ricordando alcuni che ho lavorato con, e portando la discussione in qualche altra direzione, in gran parte ed efficacemente schiva e risolve il problema.
  5. Modelli in Java API
    Più volte mi è stato chiesto di indicare un modello GoF nell'API Java. Meglio essere preparati per questo.
 6
Author: CMR, 2011-03-17 02:55:38

Differenza tra un server Web e un contenitore web

 5
Author: user256777, 2010-01-22 14:03:06

Cosa ti piace di più / meno di Java e perché?

 5
Author: Carsten, 2010-01-24 22:30:11

Perché ignorare il metodo toString ()?

 5
Author: SWD, 2010-01-25 13:16:44

Una domanda Java più pura:

Qual è la differenza tra sleep e wait ? Non molte persone in realtà capire come wait sta lavorando.

Come è necessario gestire InterruptedExceptions ?

 4
Author: David Nouls, 2010-02-01 08:48:25

Questa è la domanda che ho affrontato nella mia intervista.

Perché il metodo main in Java è chiamato come public static void main (String[] args) ?

Risposta:

1. main() deve essere dichiarato pubblico perché viene richiamato da JVM ogni volta che viene avviata l'esecuzione del programma.JVM non appartiene al nostro pacchetto di programmi.

Inorder per accedere a main al di fuori del pacchetto dobbiamo dichiararlo come pubblico.Se lo dichiariamo come qualcosa di diverso dal pubblico mostra un Runtime Errore ma non Errore nel tempo di compilazione

2. main() deve essere dichiarato come statico perché se un metodo è dichiarato come statico, possiamo chiamare quel metodo al di fuori della classe usando className.Nome metodo();

class Sample
{
     static void fun()
     {
           System.out.println("Hello");       
     }
}

class Test
{
      public static void main(String[] args)
      {
                Sample.fun();
      }
}

La JVM prima caricherà la classe Test e controllerà gli argomenti della riga di comando e chiamerà il metodo main come Test.principale();

3. main () deve essere dichiarato come void main () perché JVM non prevede alcun valore da main (). Quindi, deve essere dichiarato come void.

Se viene fornito un altro tipo di ritorno,è un RunTimeError cioè;NoSuchMethodFoundError.

4. main () deve avere arguements stringa come array perché JVM chiama metodo principale passando riga di comando arguement.As sono memorizzati nell'oggetto array stringa viene passato come argomento a main ().

 4
Author: Sai Upadhyayula, 2011-05-31 12:08:01

Qual è la differenza tra J2SE e J2EE (o JSE e JEE)?

Uno sviluppatore dovrebbe essere in grado di sottolineare che l'edizione enterprise è fondamentalmente una definizione di interfaccia (cioè una specifica) che può essere implementata dai fornitori. Considerando che l'edizione standard è un'implementazione a sé stante

 3
Author: oxbow_lakes, 2010-01-25 13:20:10

In che modo volatile influisce sull'ottimizzazione del codice da parte del compilatore?

 3
Author: Roman, 2010-01-25 13:34:15

Che ne dici di cos'è un bean di sessione e descrivi alcune differenze tra bean di sessione stateless e stateful.

 2
Author: Kristian, 2010-01-22 05:20:07

Scrivi un programma per accettare due numeri interi e invia il più grande dei due numeri in un file in una posizione a tua scelta. Ora descrivi cosa fa ogni affermazione.

È possibile eseguire il drill down piuttosto in profondità a partire dal significato dell'istruzione import, fino alla terminazione anormale

 2
Author: Everyone, 2010-02-24 07:29:06

Nucleo: 1. Quali sono le eccezioni controllate e deselezionate ? 2. Durante l'aggiunta di una nuova eccezione nel codice, quale tipo (Selezionato/ deselezionato) utilizzare quando ?

Servlet: 1. Qual è la differenza tra response.sendRedirect () e richiesta.avanti ()?

 2
Author: YoK, 2010-07-12 04:03:19

Come funziona threads? Che cos'è synchronized? Se ci sono due metodi synchronized in una classe possono essere eseguiti simultaneamente da due thread. Sarete sorpresi di sentire molte persone rispondere . Quindi tutte le domande relative al thread, ad esempio deadlock, fame ecc.

 1
Author: fastcodejava, 2010-01-24 22:25:29

Una cosa che molti programmatori Java non sanno è che le stringhe sono immutabili, quindi usa StringBuilder o StringBuffer!

String s = "";
for(int i = 0; i < 100; i++) {
  s += "Strings " + "are " + "immutable, " + " so use StringBuilder/StringBuffer to reduce memory footprint";
}
 1
Author: Shervin Asgari, 2010-10-14 18:28:17