wake-up-neo.com

Fragen, die jeder gute Java / Java EE-Entwickler beantworten sollte?

Ich habe Fragen, die jeder gute .Net-Entwickler beantworten sollte durchlaufen und war sehr beeindruckt vom Inhalt und der Herangehensweise dieser Frage. Aus dem gleichen Grund stelle ich diese Frage für Java/Java EE Entwickler.

Welche Fragen sollte ein guter Java/Java EE-Programmierer Ihrer Meinung nach beantworten können?

Ich bezeichne diese Frage als Community-Wiki, da sie nicht benutzerspezifisch ist und der Programmier-Community insgesamt dienen soll.

Ich freue mich auf einige erstaunliche Antworten.

[~ # ~] edit [~ # ~] : Bitte beantworte auch Fragen, wie in den Kommentaren vorgeschlagen, damit die Leute etwas Neues über das lernen können sprache auch.

138
Rachel

Welche Beziehung besteht zwischen hashCode () und equals ()? Welche Bedeutung haben diese Methoden? Was sind die Voraussetzungen für deren Umsetzung?

83
Jeff

Was ist der Unterschied zwischen Set, Map und List?

Ich bin immer noch erstaunt, wie viele Leute diesen in einem Telefoninterview nicht kennen.

70
Jon

Kann eine Schnittstelle mehrere Schnittstellen erweitern?

Die meisten Leute antworten mit "nein", weil sie Java hat keine Mehrfachvererbung. Eine Schnittstelle kann jedoch immer noch mehrere Schnittstellen erweitern (eine Klasse kann jedoch nicht mehrere Klassen erweitern). t führt zum Diamantproblem.

Wenn die Antwort "nein" ist, sollte der Interviewer fragen "warum würde ist es verboten?". Dann fängst du an darüber nachzudenken und solltest erkennen, dass es kein Problem damit gibt.

Sie haben also im Interview (selbst) etwas gelernt und dem Interviewer gezeigt, dass Sie in der Lage sind, über Klassen, Objekte, Vererbung, Polymorphismus usw. zu urteilen. Es ist tatsächlich viel besser als ein Kandidat, der die Antwort auswendig kann, aber nicht verstehen warum

44
ewernli

Benutzung von finale Schlüsselwort in Methodenaufrufen. Zum Beispiel warum funktioniert die Methode prüfung Im folgenden Code wird trotz der Verwendung kein Kompilierungsfehler angezeigt finale Qualifizierer für den Methodenparameter.

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");
}
</ code>
23
sateesh

Ein sicherer ist der Vergleich der Zeichenfolge. Unterschied zwischen

String helloWorld = "Hallo Welt";
helloWorld == "Hallo Welt";
"Hello World" .equals (helloWorld);

19
zapping

Sie sagten "Gut", "Entwickler". Hier sind auch meine 2 Cent .. :)

  • Was bedeutet eine "geprüfte Ausnahme"?
  • Welches ist besser zu verwenden und wann: Zusicherungen oder Ausnahmen, um unerwartete Bedingungen zu behandeln?
  • Warum ist die String-Klasse endgültig? (oder ist es nicht?;))
  • befinden sich die Methoden wait, notify und notifyAll in der Object-Klasse?
  • Warum ist die Thread-Klasse nicht endgültig? Warum sollte ich Thread jemals verlängern?
  • Warum gibt es zwei Datumsklassen? eines in Java.util und eines in Java.sql?
  • Was passiert, wenn eine Ausnahme in finally block geworfen wird? Wird der Rest endgültig ausgeführt oder nicht?
  • Es gibt zwar einen Garbage Collector, aber dann fehlt in einer Java) -Anwendung überhaupt kein Speicherverlust? Wenn nein, wie dann?

Für J2EE:

  • Ist es gut, instanzielle/statische Variablen in einem Servlet zu haben? Warum nicht? Wo speichern Sie dann "state"?
  • fortsetzung der obigen Frage: Was und wo ist ein "Zustand" für eine (Web-) Anwendung?
  • Was passiert, wenn ich mit dem Erstellen/Schließen von DB-Verbindungen in "JSP" begonnen habe?
  • Wie werden JSP-Ausnahmen behandelt? Versuchsfang? Hmmm .. gibt es noch etwas?

Ich kann viele, viele, viele mehr von ihnen denken, aber das reicht erstmal :)

17
Elister

Trickfrage: Welche Arten von Parametern werden in Java als Referenz übergeben?

Es ist erstaunlich, wie viele Menschen immer noch das Mantra "Primitive werden als Wert, Objekte als Referenz übergeben" nachahmen.

17
Chinmay Kanchi

Was ist der Unterschied zwischen String, StringBuffer und StringBuilder?

16
Thunderhashy

"Was ist ein Implementierungsdeskriptor?"

Wenn der Kandidat unwillkürlich zittert, hat er Erfahrung mit EJBs vor 3.0.

13

Viele Fragen und Interviews finden Sie unter http://www.techinterviews.com/interview-questions/Java und ich sehe keinen Wert darin, eine Auswahl davon zu kopieren/einzufügen.

Nein, es liegt an Ihnen, eine eigene Zusammenstellung von Dingen zu erstellen , die Sie für wichtig halten. Persönlich gehe ich immer in zwei Schritten vor: Zuerst ein paar Fragen, um eine grundlegende Vorstellung von den Erfahrungen und Fähigkeiten zu bekommen, dann eine Problemlösungssituation. Ich bin in der Tat nicht davon überzeugt, dass die Beantwortung von bekannt Fragen Sie zu einem guten oder schlechten unbekannt Problemlöser macht. Also bitte ich lieber die Leute, ein bestimmtes Problem zu lösen, ihnen einige Anforderungen zu geben und sie zu bitten, Code zu schreiben (aber nicht auf Papier). Ich gebe ihnen etwas Zeit, um zu mir zurückzukehren und zu überprüfen, wie sie es gemacht haben, wie sie programmiert haben, wie sie die vorgeschlagenen APIs verwendet haben usw.

Abgesehen davon ist meine Lieblingsfrage "Was magst du nicht an Java?" (im Geiste von dieses ). Es ist wirklich eine ausgezeichnete Frage, es gibt Ihnen ein sofortiges Feedback, wie viel ein Kandidat verwendet hat Java und erkundet seine API und ob er nur religiös darüber ist oder nicht (wie das OP schrieb).

Update: Wie von CPerkins vorgeschlagen, könnte ein besserer Wortlaut für die oben vorgeschlagene Frage lauten: "Was möchten Sie am liebsten in Java ändern?". Und in der Tat bevorzuge ich diesen Weg.

12
Pascal Thivent

Was ist "System", "out", "println" in "System.out.println"? Was passiert, wenn Sie "put" auf HashMap aufrufen?

11
Adi
  1. Erläutern Sie die verschiedenen in Java verwendeten Zugriffsmodifikatoren. Ich habe viele Leute damit zu kämpfen gehabt, insbesondere den Standardzugriff.
  2. Wenn Sie eine Sache an der Java Sprache oder Plattform ändern könnten, welche wäre das? Gute Entwickler werden hier eine Antwort haben, während es diejenigen, die sich nicht wirklich für Entwicklung interessieren, wahrscheinlich nicht interessieren.
  3. Wenn in ihrem Lebenslauf so etwas wie EJB2.1 steht, fragen Sie nach EJB3, um zu erfahren, was sie darüber wissen. Die besten Entwickler werden mit den neuesten Entwicklungen Schritt halten, auch wenn sie keine neueren Versionen verwenden.
10
Mark
  • Was ist der allgemeine Vertrag, wenn er gleichwertig ist?
  • Ist eine bessere Option, Listen oder Arrays zu bevorzugen?
  • Was sind die allgemein anerkannten Namenskonventionen?
  • Wie funktioniert die Serialisierung?
  • Wie implementiere ich Comparable?
  • Was sind die Vorteile der Verwendung der vorbereiteten Anweisungen von JDBC?
  • Was ist Java EE?
  • Was ist ein Container und welche Dienstleistungen erbringt er?
10
JuanZe

Wenn Sie Absolventen mit Java einstellen, "erleben" Sie "eine einfache Frage wie Schreiben Sie einen Code, durch den eine NullPointerException ausgelöst wird kann unterscheiden, welche Kandidaten Javaverwendet haben. _ vor kurzem und hörte nicht nur auf, als sie ihre Einheit/ihren Kurs beendet hatten.

9
David

Was wird gedruckt?

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");
    }
}

Antwort: CoolReturn + 1

Etwas schwieriger:

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;  /* ;) */
    }
}

Antwort: CoolReturn

9
zaletniy

Einfache Fragen wie

  • Was ist JRE und JDK?
  • Warum beansprucht Java Interoperabilität?

Obwohl dies sehr einfach ist, kennen viele Entwickler die Antworten nicht. Ich schlage vor, diese vor den Code-bezogenen Abfragen zu stellen.

8
Ravisha

Was ist der Unterschied zwischen einer abstrakten Klasse und einer Schnittstelle? Wann würden Sie jeden von ihnen verwenden?

Viele Java Entwickler wissen das nicht, ich habe die meisten Leute auf meinem Informatikkurs an der Universität gefragt und die große Mehrheit konnte es nicht beantworten.

8
ZoFreX

Die fünf häufigsten Fragen zu J2EE/JEE

Die Liste der Fragen zu J2EE/JEE-Middleware, mit denen ich konfrontiert bin, ist außergewöhnlich lang. Hier sind jedoch die Top 5, die mir gestellt wurden und zu guten Diskussionen geführt haben:

  1. Was passiert, wenn eine MDB auf eine Ausnahme stößt, die sie nicht behandeln kann?
    Diese Frage führt normalerweise zu verschiedenen interessanten Diskussionen über Giftmeldungen, Fehlerwarteschlangen usw.
  2. nter Berücksichtigung eines JMS-Themas und einiger Verbraucher mit unterschiedlichen JVMs Fragen zu verschiedenen Szenarien mit und ohne dauerhaften Verbraucher.
    Mit dieser Frage kann ich normalerweise diskutieren, wann dauerhafte Abonnenten verwendet werden sollen, wann Warteschlangen verwendet werden sollen usw.
  3. Wenn Sie in einer Situation stecken bleiben, in der der Zugriff auf einen POJO-Inhalt im Ruhezustand/im JPA-Modus zu Ausnahmen führt, wie kann dies behoben werden?
    Dies führt zu wunderbaren Diskussionen über verzögertes Laden, Rehydrieren usw. Es hat sogar dazu geführt, dass JPA mit Entity-Bohnen verglichen und gegenübergestellt wurde. Ich habe es nützlich gefunden, vorbereitet zu sein und in Begriffen klar zu sein.
  4. Wie könnte ein einfacher Webdienst bereitgestellt werden?
    Jede Lösung von einfachen Webservern bis hin zu hoch entwickelten SOAP/REST-Lösungen und dazwischen sollte gut genug sein. Basierend auf dem Interviewer führt dies manchmal zu sehr interessanten Diskussionen über Themen wie beispielsweise einige Designideen - WSDL zuerst, doc-style, SOAP Vermittler usw.). Es kann zu Fragen wie z Als Auflistung von Verbesserungen in JAX-WS gegenüber JAX-RPC oder SOAP1.2 gegenüber SOAP1.1, basieren die Antworten in der Regel darauf, an wie viel ich mich erinnere.
  5. JEE 5-Ressourceneinspeisung
    Diese Frage wird auf viele Arten gestellt, angefangen vom Service Locator Muster bis zu javax.naming.Context Fragen.

Eine andere knifflige Frage, die ich beunruhigend finde, die ich aber oft gestellt habe, ist Wie werden abhängige Bibliotheken in ein Archiv gepackt?
oder Sichtbarkeit verschiedener Klassen in einem gebündelten Archiv.
Wenn die Diskussion nicht zu einer Klassenladeprogrammhierarchie verschiedener Anwendungsserver, Ressourcenarchive usw. führt, ist es am besten, zurückzutreten und fortzufahren.

Die 5 wichtigsten Java Fragen:

  1. Fragen zu Java.util.collections
    Dies ist die Mutter aller Fragen. Sobald Sie den Interviewer in diesem Bereich effektiv landen können und wenn Sie vorbereitet sind, bleibt der Rest des Interviews normalerweise hier. Stellen Sie sicher, dass Sie Set, List, Map und die Bedeutung von Object.equals() und Object.hashCode() in jeder Implementierung dieser Schnittstellen kennen .
  2. Refactoring-Fragen
    Diese sind gut, wenn der Interviewer aufgeschlossen ist. Wenn der Interviewer bereits eine bestimmte Lösung im Sinn hat und Ihre nicht zu seiner/ihrer passt, sind Sie so ziemlich zum Scheitern verurteilt. Am besten stimmen Sie der Antwort zu: "Ich verstehe, dass andere Lösungen möglich sind."
  3. Fragen zum Multithreading in JDK5 im Vergleich zu früheren JDK-Versionen Ich habe festgestellt, dass es am besten ist, mit Java.util.concurrent Paketklassen vorbereitet zu sein. Doug Leas Buch enthält die meisten Antworten.
  4. Was ist neu in JDK1.6/JDK1.7 ...?
    Dies ist eine sichere Frage, die viele Interviewer gestellt haben. So sehr ich das hasse, ist es am besten, darauf vorbereitet zu sein. Zumindest wenn ich mich an ein paar erinnere, mit denen ich gearbeitet habe, und die Diskussion in eine andere Richtung leite, weicht ich dem Problem weitgehend und effektiv aus und löst es.
  5. Muster in Java API
    Immer wieder wurde ich gebeten, in der Java API auf ein GoF-Muster hinzuweisen. Seien Sie besser auf dieses vorbereitet.
6
CMR

Was magst du am meisten/am wenigsten an Java und warum?

5
Carsten

Unterschied zwischen einem Webserver und einem Webcontainer

5
user256777

warum würden Sie die toString () -Methode überschreiben?

5
SWD

Eine reinere Java Frage:

Was ist der Unterschied zwischen Schlaf und Warten? Nicht viele Leute verstehen tatsächlich, wie das Warten funktioniert.

Wie müssen Sie mit InterruptedExceptions umgehen?

4
David Nouls

Dies ist die Frage, vor der ich in meinem Interview stand.

Warum wird die Methode main in Java als public static void main (String [] args) bezeichnet?

Antworten:

1 .main () muss als public deklariert werden weil es von JVM aufgerufen wird, wenn die Programmausführung beginnt. JVM gehört nicht zu unserem Programmpaket.

Um auf main außerhalb des Pakets zugreifen zu können, müssen wir es als public deklarieren. Wenn wir es als etwas anderes als public deklarieren, wird ein Laufzeitfehler angezeigt aber nicht Übersetzungszeitfehler

2 .main () muss als statisch deklariert werden denn wenn eine Methode als statisch deklariert ist, können wir diese Methode außerhalb der Klasse mit ClassName.methodName (); aufrufen

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

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

Die JVM lädt zuerst die Test-Klasse, sucht nach den Kommandozeilenargumenten und ruft die Hauptmethode als Test.main () auf.

3 .main () muss als void main () deklariert werden, da JVM keinen Wert von main () erwartet. Daher muss es als void deklariert werden.

Wenn ein anderer Rückgabetyp angegeben wird, handelt es sich um einen RunTimeError, d. H. NoSuchMethodFoundError.

4 .main () muss String-Argumente als Arrays haben, da JVM die main-Methode durch Übergabe eines Befehlszeilen-Arguments aufruft. Da sie im String-Array-Objekt gespeichert sind, wird sie als Argument an main () übergeben.

4
Sai Upadhyayula

Was ist der Unterschied zwischen J2SE und J2EE (oder JSE und JEE)?

Ein Entwickler sollte darauf hinweisen können, dass es sich bei der Enterprise Edition im Grunde genommen um eine Schnittstellendefinition (d. H. Eine Spezifikation) handelt, die von Anbietern implementiert werden kann. Während die Standardausgabe eine eigenständige Implementierung ist

3
oxbow_lakes

Wie wirkt sich volatile auf die Codeoptimierung durch den Compiler aus?

3
Roman

Schreiben Sie ein Programm, das zwei Ganzzahlen akzeptiert, und geben Sie die größte von zwei Zahlen in eine Datei an einem Ort Ihrer Wahl aus. Beschreiben Sie nun, was die einzelnen Anweisungen bewirken.

Es ist möglich, von der Bedeutung der Importanweisung bis hin zur abnormalen Beendigung einen Drilldown durchzuführen

2
Everyone

Wie wäre es mit einer Session-Bean und beschreiben Sie einige Unterschiede zwischen statuslosen und statusbehafteten Session-Beans.

2
Kristian

Kern: 1. Was sind geprüfte und nicht geprüfte Ausnahmen? 2. Beim Hinzufügen einer neuen Ausnahme im Code, welcher Typ (aktiviert/deaktiviert) wann verwendet werden soll?

Servlet: 1. Was ist der Unterschied zwischen response.sendRedirect () und request.forward ()?

2
YoK

Eine Sache, die viele Java Programmierer nicht wissen, ist, dass Strings unveränderlich sind. Verwenden Sie also StringBuilder oder StringBuffer!

String s = "";
for(int i = 0; i < 100; i++) {
  s += "Strings " + "are " + "immutable, " + " so use StringBuilder/StringBuffer to reduce memory footprint";
}
1
Shervin Asgari

Wie funktioniert threads? Was ist synchronized? Wenn eine Klasse zwei synchronized Methoden enthält, können diese gleichzeitig von zwei Threads ausgeführt werden. Sie werden überrascht sein, wie viele Leute antworten ja. Dann werden alle Thread-bezogenen Fragen, z.B. Deadlock, Hunger usw.

1
fastcodejava

Wann würden Sie Session Beans oder Message Driven Beans verwenden?

Wie werden Transaktionen in Session Beans behandelt?

Was ist der Unterschied zwischen lokalen und Remote-Session-Beans? Bei dieser Frage geht es eher darum zu wissen, ob sich RPCs im Bild befinden oder nicht, da eine Methode, die sowohl als lokal als auch als remote verfügbar gemacht wird, möglicherweise immer noch anders funktioniert (Nebenwirkungen auf Parameter sind bei lokalen Geräten möglich, bei Remotes jedoch nicht).

Ein guter Test ist: Stellen Sie die Fragen niemals in derselben Reihenfolge. Wir hatten die Erfahrung mit Offshoring, dass sie die Antwort manchmal tatsächlich in der falschen Reihenfolge gaben :-). Als Ergebnis sollten Sie sicherstellen, dass Sie die Person, die Sie befragen, tatsächlich sehen können.

0
David Nouls

F. Nennen Sie ein Beispielszenario aus der Praxis, in dem Sie GenericServlet und nicht HttpServlet verwenden.

0
akjain

Beschreiben Sie die Unterschiede zwischen den "vier" (nicht drei;)) Typen der inneren Klasse.

0
mP.

Gute Fragen und gute Antworten von allen. Es ist schön, solche Fragen zu sehen. Ich möchte noch etwas hinzufügen, was dieses Antwort-Repository bereichern kann.

Für Core Java Ist main das Schlüsselwort in Java? More info

Java ist plattformunabhängig. Was ist mit JVM?

Können wir private Konstruktoren in der Klasse haben, wenn ja was die Verwendung davon ist?.

Warum brauchen wir Konstruktoren in der abstrakten Klasse, obwohl wir sie nicht instanziieren können? Mehr Info

Anstelle von vor allem gibt es viel mehr Fragen, die sich auf das Kern-Java beziehen. Mehr Info

0
Sanjay Jain

Vor- und Nachteile von thread-sicheren Klassen und explizit synchronisiertem Code sowie Beispiele für gute Anwendungen von beiden. Es ist oft nicht richtig, auf thread-sichere Klassen zu vertrauen, um die Datenkonsistenz in Multithread-Anwendungen zu gewährleisten.

0
Dan