Haylee  Dibbert

Haylee Dibbert

1625754780

Die Fachinformatiker Ausbildungen - Anwendungsentwicklung und Systemintegration!

✘ Werbung: Jetzt Premium Mitgliedschaft sichern - https://programmieren-starten.de/premium-mitgliedschaft-lp1/?utm_source=youtube&utm_medium=share&utm_term=die-fachiniformatiker-ausbildungen-anwendungsentwicklung-und-systemintegration&utm_content=link-in-videobeschreibung&utm_campaign=premium-mitgliedschaft

🔹 Kostenlos die Programmier-Einsteiger-Serie sichern:
►►► https://programmieren-starten.de/pev-lp1/?utm_source=youtube&utm_medium=share&utm_term=die-fachiniformatiker-ausbildungen-anwendungsentwicklung-und-systemintegration&utm_content=link-in-videobeschreibung&utm_campaign=pev

In diesem Video rede ich über die Ausbildungen zum Fachinformatiker für Anwendungsentwicklung und zum Fachinformatiker für Systemintegration.

#code #developer

What is GEEK

Buddha Community

Die Fachinformatiker Ausbildungen - Anwendungsentwicklung und Systemintegration!

Die über 100 wichtigsten Fragen und Antworten zu Java-Interviews, die Sie kennen sollten

Dieser Blog führt Sie durch die über 100 am häufigsten gestellten Java- und Core-Java-Interviewfragen und Antworten, die Sie vorbereiten müssen, um Ihr Vorstellungsgespräch zu meistern.

In diesem Blog zu Java-Interviewfragen werde ich einige der wichtigsten Fragen und Antworten zur Java-Programmierung auflisten, die Sie im Interviewprozess von anderen abheben werden. Java wird von ungefähr 10 Millionen Entwicklern weltweit verwendet, um Anwendungen für 15 Milliarden Geräte zu entwickeln, die Java unterstützen. Es wird auch verwendet, um Anwendungen für Trendtechnologien wie Big Data für Haushaltsgeräte wie Mobiltelefone und DTH-Boxen zu erstellen. Und deshalb wird Java heute überall verwendet! Aus diesem Grund ist die Java -Zertifizierung die am meisten nachgefragte Zertifizierung im Programmierbereich.

Lassen Sie uns zunächst einen Blick auf einige der am häufigsten gestellten Java-Interviewfragen werfen,   

Q1. Erklären Sie JDK, JRE und JVM?
Q2. Erklären Sie public static void main(String args[]) in Java
Q3. Warum ist Java plattformunabhängig?
Q4. Warum ist Java nicht 100 % objektorientiert?
Q5. Was sind Wrapper-Klassen in Java?
F6. Was sind Konstruktoren in Java?
F7. Was ist eine Singleton-Klasse in Java und wie können wir eine Klasse Singleton erstellen?
Q8. Was ist der Unterschied zwischen Array-Liste und Vektor in Java?
Q9. Was ist der Unterschied zwischen equals() und == in Java?
Q10. Was sind die Unterschiede zwischen Heap- und Stack-Speicher in Java?

Wir haben eine Liste der wichtigsten Java-Interviewfragen zusammengestellt, die in 7 Abschnitte unterteilt sind, nämlich:

  1. Grundlegende Java-Interviewfragen
  2. Fragen im Vorstellungsgespräch für Java-OOPs
  3. JDBC-Interviewfragen
  4. Fragen zum Frühlingsinterview
  5. Hibernate-Interviewfragen
  6. JSP-Interviewfragen
  7. Interviewfragen zu Java-Ausnahmen und -Threads

Als Java-Profi ist es wichtig, die richtigen Schlagworte zu kennen, die richtigen Technologien zu lernen und die richtigen Antworten auf häufig gestellte Java-Interviewfragen vorzubereiten. Hier ist eine endgültige Liste der wichtigsten Java-Interviewfragen, die einen schnellen Durchbruch zum nächsten Level garantieren.


Beginnen wir also mit dem ersten Satz grundlegender Java-Interviewfragen.

 

Grundlegende Java-Interviewfragen für Studienanfänger

Q1. Erklären Sie JDK, JRE und JVM?

JDKJREJVM
Es steht für Java Development Kit.Es steht für Java Runtime Environment.Es steht für Java Virtual Machine.
Es ist das Werkzeug, das zum Kompilieren, Dokumentieren und Verpacken von Java-Programmen erforderlich ist.JRE bezeichnet eine Laufzeitumgebung, in der Java-Bytecode ausgeführt werden kann.Es ist eine abstrakte Maschine. Es ist eine Spezifikation, die eine Laufzeitumgebung bereitstellt, in der Java-Bytecode ausgeführt werden kann.
Es enthält JRE + Entwicklungstools.Es ist eine Implementierung der JVM, die physisch existiert.JVM folgt drei Notationen: Spezifikation, Implementierung und  Laufzeitinstanz .

 

Q2. Erklären Sie public static void main(String args[]) in Java.

main() in Java ist der Einstiegspunkt für jedes Java-Programm. Es wird immer als public static void main(String[] args) geschrieben .

  • public : Public ist ein Zugriffsmodifikator, mit dem angegeben wird, wer auf diese Methode zugreifen kann. Öffentlich bedeutet, dass jede Klasse auf diese Methode zugreifen kann.
  • static : Es ist ein Schlüsselwort in Java, das angibt, dass es klassenbasiert ist. main() ist in Java statisch, sodass darauf zugegriffen werden kann, ohne die Instanz einer Klasse zu erstellen. Falls main nicht statisch gemacht wird, gibt der Compiler einen Fehler aus, wenn main () von der JVM aufgerufen wird, bevor Objekte erstellt werden, und nur statische Methoden können direkt über die Klasse aufgerufen werden.
  • void : Dies ist der Rückgabetyp der Methode. Void definiert die Methode, die keinen Wert zurückgibt.
  • main : Dies ist der Name der Methode, die von JVM nur als Ausgangspunkt für eine Anwendung mit einer bestimmten Signatur gesucht wird. Es ist die Methode, bei der die Hauptausführung stattfindet.
  • String args[] : Dies ist der Parameter, der an die Hauptmethode übergeben wird.

 

Q3. Warum ist Java plattformunabhängig?

Java wird aufgrund seiner Bytecodes als plattformunabhängig bezeichnet, die auf jedem System unabhängig vom zugrunde liegenden Betriebssystem ausgeführt werden können.

 

Q4. Warum ist Java nicht 100 % objektorientiert?


Java ist nicht zu 100 % objektorientiert, da es acht primitive Datentypen wie boolean, byte, char, int, float, double, long, short verwendet, die keine Objekte sind.

Q5. Was sind Wrapper-Klassen in Java?

 

Wrapper-Klassen wandeln die Java-Primitive in die Referenztypen (Objekte) um. Jedem primitiven Datentyp ist eine Klasse zugeordnet. Diese werden als Wrapper-Klassen bezeichnet, da sie den primitiven Datentyp in ein Objekt dieser Klasse „verpacken“. Siehe das folgende Bild, das verschiedene primitive Typen, Wrapper-Klassen und Konstruktor-Argumente anzeigt.

 

Q6. Was sind Konstruktoren in Java?

In Java bezieht sich Konstruktor auf einen Codeblock, der zum Initialisieren eines Objekts verwendet wird. Er muss den gleichen Namen haben wie die Klasse. Außerdem hat es keinen Rückgabetyp und wird automatisch aufgerufen, wenn ein Objekt erstellt wird.

Es gibt zwei Arten von Konstruktoren:

  1. Standardkonstruktor: In Java ist ein Standardkonstruktor derjenige, der keine Eingaben entgegennimmt. Mit anderen Worten, Standardkonstruktoren sind die Konstruktoren ohne Argumente, die standardmäßig erstellt werden, falls Sie keinen anderen Konstruktor vom Benutzer definieren. Sein Hauptzweck besteht darin, die Instanzvariablen mit den Standardwerten zu initialisieren. Außerdem wird es hauptsächlich für die Objekterstellung verwendet.
  2. Parametrisierter Konstruktor: Der parametrisierte Konstruktor in Java ist der Konstruktor, der in der Lage ist, die Instanzvariablen mit den bereitgestellten Werten zu initialisieren. Mit anderen Worten, die Konstruktoren, die die Argumente übernehmen, werden als parametrisierte Konstruktoren bezeichnet.

 

Q7. Was ist eine Singleton-Klasse in Java und wie können wir eine Klasse Singleton erstellen?

Die Singleton-Klasse ist eine Klasse, deren jeweils nur eine Instanz in einer JVM erstellt werden kann. Eine Klasse kann zu Singleton gemacht werden, indem ihr Konstruktor privat gemacht wird.

Q8. Was ist der Unterschied zwischen Array-Liste und Vektor in Java?

AnordnungslisteVektor
Array-Liste ist nicht synchronisiert. Vektor ist synchronisiert.
Die Array-Liste ist schnell, da sie nicht synchronisiert ist.Vector ist langsam, da es Thread-sicher ist.
Wenn ein Element in die Array-Liste eingefügt wird, erhöht es seine Array-Größe um 50 %.Vector verdoppelt standardmäßig die Größe seines Arrays.
Die Array-Liste definiert nicht die Inkrementgröße.Der Vektor definiert die Inkrementgröße.
Die Array-Liste kann Iterator nur zum Durchlaufen einer Array-Liste verwenden.Vector kann sowohl Enumeration als auch Iterator zum Durchlaufen verwenden.

 

Q9. Was ist der Unterschied zwischen equals() und == in Java?

Die Equals()-Methode ist in der Object-Klasse in Java definiert und wird zum Überprüfen der Gleichheit von zwei durch die Geschäftslogik definierten Objekten verwendet.

„==“ oder Gleichheitsoperator in Java ist ein binärer Operator, der von der Java-Programmiersprache bereitgestellt wird und zum Vergleichen von Grundelementen und Objekten verwendet wird. public boolean equals(Object o) ist die von der Object-Klasse bereitgestellte Methode. Die Standardimplementierung verwendet den Operator ==, um zwei Objekte zu vergleichen. Beispiel: Methode kann wie String-Klasse überschrieben werden. Die Methode equals() wird verwendet, um die Werte zweier Objekte zu vergleichen.

Q10. Wann können Sie das Schlüsselwort super verwenden?

In Java ist das Schlüsselwort super eine Referenzvariable, die auf ein unmittelbar übergeordnetes Klassenobjekt verweist.

Wenn Sie eine Instanz einer Unterklasse erstellen, erstellen Sie auch eine Instanz der übergeordneten Klasse, auf die durch die Superreferenzvariable verwiesen wird.

Die Verwendungen des Java-Schlüsselworts super sind- 

  1. Um auf eine Instanzvariable einer unmittelbar übergeordneten Klasse zu verweisen, verwenden Sie super.
  2. Mit dem Schlüsselwort super kann die Methode einer unmittelbar übergeordneten Klasse aufgerufen werden.
  3. Super() kann verwendet werden, um den Konstruktor der unmittelbar übergeordneten Klasse aufzurufen.

 

Q11. Was unterscheidet ein HashSet von einem TreeSet?

HashSetBaumSet
Es wird durch eine Hash-Tabelle implementiert.TreeSet implementiert die SortedSet-Schnittstelle, die Bäume zum Speichern von Daten verwendet.
Es lässt das Nullobjekt zu.Das Nullobjekt ist nicht zulässig.
Es ist schneller als TreeSet, insbesondere bei Such-, Einfüge- und Löschvorgängen.Es ist für diese Operationen langsamer als HashSet.
Es behält Elemente nicht in einer geordneten Weise bei.Die Elemente werden in einer sortierten Reihenfolge verwaltet.
Es verwendet die Methode equals(), um zwei Objekte zu vergleichen.Es verwendet die Methode "compareTo()" zum Vergleichen zweier Objekte.
Es erlaubt kein heterogenes Objekt.Es erlaubt ein heterogenes Objekt.

 

Q12. Was sind die Unterschiede zwischen HashMap und HashTable in Java?

 

HashMapHash-tabelle
Es ist nicht synchronisiert. Es kann ohne den richtigen Synchronisationscode nicht von vielen Threads gemeinsam genutzt werden.Es ist synchronisiert. Es ist Thread-sicher und kann mit vielen Threads geteilt werden.
Es erlaubt einen Nullschlüssel und mehrere Nullwerte.Es erlaubt keinen Nullschlüssel oder -wert.
ist eine neue Klasse, die in JDK 1.2 eingeführt wurde.Es war auch in früheren Java-Versionen vorhanden.
Es ist schneller.Es ist langsamer.
Es wird durch den Iterator durchlaufen.Es wird durch Enumerator und Iterator durchlaufen.
Es verwendet einen Fail-Fast-Iterator.Es verwendet einen Enumerator, der nicht fehlerfrei ist.
Es erbt die Klasse AbstractMap.Es erbt die Dictionary-Klasse.

 

Q13. Welche Bedeutung hat Reflektion in Java?

Reflection ist eine Laufzeit-API zum Untersuchen und Ändern des Verhaltens von Methoden, Klassen und Schnittstellen. Java Reflection ist ein leistungsstarkes Tool, das wirklich nützlich sein kann. Mit Java Reflection können Sie Klassen, Schnittstellen, Felder und Methoden während der Laufzeit analysieren, ohne zu wissen, wie sie zur Kompilierzeit aufgerufen werden. Reflektion kann auch verwendet werden, um neue Objekte zu erstellen, Methoden aufzurufen und Feldwerte abzurufen/einzustellen. Externe, benutzerdefinierte Klassen können verwendet werden, indem Instanzen von Erweiterbarkeitsobjekten mit ihren vollständig qualifizierten Namen erstellt werden. Debugger können Reflektion auch verwenden, um private Member von Klassen zu untersuchen.

F14. Wie kann die Serialisierung von Attributen einer Klasse in Java nicht zugelassen werden?

Das NonSerialized-Attribut kann verwendet werden, um zu verhindern, dass Mitgliedsvariablen serialisiert werden.
Sie sollten auch ein Objekt, das möglicherweise sicherheitsrelevante Daten enthält, nach Möglichkeit nicht serialisierbar machen. Wenden Sie das NonSerialized-Attribut auf bestimmte Felder an, die vertrauliche Daten speichern, wenn das Objekt serialisiert werden muss. Wenn Sie diese Felder nicht von der Serialisierung ausschließen, sind die darin gespeicherten Daten für alle Programme mit Serialisierungsberechtigung sichtbar.

Q15. Können Sie einen Konstruktor einer Klasse innerhalb eines anderen Konstruktors aufrufen?

Ja, wir können einen Konstruktor einer Klasse innerhalb eines anderen Konstruktors aufrufen. Dies wird auch als Konstruktorverkettung bezeichnet. Die Konstruktorverkettung kann auf zwei Arten erfolgen:

  1. Innerhalb derselben Klasse: Für Konstruktoren in derselben Klasse kann das Schlüsselwort this() verwendet werden.
  2. Aus der Basisklasse: Das Schlüsselwort super() wird verwendet, um den Konstruktor aus der Basisklasse aufzurufen.
    Die Konstruktorverkettung folgt dem Prozess der Vererbung. Der Konstruktor der Unterklasse ruft zuerst den Konstruktor der Oberklasse auf. Aus diesem Grund beginnt die Erstellung des Objekts der Unterklasse mit der Initialisierung der Datenelemente der Oberklasse. Die Konstruktorverkettung funktioniert ähnlich mit einer beliebigen Anzahl von Klassen. Jeder Konstruktor ruft die Kette bis zum Anfang der Kette auf.

 

Q16. Kontinuierliche Speicherorte werden normalerweise zum Speichern tatsächlicher Werte in einem Array verwendet, jedoch nicht in ArrayList. Erklären.

Ein Array enthält im Allgemeinen Elemente der primitiven Datentypen wie int, float usw. In solchen Fällen speichert das Array diese Elemente direkt an zusammenhängenden Speicherstellen. Während eine ArrayList keine primitiven Datentypen enthält. Eine arrayList enthält anstelle des Objekts selbst die Referenz der Objekte an verschiedenen Speicherorten. Deshalb werden die Objekte nicht an zusammenhängenden Speicherplätzen gespeichert.

 

Q17. Wie unterscheidet sich die Erstellung eines Strings mit new() von der eines Literals?
Wenn wir mit new() einen String erstellen, wird ein neues Objekt erstellt. Wenn wir hingegen einen String mit der String-Literal-Syntax erstellen, kann es sein, dass ein bereits vorhandenes Objekt mit demselben Namen zurückgegeben wird.

 

Q18. Warum ist eine Synchronisation notwendig? Erläutern Sie anhand eines relevanten Beispiels.

Java erlaubt die Ausführung mehrerer Threads. Sie greifen möglicherweise auf dieselbe Variable oder dasselbe Objekt zu. Die Synchronisation hilft, Threads nacheinander auszuführen.
Es ist wichtig, da es hilft, alle gleichzeitigen Threads synchron auszuführen. Es verhindert Speicherkonsistenzfehler aufgrund des Zugriffs auf gemeinsam genutzten Speicher. Ein Beispiel für einen Synchronisationscode ist-

public synchronized void increment()
{
a++;
}

Da wir diese Funktion synchronisiert haben, kann dieser Thread das Objekt erst verwenden, nachdem der vorherige Thread es verwendet hat.

Q19. Erklären Sie den Begriff „Double Brace Initialization“ in Java?

Double Brace Initialization ist ein Java-Begriff, der sich auf die Kombination zweier unabhängiger Prozesse bezieht. Dabei werden zwei Klammern verwendet. Die erste geschweifte Klammer erstellt eine anonyme innere Klasse. Die zweite geschweifte Klammer ist ein Initialisierungsblock. Wenn diese beiden zusammen verwendet werden, wird dies als Double Brace Initialization bezeichnet. Die innere Klasse hat einen Verweis auf die einschließende äußere Klasse, im Allgemeinen unter Verwendung des 'this'-Zeigers. Es wird verwendet, um sowohl die Erstellung als auch die Initialisierung in einer einzigen Anweisung durchzuführen. Es wird im Allgemeinen verwendet, um Sammlungen zu initialisieren. Es reduziert den Code und macht ihn auch lesbarer.

 

Q20. Warum wird gesagt, dass die Methode length() der Klasse String keine genauen Ergebnisse zurückgibt?

Die Methode length() der Klasse String gibt keine genauen Ergebnisse zurück, da
sie einfach die Anzahl der Zeichen innerhalb des Strings berücksichtigt. Mit anderen Worten, Codepunkte außerhalb der BMP (Basic Multilingual Plane), dh Codepunkte mit einem Wert von U+10000 oder darüber, werden ignoriert.

Der Grund dafür ist historisch. Eines der ursprünglichen Ziele von Java war es, den gesamten Text als Unicode zu betrachten; Dennoch definierte Unicode zu diesem Zeitpunkt keine Codepunkte außerhalb des BMP. Es war zu spät, char zu ändern, als Unicode solche Codepunkte spezifizierte.

 

Q21. Was sind die Unterschiede zwischen Heap- und Stack-Speicher in Java?

Der Hauptunterschied zwischen Heap- und Stack-Speicher sind:

MerkmaleStapelHaufen
SpeicherStapelspeicher wird nur von einem Ausführungsthread verwendet.Heap-Speicher wird von allen Teilen der Anwendung verwendet.
ZugriffAuf den Stapelspeicher kann von anderen Threads nicht zugegriffen werden.Im Heap gespeicherte Objekte sind global zugänglich.
SpeicherverwaltungFolgt der LIFO-Art, um Speicher freizugeben.Die Speicherverwaltung basiert auf der Generation, die jedem Objekt zugeordnet ist.
LebensdauerExistiert bis zum Ende der Ausführung des Threads.Der Heap-Speicher lebt vom Beginn bis zum Ende der Anwendungsausführung.
VerwendungszweckDer Stapelspeicher enthält nur lokale primitive und Referenzvariablen zu Objekten im Heap-Raum.Wenn ein Objekt erstellt wird, wird es immer im Heap-Bereich gespeichert.

Q22. Was ist ein Paket in Java? Listen Sie verschiedene Vorteile von Paketen auf.

Pakete in Java sind die Sammlung verwandter Klassen und Schnittstellen, die gebündelt sind. Durch die Verwendung von Paketen können Entwickler den Code einfach modularisieren und seine Wiederverwendung optimieren. Außerdem kann der Code in den Paketen von anderen Klassen importiert und wiederverwendet werden. Nachfolgend habe ich einige seiner Vorteile aufgelistet:

  • Pakete helfen dabei, Namenskonflikte zu vermeiden
  • Sie bieten eine einfachere Zugriffskontrolle auf den Code
  • Pakete können auch versteckte Klassen enthalten, die für die äußeren Klassen nicht sichtbar sind und nur innerhalb des Pakets verwendet werden
  • Erstellt eine ordnungsgemäße hierarchische Struktur, die das Auffinden der zugehörigen Klassen erleichtert

Q23. Warum werden in Java keine Zeiger verwendet?

Java verwendet keine Zeiger, weil sie unsicher sind und die Komplexität des Programms erhöhen. Da Java für seine Einfachheit des Codes bekannt ist, wird das Hinzufügen des Konzepts von Zeigern widersprüchlich sein. Da JVM außerdem für die implizite Speicherzuweisung verantwortlich ist, wird von Zeigern in Java abgeraten, um einen direkten Zugriff auf den Speicher durch den Benutzer zu vermeiden.

Q24. Was ist der JIT-Compiler in Java?

JIT steht für Just-In-Time-Compiler in Java. Es ist ein Programm, das beim Konvertieren des Java-Bytecodes in Anweisungen hilft, die direkt an den Prozessor gesendet werden. Standardmäßig ist der JIT-Compiler in Java aktiviert und wird immer dann aktiviert, wenn eine Java-Methode aufgerufen wird. Der JIT-Compiler kompiliert dann den Bytecode der aufgerufenen Methode in nativen Maschinencode und kompiliert ihn „just in time“ zur Ausführung. Sobald die Methode kompiliert wurde, ruft die JVM den kompilierten Code dieser Methode direkt auf, anstatt ihn zu interpretieren. Deshalb ist es häufig für die Performance-Optimierung von Java-Anwendungen zur Laufzeit zuständig.

Q25. Was sind Zugriffsmodifikatoren in Java?

In Java sind Zugriffsmodifikatoren spezielle Schlüsselwörter, die verwendet werden, um den Zugriff auf eine Klasse, einen Konstruktor, ein Datenelement und eine Methode in einer anderen Klasse einzuschränken. Java unterstützt vier Arten von Zugriffsmodifikatoren:

  1. Standard
  2. Privat
  3. Geschützt
  4. Öffentlich
ModifikatorStandardPrivatGeschütztÖffentlich
Selbe KlasseJAJAJAJA
Dieselbe PaketunterklasseJANEINJAJA
Gleiches Paket, keine UnterklasseJANEINJAJA
Andere PaketunterklasseNEINNEINJAJA
Andere Paket-Nicht-UnterklasseNEINNEINNEINJA

Q26. Definieren Sie eine Java-Klasse.

Eine Klasse in Java ist eine Blaupause, die alle Ihre Daten enthält. Eine Klasse enthält Felder (Variablen) und Methoden, um das Verhalten eines Objekts zu beschreiben. Schauen wir uns die Syntax einer Klasse an.

class Abc {
member variables // class body
methods}

Q27. Was ist ein Objekt in Java und wie wird es erstellt?

Ein Objekt ist eine reale Entität, die einen Zustand und ein Verhalten hat. Ein Objekt hat drei Eigenschaften:

  1. Bundesland
  2. Verhalten
  3. Identität

Ein Objekt wird mit dem Schlüsselwort „new“ erstellt. Zum Beispiel:

Klassenname obj = neuer Klassenname();

Q28. Was ist objektorientierte Programmierung?

Objektorientierte Programmierung oder allgemein als OOPs bekannt, ist ein Programmiermodell oder -ansatz, bei dem die Programme eher um Objekte als um Logik und Funktionen herum organisiert sind. Mit anderen Worten, OOP konzentriert sich hauptsächlich auf die Objekte, die manipuliert werden müssen, anstatt auf Logik. Dieser Ansatz ist ideal für große und komplexe Programmcodes, die aktiv aktualisiert oder gewartet werden müssen.

Q29. Was sind die Hauptkonzepte von OOPs in Java?

Objektorientierte Programmierung oder OOPs ist ein Programmierstil, der mit Konzepten verbunden ist wie:

  1. Vererbung: Vererbung ist ein Prozess, bei dem eine Klasse die Eigenschaften einer anderen erwirbt.
  2. Kapselung: Kapselung in Java ist ein Mechanismus, bei dem Daten und Code zu einer Einheit zusammengefasst werden.
  3. Abstraktion: Abstraktion ist die Methode, die Implementierungsdetails vor dem Benutzer zu verbergen und den Benutzern nur die Funktionalität bereitzustellen.
  4. Polymorphismus: Polymorphismus ist die Fähigkeit einer Variablen, Funktion oder eines Objekts, mehrere Formen anzunehmen.

Q30. Was ist der Unterschied zwischen einer lokalen Variablen und einer Instanzvariablen?

In Java wird eine  lokale Variable normalerweise innerhalb einer Methode, eines Konstruktors oder eines Blocks verwendet  und hat nur einen lokalen Geltungsbereich. Daher kann diese Variable nur innerhalb eines Blocks verwendet werden. Der größte Vorteil einer lokalen Variablen besteht darin, dass andere Methoden in der Klasse diese Variable nicht einmal bemerken.

Beispiel

if(x > 100)
{
String test = "Edureka";
}

Während eine  Instanzvariable in Java eine Variable ist, die an ihr Objekt selbst gebunden ist. Diese Variablen werden innerhalb einer  Klasse deklariert , aber außerhalb einer Methode. Jedes Objekt dieser Klasse erstellt seine eigene Kopie der Variablen, während es sie verwendet. Daher spiegeln sich alle an der Variablen vorgenommenen Änderungen nicht in anderen Instanzen dieser Klasse wider und sind nur an diese bestimmte Instanz gebunden.

class Test{
public String EmpName;
public int empAge;
}

Q31. Unterscheiden Sie zwischen den Konstruktoren und Methoden in Java?

MethodenKonstrukteure
1. Wird verwendet, um das Verhalten eines Objekts darzustellen1. Wird verwendet, um den Zustand eines Objekts zu initialisieren
2. Muss einen Rückgabetyp haben2. Haben Sie keinen Rückgabetyp
3. Muss explizit aufgerufen werden3. Wird implizit aufgerufen
4. Der Compiler stellt keine Standardmethode bereit4. Ein Standardkonstruktor wird vom Compiler bereitgestellt, wenn die Klasse keinen hat
5. Der Methodenname kann mit dem Klassennamen identisch sein oder nicht5. Konstruktorname muss immer gleich dem Klassennamen sein

Falls Sie mit diesen Core Java-Interviewfragen vor Herausforderungen stehen, kommentieren Sie bitte Ihre Probleme im folgenden Abschnitt.

Q32. Was ist das Schlüsselwort final in Java?

final ist ein spezielles Schlüsselwort in Java, das als Nicht-Zugriffsmodifikator verwendet wird. Eine finale Variable kann in verschiedenen Kontexten verwendet werden, wie zum Beispiel:

  • letzte Variable

Wenn das Schlüsselwort final mit einer Variablen verwendet wird, kann sein Wert nach der Zuweisung nicht mehr geändert werden. Falls der letzten Variablen kein Wert zugewiesen wurde, kann ihr nur mit dem Klassenkonstruktor ein Wert zugewiesen werden.

  • endgültige Methode

Wenn eine Methode als final deklariert wird, kann sie nicht von der erbenden Klasse überschrieben werden.

  • Abschlussklasse

Wenn eine Klasse in Java als final deklariert wird, kann sie nicht durch eine Unterklasse class erweitert werden, aber sie kann eine andere Klasse erweitern.

Q33. Was ist der Unterschied zwischen Break- und Continue-Anweisungen?

brechenfortsetzen
1. Kann in switch- und loop-Anweisungen (for, while, do while) verwendet werden1. Kann nur mit Schleifenanweisungen verwendet werden
2. Es bewirkt, dass die switch- oder loop-Anweisungen in dem Moment beendet werden, in dem es ausgeführt wird2. Es beendet die Schleife nicht, sondern bewirkt, dass die Schleife zur nächsten Iteration springt
3. Er schließt die innerste umschließende Schleife oder den Schalter sofort ab3. Ein Continue innerhalb einer Schleife, die mit einem Schalter verschachtelt ist, bewirkt, dass die nächste Schleifeniteration ausgeführt wird

Beispiel Pause:

for (int i = 0; i < 5; i++)</div>
<div>
<pre>{
if (i == 3)
{
break;
}
System.out.println(i);
}

Beispiel weiter:

for (int i = 0; i < 5; i++)
{
if(i == 2)
{
continue;
}
System.out.println(i);
}

Q34. Was ist eine Endlosschleife in Java? Erklären Sie mit einem Beispiel.

Eine Endlosschleife ist eine Anweisungssequenz in Java, die endlos wiederholt wird, wenn ein funktionaler Ausgang nicht erreicht wird. Diese Art von Schleife kann das Ergebnis eines Programmierfehlers oder auch eine bewusste Aktion basierend auf dem Anwendungsverhalten sein. Eine Endlosschleife wird automatisch beendet, sobald die Anwendung beendet wird.

Zum Beispiel:

public class InfiniteForLoopDemo
{
public static void main(String[] arg) {
for(;;)
System.out.println("Welcome to Edureka!");
// To terminate this program press ctrl + c in the console.
}
}

Q35. Was ist der Unterschied zwischen this() und super() in Java?

In Java sind super() und this() beides spezielle Schlüsselwörter, die zum Aufrufen des Konstruktors verwendet werden. 

diese()super()
1. this() repräsentiert die aktuelle Instanz einer Klasse1. super() repräsentiert die aktuelle Instanz einer Eltern-/Basisklasse
2. Wird verwendet, um den Standardkonstruktor derselben Klasse aufzurufen2. Wird verwendet, um den Standardkonstruktor der Eltern-/Basisklasse aufzurufen
3. Wird verwendet, um auf Methoden der aktuellen Klasse zuzugreifen3. Wird verwendet, um auf Methoden der Basisklasse zuzugreifen
4. Wird zum Zeigen der aktuellen Klasseninstanz verwendet4. Wird verwendet, um auf die Instanz der Oberklasse zu zeigen
5. Muss die erste Zeile eines Blocks sein5. Muss die erste Zeile eines Blocks sein

Q36. Was ist Java String Pool?

Der Java-String-Pool bezieht sich auf eine Sammlung von Strings, die im Heap-Speicher gespeichert sind. Dabei prüft der String-Pool bei jeder Erstellung eines neuen Objekts zunächst, ob das Objekt bereits im Pool vorhanden ist oder nicht. Wenn es vorhanden ist, wird dieselbe Referenz an die Variable zurückgegeben, andernfalls wird ein neues Objekt im String-Pool erstellt und die entsprechende Referenz zurückgegeben.

String-Pool - Java-Interviewfragen - Edureka

Q37. Unterscheide zwischen statischen und nicht-statischen Methoden in Java.

Statische MethodeNicht statische Methode
1. Das Schlüsselwort static  muss vor dem Methodennamen verwendet werden1. Das statische Schlüsselwort muss nicht vor dem Methodennamen verwendet werden
2. Der Aufruf erfolgt über die Klasse (className.methodName) 2. Sie kann wie jede allgemeine Methode aufgerufen werden
3. Sie können nicht auf nicht statische Instanzvariablen oder Methoden zugreifen3. Es kann auf jede statische Methode und jede statische Variable zugreifen, ohne eine Instanz der Klasse zu erstellen

Q38. Erklären Sie den Begriff „Double Brace Initialization“ in Java?

Double Brace Initialization ist ein Java-Begriff, der sich auf die Kombination zweier unabhängiger Prozesse bezieht. Dabei werden zwei Klammern verwendet. Die erste geschweifte Klammer erstellt eine anonyme innere Klasse. Die zweite geschweifte Klammer ist ein Initialisierungsblock. Wenn diese beiden zusammen verwendet werden, wird dies als Double Brace Initialization bezeichnet. Die innere Klasse hat einen Verweis auf die umschließende äußere Klasse, wobei im Allgemeinen der 'this'-Zeiger verwendet wird. Es wird verwendet, um sowohl die Erstellung als auch die Initialisierung in einer einzigen Anweisung durchzuführen. Es wird im Allgemeinen verwendet, um Sammlungen zu initialisieren. Es reduziert den Code und macht ihn auch lesbarer.

Q39. Was ist Konstruktorverkettung in Java?

In Java ist die Konstruktorverkettung der Prozess des Aufrufens eines Konstruktors von einem anderen in Bezug auf das aktuelle Objekt. Die Konstruktorverkettung ist nur durch Legacy möglich, wo ein Unterklassenkonstruktor dafür verantwortlich ist, zuerst den Konstruktor der Oberklasse aufzurufen. Es kann eine beliebige Anzahl von Klassen in der Konstruktorkette geben. Konstruktorverkettung kann auf zwei Arten erreicht werden:

  1. Innerhalb derselben Klasse mit this()
  2. Von der Basisklasse mit super()

Q40. Unterschied zwischen String, StringBuilder und StringBuffer.

FaktorSchnurStringBuilderZeichenfolgenpuffer
LagerflächeKonstanter String-PoolHeap-BereichHeap-Bereich
WandlungsfähigkeitUnveränderlichVeränderlichVeränderlich
FadensicherheitJaNeinJa
LeistungSchnellEffizienterWeniger effizient

Q41. Was ist ein Classloader in Java?

Der  Java ClassLoader ist eine Teilmenge von JVM (Java Virtual Machine), die für das Laden der Klassendateien verantwortlich ist. Immer wenn ein Java-Programm ausgeführt wird, wird es zuerst vom Classloader geladen. Java bietet drei eingebaute Classloader:

  1. Bootstrap-Klassenlader
  2. Erweiterung ClassLoader
  3. System-/Anwendungs-ClassLoader

Q42. Warum sind Java-Strings von Natur aus unveränderlich?

In Java sind String-Objekte von Natur aus unveränderlich, was einfach bedeutet, dass der Zustand des String-Objekts nach seiner Erstellung nicht mehr geändert werden kann. Immer wenn Sie versuchen, den Wert dieses Objekts zu aktualisieren, anstatt die Werte dieses bestimmten Objekts zu aktualisieren, erstellt Java ein neues String-Objekt. Java-String-Objekte sind unveränderlich, da String-Objekte im Allgemeinen im String-Pool zwischengespeichert werden. Da Zeichenfolgenliterale normalerweise von mehreren Clients gemeinsam genutzt werden, kann sich die Aktion eines Clients auf den Rest auswirken. Es verbessert die Sicherheit, das Caching, die Synchronisierung und die Leistung der Anwendung. 

Q43. Was ist der Unterschied zwischen einem Array und einer Array-Liste?

ArrayAnordnungsliste
Darf keine Werte unterschiedlicher Datentypen enthaltenKann Werte verschiedener Datentypen enthalten.
Die Größe muss zum Zeitpunkt der Deklaration definiert werdenDie Größe kann dynamisch geändert werden
Sie müssen den Index angeben, um Daten hinzuzufügenDer Index muss nicht angegeben werden
Arrays sind nicht typparametrisiertArraylisten sind Typ 
Arrays können sowohl primitive Datentypen als auch Objekte enthaltenArraylisten können nur Objekte enthalten, es sind keine primitiven Datentypen erlaubt

Q44. Was ist eine Karte in Java?

In Java ist Map eine Schnittstelle des Util-Pakets, das eindeutige Schlüssel Werten zuordnet. Die Map-Schnittstelle ist keine Teilmenge der Haupt-Collection-Schnittstelle und verhält sich daher kaum anders als die anderen Collection-Typen. Im Folgenden sind einige der Merkmale der Kartenschnittstelle aufgeführt: 

  1. Die Karte enthält keine doppelten Schlüssel.

Jede Taste kann maximal einen Wert abbilden.

Q45. Was ist eine Sammlungsklasse in Java? Listen Sie seine Methoden und Schnittstellen auf.

In Java ist die Sammlung ein Framework, das als Architektur zum Speichern und Bearbeiten einer Gruppe von Objekten fungiert. Mit Sammlungen können Sie verschiedene Aufgaben wie Suchen, Sortieren, Einfügen, Bearbeiten, Löschen usw. ausführen. Das Java-Sammlungs-Framework umfasst Folgendes:

  • Schnittstellen
  • Klassen
  • Methoden

Das folgende Bild zeigt die vollständige Hierarchie der Java-Sammlung.

FrameworkHierarchy - Java-Sammlungen - Edureka

 


OOPS Java-Interviewfragen

Q1. Was ist Polymorphismus?

Polymorphismus wird kurz als „eine Schnittstelle, viele Implementierungen“ beschrieben. Polymorphismus ist ein Merkmal dafür, etwas in unterschiedlichen Kontexten eine unterschiedliche Bedeutung oder Verwendung zuweisen zu können – insbesondere, um zuzulassen, dass eine Entität wie eine Variable, eine Funktion oder ein Objekt mehr als eine Form hat. Es gibt zwei Arten von Polymorphismus:

  1. Kompilierzeit-Polymorphismus
  2. Laufzeitpolymorphismus

Der Polymorphismus zur Kompilierzeit ist das Überladen von Methoden, während der Polymorphismus zur Laufzeit mithilfe von Vererbung und Schnittstelle erfolgt.

 

Q2. Was ist Laufzeitpolymorphismus oder dynamischer Methodenversand?

In Java ist Laufzeitpolymorphismus oder dynamischer Methodenversand ein Prozess, bei dem ein Aufruf einer überschriebenen Methode zur Laufzeit und nicht zur Kompilierzeit aufgelöst wird. Dabei wird eine überschriebene Methode über die Referenzvariable einer Oberklasse aufgerufen. Werfen wir einen Blick auf das folgende Beispiel, um es besser zu verstehen.

class Car {
void run()
{
System.out.println(“car is running”); 
}
}
class Audi extends Car {
void run()
{
System.out.prinltn(“Audi is running safely with 100km”);
}
public static void main(String args[])
{
Car b= new Audi();    //upcasting
b.run();
}
}

Q3. Was ist Abstraktion in Java?

Abstraktion bezieht sich auf die Qualität des Umgangs mit Ideen und nicht mit Ereignissen. Es geht im Wesentlichen darum, die Details zu verbergen und dem Benutzer die wesentlichen Dinge zu zeigen. Man kann also sagen, dass Abstraktion in Java der Prozess ist, die Implementierungsdetails vor dem Benutzer zu verbergen und ihm nur die Funktionalität zu offenbaren. Abstraktion kann auf zwei Arten erreicht werden:

  1. Abstrakte Klassen (0-100% der Abstraktion können erreicht werden)
  2. Schnittstellen (100 % Abstraktion erreichbar)

Q4. Was meinst du mit einer Schnittstelle in Java?

Eine Schnittstelle in Java ist eine Blaupause einer Klasse oder Sie können sagen, dass es eine Sammlung abstrakter Methoden und statischer Konstanten ist. In einer Schnittstelle ist jede Methode öffentlich und abstrakt, enthält aber keinen Konstruktor. Interface ist also im Grunde eine Gruppe verwandter Methoden mit leeren Körpern. Beispiel:

public interface Animal {
  public void eat();
  public void sleep();
  public void run();
}

Q5. Was ist der Unterschied zwischen abstrakten Klassen und Schnittstellen?

Abstrakte KlasseSchnittstellen
Eine abstrakte Klasse kann vollständigen Standardcode und/oder nur die Details bereitstellen, die überschrieben werden müssenEine Schnittstelle kann überhaupt keinen Code liefern, nur die Signatur
Im Fall einer abstrakten Klasse darf eine Klasse nur eine abstrakte Klasse erweiternEine Klasse kann mehrere Schnittstellen implementieren
Eine abstrakte Klasse kann nicht-abstrakte Methoden habenAlle Methoden eines Interfaces sind abstrakt
Eine abstrakte Klasse kann Instanzvariablen habenEine Schnittstelle kann keine Instanzvariablen haben
Eine abstrakte Klasse kann jede Sichtbarkeit haben: öffentlich, privat, geschütztDie Sichtbarkeit einer Schnittstelle muss öffentlich (oder) keine sein
Wenn wir einer abstrakten Klasse eine neue Methode hinzufügen, haben wir die Möglichkeit, eine Standardimplementierung bereitzustellen, sodass der gesamte vorhandene Code möglicherweise ordnungsgemäß funktioniertWenn wir einer Schnittstelle eine neue Methode hinzufügen, müssen wir alle Implementierungen der Schnittstelle aufspüren und die Implementierung für die neue Methode definieren
Eine abstrakte Klasse kann Konstruktoren enthaltenEine Schnittstelle kann keine Konstruktoren enthalten
Abstrakte Klassen sind schnellSchnittstellen sind langsam, da eine zusätzliche Indirektion erforderlich ist, um die entsprechende Methode in der tatsächlichen Klasse zu finden

Q6. Was ist Vererbung in Java?

Vererbung in Java ist das Konzept, bei dem die Eigenschaften einer Klasse von der anderen vererbt werden können. Es hilft, den Code wiederzuverwenden und eine Beziehung zwischen verschiedenen Klassen herzustellen. Die Vererbung wird zwischen zwei Arten von Klassen durchgeführt:

  1. Elternklasse (Super- oder Basisklasse)
  2. Unterklasse (Unterklasse oder abgeleitete Klasse)

 

Eine Klasse, die die Eigenschaften erbt, wird als untergeordnete Klasse bezeichnet, während eine Klasse, deren Eigenschaften geerbt werden, als übergeordnete Klasse bezeichnet wird.

Q7. Was sind die verschiedenen Arten der Vererbung in Java?

Java unterstützt vier Arten der Vererbung:

  1. Einfache Vererbung: Bei der einfachen Vererbung erbt eine Klasse die Eigenschaften einer anderen, dh es gibt nur eine Eltern- und eine Kindklasse.
  2. Vererbung auf mehreren Ebenen: Wenn eine Klasse von einer Klasse abgeleitet ist, die auch von einer anderen Klasse abgeleitet ist, dh eine Klasse mit mehr als einer Elternklasse, aber auf unterschiedlichen Ebenen, wird diese Art der Vererbung als Vererbung auf mehreren Ebenen bezeichnet.
  3. Hierarchische Vererbung: Wenn eine Klasse mehr als eine untergeordnete Klasse (Unterklassen) hat oder mit anderen Worten, mehr als eine untergeordnete Klasse dieselbe übergeordnete Klasse hat, wird diese Art der Vererbung als hierarchisch bezeichnet.
  4. Hybridvererbung: Hybridvererbung ist eine Kombination aus zwei oder mehr Vererbungsarten.

Q8. Was ist Methodenüberladung und Methodenüberschreibung?

Methodenüberladung:

  • Beim Methodenüberladen haben Methoden derselben Klasse denselben Namen, aber jede Methode muss eine unterschiedliche Anzahl von Parametern oder Parameter mit unterschiedlichen Typen und Reihenfolgen haben.
  • Das Überladen von Methoden besteht darin, mehr zum Verhalten der Methode „hinzuzufügen“ oder zu „erweitern“.
  • Es ist ein Kompilierzeit-Polymorphismus.
  • Die Methoden müssen eine unterschiedliche Signatur haben.
  • Es kann eine Vererbung beim Methodenüberladen erforderlich sein oder nicht.

Werfen wir einen Blick auf das folgende Beispiel, um es besser zu verstehen.

class Adder {
Static int add(int a, int b)
{
return a+b;
}
Static double add( double a, double b)
{
return a+b;
}
public static void main(String args[])
{
System.out.println(Adder.add(11,11));
System.out.println(Adder.add(12.3,12.6));
}}

Methodenüberschreibung:  

  • Beim Method Overriding hat die Unterklasse die gleiche Methode mit dem gleichen Namen und genau der gleichen Anzahl und Art von Parametern und dem gleichen Rückgabetyp wie eine Oberklasse.
  • Das Überschreiben von Methoden besteht darin, das vorhandene Verhalten der Methode zu „ändern“.
  • Es ist ein Laufzeitpolymorphismus.
  • Die Methoden müssen die gleiche Signatur haben.
  • Es erfordert immer eine Vererbung in Method Overriding.

Werfen wir einen Blick auf das folgende Beispiel, um es besser zu verstehen.

class Car {
void run(){
System.out.println(“car is running”); 
}
Class Audi extends Car{
void run()
{
System.out.prinltn("Audi is running safely with 100km");
}
public static void main( String args[])
{
Car b=new Audi();
b.run();
}
}

Q9. Können Sie eine private oder statische Methode in Java überschreiben?

Sie können eine private oder statische Methode in Java nicht überschreiben. Wenn Sie eine ähnliche Methode mit demselben Rückgabetyp und denselben Methodenargumenten in der untergeordneten Klasse erstellen, wird die Methode der Oberklasse ausgeblendet. Dies wird als Methodenverbergung bezeichnet. Ebenso können Sie eine private Methode in einer Unterklasse nicht überschreiben, da sie dort nicht zugänglich ist. Was Sie tun können, ist, eine andere private Methode mit demselben Namen in der untergeordneten Klasse zu erstellen. Werfen wir einen Blick auf das folgende Beispiel, um es besser zu verstehen.

class Base {
private static void display() {
System.out.println("Static or class method from Base");
}
public void print() {
System.out.println("Non-static or instance method from Base");
}
class Derived extends Base {
private static void display() {
System.out.println("Static or class method from Derived");
}
public void print() {
System.out.println("Non-static or instance method from Derived");
}
public class test {
public static void main(String args[])
{
Base obj= new Derived();
obj1.display();
obj1.print();
}
}

Q10. Was ist Mehrfachvererbung? Wird es von Java unterstützt?

MultipleInheritance - Java-Interviewfragen - EdurekaWenn eine untergeordnete Klasse die Eigenschaft von mehreren Klassen erbt, wird dies als Mehrfachvererbung bezeichnet. Java erlaubt es nicht, mehrere Klassen zu erweitern.

Das Problem bei der Mehrfachvererbung besteht darin, dass es für den Compiler zur Laufzeit schwierig wird, zu entscheiden, welche Methode von der untergeordneten Klasse ausgeführt werden soll, wenn mehrere Elternklassen denselben Methodennamen haben.

Daher unterstützt Java keine Mehrfachvererbung. Das Problem wird allgemein als Diamantproblem bezeichnet.

Falls Sie mit diesen Java-Interviewfragen vor Herausforderungen stehen, kommentieren Sie bitte Ihre Probleme im folgenden Abschnitt.

 

Q11. Was ist Kapselung in Java?

Encapsulation is a mechanism where you bind your data(variables) and code(methods) together as a single unit. Here, the data is hidden from the outer world and can be accessed only via current class methods. This helps in protecting the data from any unnecessary modification. We can achieve encapsulation in Java by:

  • Declaring the variables of a class as private.
  • Providing public setter and getter methods to modify and view the values of the variables.

Q12. What is an association?

Association is a relationship where all object have their own lifecycle and there is no owner. Let’s take the example of Teacher and Student. Multiple students can associate with a single teacher and a single student can associate with multiple teachers but there is no ownership between the objects and both have their own lifecycle. These relationships can be one to one, one to many, many to one and many to many.

Q13. What do you mean by aggregation?

An aggregation is a specialized form of Association where all object has their own lifecycle but there is ownership and child object can not belong to another parent object. Let’s take an example of Department and teacher. A single teacher can not belong to multiple departments, but if we delete the department teacher object will not destroy. 

Q14. What is composition in Java?

Komposition ist wiederum eine spezialisierte Form der Aggregation und wir können dies als „Todes“-Beziehung bezeichnen. Es ist eine starke Art der Aggregation. Das untergeordnete Objekt hat keinen eigenen Lebenszyklus und wenn das übergeordnete Objekt gelöscht wird, werden alle untergeordneten Objekte ebenfalls gelöscht. Nehmen wir noch einmal ein Beispiel für eine Beziehung zwischen Haus und Räumen. Das Haus kann mehrere Räume enthalten, es gibt kein unabhängiges Leben der Räume, und jeder Raum kann nicht zu zwei verschiedenen Häusern gehören, wenn wir den Hausraum löschen, wird er automatisch gelöscht.

Q15. Was ist eine Markerschnittstelle?

Eine Marker-Schnittstelle kann als die Schnittstelle definiert werden, die kein Datenmitglied und keine Mitgliedsfunktionen hat. Einfacher ausgedrückt wird eine leere Schnittstelle als Marker-Schnittstelle bezeichnet. Die häufigsten Beispiele für die Marker-Schnittstelle in Java sind Serializable, Cloneable usw. Die Marker-Schnittstelle kann wie folgt deklariert werden.

public interface Serializable{
}

Q16. Was ist Objektklonen in Java?

Beim Klonen von Objekten in Java wird eine exakte Kopie eines Objekts erstellt. Es bedeutet im Grunde die Fähigkeit, ein Objekt mit einem ähnlichen Zustand wie das ursprüngliche Objekt zu erstellen. Um dies zu erreichen, stellt Java eine Methode clone() bereit  , um diese Funktionalität zu nutzen. Diese Methode erstellt eine neue Instanz der Klasse des aktuellen Objekts und initialisiert dann alle seine Felder mit genau demselben Inhalt der entsprechenden Felder. Für das Objekt clone() muss das Marker-Interface java.lang.Cloneable implementiert werden, um Laufzeitausnahmen zu vermeiden. Eine Sache, die Sie beachten müssen, ist, dass Object clone() eine geschützte Methode ist, daher müssen Sie sie überschreiben.

Q17. Was ist ein Kopierkonstruktor in Java?

Der Kopierkonstruktor ist eine Memberfunktion, die verwendet wird, um ein Objekt mit einem anderen Objekt derselben Klasse zu initialisieren. In Java ist jedoch kein Kopierkonstruktor erforderlich, da alle Objekte als Referenz übergeben werden. Darüber hinaus unterstützt Java nicht einmal die automatische Wertübergabe.

Q18. Was ist eine Konstruktorüberladung in Java?

In Java ist das Überladen von Konstruktoren eine Technik zum Hinzufügen einer beliebigen Anzahl von Konstruktoren zu einer Klasse, die jeweils eine andere Parameterliste haben. Der Compiler verwendet die Anzahl der Parameter und ihrer Typen in der Liste, um die überladenen Konstruktoren zu unterscheiden.

class Demo
{
int i;
public Demo(int a)
{
i=k;
}
public Demo(int a, int b)
{
//body
}
}

Falls Sie mit diesen Java-Interviewfragen vor Herausforderungen stehen, kommentieren Sie bitte Ihre Probleme im folgenden Abschnitt


Servlets – Java-Interviewfragen  

Q1. Was ist ein Servlet?

  • Java Servlet ist eine serverseitige Technologie zur Erweiterung der Fähigkeiten von Webservern durch die Bereitstellung von Unterstützung für dynamische Antworten und Datenpersistenz.
  • Die Pakete javax.servlet und javax.servlet.http bieten Schnittstellen und Klassen zum Schreiben unserer eigenen Servlets.
  • Alle Servlets müssen die javax.servlet.Servlet-Schnittstelle implementieren, die Servlet-Lebenszyklusmethoden definiert. Bei der Implementierung eines generischen Dienstes können wir die GenericServlet-Klasse erweitern, die mit der Java-Servlet-API bereitgestellt wird. Die HttpServlet-Klasse stellt Methoden wie doGet() und doPost() zum Handhaben von HTTP-spezifischen Diensten bereit.
  • Meistens wird auf Webanwendungen über das HTTP-Protokoll zugegriffen, und deshalb erweitern wir meistens die HttpServlet-Klasse. Die Servlet-API-Hierarchie ist im folgenden Bild dargestellt.

Servlet - Java-Interviewfragen - Edureka

Q2. Was sind die Unterschiede zwischen Get- und Post-Methoden?

WerdenPost
Es kann eine begrenzte Datenmenge gesendet werden, da die Daten im Header gesendet werden.Es können große Datenmengen gesendet werden, da die Daten im Körper gesendet werden.
 Nicht gesichert, da Daten in der URL-Leiste angezeigt werden. Gesichert, da Daten nicht in der URL-Leiste angezeigt werden.
 Kann mit einem Lesezeichen versehen werden Kann nicht mit einem Lesezeichen versehen werden
 idempotent Nicht-Idempotent
 Es ist effizienter und verwendeter als Post Es ist weniger effizient und verwendet

Q3. Was ist Request Dispatcher?

Die RequestDispatcher-Schnittstelle wird verwendet, um die Anforderung an eine andere Ressource weiterzuleiten, die HTML, JSP oder ein anderes Servlet in derselben Anwendung sein kann. Wir können dies auch verwenden, um den Inhalt einer anderen Ressource in die Antwort aufzunehmen.

In dieser Schnittstelle sind zwei Methoden definiert:

1. void forward ()

2.void enthalten ()

ForwardMethod - Java-Interviewfragen - Edureka

IncludeMethod - Java-Interviewfragen - Edureka

Q4. Was sind die Unterschiede zwischen der Methode forward() und der Methode sendRedirect()?


 

 

forward()-MethodeSendRedirect()-Methode
forward() sendet die gleiche Anfrage an eine andere Ressource.Die Methode sendRedirect() sendet immer neue Anfragen, da sie die URL-Leiste des Browsers verwendet.
 forward() Methode funktioniert serverseitig. Die Methode sendRedirect() funktioniert auf der Clientseite.
 forward() Methode funktioniert nur innerhalb des Servers.Die Methode sendRedirect() funktioniert innerhalb und außerhalb des Servers.

Q5. Was ist der Lebenszyklus eines Servlets?

Es gibt 5 Phasen im Lebenszyklus eines Servlets:LifeCycleServlet - Java-Interviewfragen - Edureka

  1. Servlet wird geladen
  2. Servlet wird instanziiert
  3. Servlet wird initialisiert
  4. Bedienen Sie die Anfrage
  5. Servlets werden zerstört

Q6. Wie funktionieren Cookies in Servlets?

  • Cookies sind Textdaten, die vom Server an den Client gesendet und auf dem lokalen Computer des Clients gespeichert werden.
  • Die Servlet-API bietet Unterstützung für Cookies über die Klasse javax.servlet.http.Cookie, die serialisierbare und klonbare Schnittstellen implementiert.
  • Die Methode HttpServletRequest getCookies() wird bereitgestellt, um das Array von Cookies aus der Anfrage abzurufen, da es keinen Sinn macht, ein Cookie zur Anfrage hinzuzufügen, es gibt keine Methoden, um ein Cookie zur Anfrage zu setzen oder hinzuzufügen.
  • In ähnlicher Weise wird die Methode HttpServletResponse addCookie(Cookie c) bereitgestellt, um ein Cookie im Antwortheader anzuhängen, es gibt keine Getter-Methoden für Cookies.

Q7. Was sind die Unterschiede zwischen ServletContext und ServletConfig?

Der Unterschied zwischen ServletContext und ServletConfig in Servlets JSP ist im folgenden tabellarischen Format.

ServletConfigServletContext
Das Servlet-Konfigurationsobjekt repräsentiert ein einzelnes ServletEs stellt die gesamte Webanwendung dar, die auf einer bestimmten JVM ausgeführt wird und für alle Servlets gleich ist
Es ist wie ein lokaler Parameter, der einem bestimmten Servlet zugeordnet istEs ist wie ein globaler Parameter, der der gesamten Anwendung zugeordnet ist
Es ist ein Name-Wert-Paar, das innerhalb des Servlet-Abschnitts der Datei web.xml definiert ist, sodass es einen Servlet-weiten Geltungsbereich hatServletContext hat einen anwendungsweiten Geltungsbereich, also definieren Sie ihn außerhalb des Servlet-Tags in der Datei web.xml.
Die Methode getServletConfig() wird verwendet, um das Konfigurationsobjekt abzurufenDie Methode getServletContext() wird verwendet, um das Kontextobjekt zu erhalten.
Zum Beispiel ist der Einkaufswagen eines Benutzers spezifisch für einen bestimmten Benutzer, daher können wir hier die Servlet-Konfiguration verwendenUm den MIME-Typ einer Datei oder Anwendung zu erhalten, werden sitzungsbezogene Informationen unter Verwendung eines Servlet-Kontextobjekts gespeichert.

 

Q8. Was sind die verschiedenen Methoden der Sitzungsverwaltung in Servlets?

Sitzung ist ein Gesprächszustand zwischen Client und Server und kann aus mehreren Anfragen und Antworten zwischen Client und Server bestehen. Da sowohl HTTP als auch Webserver zustandslos sind, besteht die einzige Möglichkeit, eine Sitzung aufrechtzuerhalten, darin, in jeder Anfrage und Antwort einige eindeutige Informationen über die Sitzung (Sitzungs-ID) zwischen Server und Client zu übertragen.

Einige der gebräuchlichen Arten der Sitzungsverwaltung in Servlets sind:

  1. Benutzerauthentifizierung
  2. Verstecktes HTML-Feld
  3. Kekse
  4. URL-Umschreibung
  5. Sitzungsverwaltungs-API

 

SessionManagement - Java-Interviewfragen - Edureka


JDBC – Java-Interviewfragen 

1. Was ist der JDBC-Treiber?

Der JDBC-Treiber ist eine Softwarekomponente, die es Java-Anwendungen ermöglicht, mit der Datenbank zu interagieren. Es gibt 4 Arten von JDBC-Treibern:

  1. JDBC-ODBC-Brückentreiber
  2. Native-API-Treiber (teilweise Java-Treiber)
  3. Netzwerkprotokolltreiber (vollständiger Java-Treiber)
  4. Thin-Treiber (vollständiger Java-Treiber)

2. Was sind die Schritte, um eine Verbindung zu einer Datenbank in Java herzustellen?

  • Registrierung der Fahrerklasse
  • Verbindung herstellen
  • Erklärung erstellen
  • Abfragen ausführen
  • Verbindung schließen

3. Was sind die JDBC-API-Komponenten?

Das Paket java.sql enthält Schnittstellen und Klassen für die JDBC-API.

Schnittstellen:

  • Verbindung
  • Erklärung
  • Vorbereitete Erklärung
  • Ergebnissatz
  • Ergebnissatz-Metadaten
  • DatenbankMetaDaten
  • CallableStatement usw.

Klassen:

  • DriverManager
  • Klecks
  • Klumpen
  • Typen
  • SQLException usw.

4. Welche Rolle spielt die Klasse JDBC DriverManager?

Die DriverManager -Klasse verwaltet die registrierten Treiber. Es kann zum An- und Abmelden von Treibern verwendet werden. Es stellt eine Factory-Methode bereit, die die Instanz von Connection zurückgibt.

5. Was ist die JDBC Connection-Schnittstelle?

Die Verbindungsschnittstelle hält eine Sitzung mit der Datenbank aufrecht. Es kann für das Transaktionsmanagement verwendet werden. Es stellt Factory-Methoden bereit, die die Instanz von Statement, PreparedStatement, CallableStatement und DatabaseMetaData zurückgeben.

ConnectionInterface - Java-Interviewfragen - Edureka

Falls Sie mit diesen Java-Interviewfragen vor Herausforderungen stehen, kommentieren Sie bitte Ihre Probleme im folgenden Abschnitt.

6. Was ist der Zweck der JDBC ResultSet-Schnittstelle?

Das ResultSet-Objekt repräsentiert eine Zeile einer Tabelle. Es kann verwendet werden, um den Cursorzeiger zu ändern und die Informationen aus der Datenbank zu erhalten.

7. Was ist die JDBC ResultSetMetaData-Schnittstelle?

Die ResultSetMetaData-Schnittstelle gibt die Informationen der Tabelle zurück, wie z. B. Gesamtzahl der Spalten, Spaltenname, Spaltentyp usw.

8. Was ist die JDBC DatabaseMetaData-Schnittstelle?

Die DatabaseMetaData-Schnittstelle gibt die Informationen der Datenbank wie Benutzername, Treibername, Treiberversion, Anzahl der Tabellen, Anzahl der Ansichten usw. zurück.

9. Was meinen Sie mit Stapelverarbeitung in JDBC?

Die Stapelverarbeitung hilft Ihnen, zusammengehörige SQL-Anweisungen in einem Stapel zu gruppieren und sie auszuführen, anstatt eine einzelne Abfrage auszuführen. Durch die Verwendung der Stapelverarbeitungstechnik in JDBC können Sie mehrere Abfragen ausführen, was die Leistung beschleunigt.

10. Was ist der Unterschied zwischen execute, executeQuery, executeUpdate?

Statement execute(String query) wird verwendet, um eine beliebige SQL-Abfrage auszuführen, und gibt TRUE zurück, wenn das Ergebnis ein ResultSet ist, wie z. B. das Ausführen von Select-Abfragen. Die Ausgabe ist FALSE, wenn kein ResultSet-Objekt vorhanden ist, z. B. beim Ausführen von Insert- oder Update-Abfragen. Wir können getResultSet() verwenden , um die ResultSet- und getUpdateCount()- Methode abzurufen, um die Aktualisierungsanzahl abzurufen.

Die Anweisung executeQuery(String query) wird zum Ausführen von Select-Abfragen verwendet und gibt das ResultSet zurück. Das zurückgegebene ResultSet ist niemals null, selbst wenn es keine Datensätze gibt, die der Abfrage entsprechen. Beim Ausführen ausgewählter Abfragen sollten wir die executeQuery-Methode verwenden, damit beim Versuch, die Insert/Update-Anweisung auszuführen, java.sql.SQLException mit der Meldung „executeQuery-Methode kann nicht für die Aktualisierung verwendet werden“ ausgelöst wird.

Die Anweisung executeUpdate(String query ) wird verwendet, um Insert/Update/Delete (DML)-Anweisungen oder DDL-Anweisungen auszuführen, die nichts zurückgeben. Die Ausgabe ist int und entspricht der Zeilenanzahl für DML-Anweisungen (SQL Data Manipulation Language). Bei DDL-Anweisungen ist die Ausgabe 0.

Sie sollten die Methode execute() nur verwenden, wenn Sie sich über den Typ der Anweisung nicht sicher sind, ansonsten verwenden Sie die Methode executeQuery oder executeUpdate.

Q11. Was verstehen Sie unter JDBC-Anweisungen?

JDBC-Anweisungen sind im Grunde die Anweisungen, die zum Senden von SQL-Befehlen an die Datenbank und zum Abrufen von Daten aus der Datenbank verwendet werden. Verschiedene Methoden wie execute(), executeUpdate(), executeQuery usw. werden von JDBC bereitgestellt, um mit der Datenbank zu interagieren.

JDBC unterstützt 3 Arten von Anweisungen:

  1. Anweisung: Wird für den allgemeinen Zugriff auf die Datenbank verwendet und führt zur Laufzeit eine statische SQL-Abfrage aus.
  2. PreparedStatement: Wird verwendet, um der Abfrage während der Ausführung Eingabeparameter bereitzustellen.
  3. CallableStatement: Wird für den Zugriff auf die gespeicherten Prozeduren der Datenbank verwendet und hilft beim Akzeptieren von Laufzeitparametern.

Spring Framework – Java-Interviewfragen 

Q1. Was ist Frühling?

Wikipedia definiert das Spring-Framework als „Anwendungs-Framework und Inversion-of-Control-Container für die Java-Plattform. Die Kernfunktionen des Frameworks können von jeder Java-Anwendung verwendet werden, aber es gibt Erweiterungen zum Erstellen von Webanwendungen auf der Java-EE-Plattform.“ Spring ist im Wesentlichen ein leichtgewichtiges, integriertes Framework, das für die Entwicklung von Unternehmensanwendungen in Java verwendet werden kann.

Q2. Nennen Sie die verschiedenen Module des Spring-Frameworks.

Einige der wichtigen Spring Framework-Module sind:

  • Spring Context – für Abhängigkeitsinjektion.
  • Spring AOP – für aspektorientierte Programmierung.
  • Spring DAO – für Datenbankoperationen mit DAO-Muster
  • Spring JDBC – für JDBC- und DataSource-Unterstützung.
  • Spring ORM – für die Unterstützung von ORM-Tools wie Hibernate
  • Spring Web Module – zum Erstellen von Webanwendungen.
  • Spring MVC – Model-View-Controller-Implementierung zum Erstellen von Webanwendungen, Webservices etc.

SpringFramework - Java-Interviewfragen - EdurekaQ3. Listen Sie einige der wichtigen Anmerkungen in der annotationsbasierten Spring-Konfiguration auf.

Die wichtigen Anmerkungen sind:

  • @Erforderlich
  • @Autowired
  • @Qualifikator
  • @Ressource
  • @PostConstruct
  • @PreDestroy

Q4. Erklären Sie Bean in Spring und listen Sie die verschiedenen Anwendungsbereiche von Spring Bean auf.

Beans sind Objekte, die das Rückgrat einer Spring-Anwendung bilden. Sie werden vom Spring IoC-Container verwaltet. Mit anderen Worten, eine Bean ist ein Objekt, das von einem Spring IoC-Container instanziiert, zusammengesetzt und verwaltet wird.

In Spring Beans sind fünf Bereiche definiert.

SpringBean - Java-Interviewfragen - Edureka

  • Singleton : Für jeden Container wird nur eine Instanz der Bean erstellt. Dies ist der Standardbereich für die Frühlingsbohnen. Stellen Sie bei der Verwendung dieses Bereichs sicher, dass Spring Bean keine gemeinsam genutzten Instanzvariablen hat, da dies sonst zu Dateninkonsistenzproblemen führen kann, da es nicht Thread-sicher ist.
  • Prototype : Jedes Mal, wenn die Bean angefordert wird, wird eine neue Instanz erstellt.
  • Request : Dies ist derselbe wie der Prototypbereich, soll jedoch für Webanwendungen verwendet werden. Für jede HTTP-Anforderung wird eine neue Instanz der Bean erstellt.
  • Sitzung : Für jede HTTP-Sitzung wird vom Container eine neue Bean erstellt.
  • Global-session : Dies wird verwendet, um globale Session-Beans für Portlet-Anwendungen zu erstellen.

Falls Sie mit diesen Java-Interviewfragen vor Herausforderungen stehen, kommentieren Sie bitte Ihre Probleme im folgenden Abschnitt.

Q5. Erklären Sie die Rolle von DispatcherServlet und ContextLoaderListener.

DispatcherServlet ist im Grunde der Front-Controller in der Spring MVC-Anwendung, da es die Spring-Bean-Konfigurationsdatei lädt und alle konfigurierten Beans initialisiert. Wenn Anmerkungen aktiviert sind, scannt es auch die Pakete, um Beans zu konfigurieren, die mit @Component-, @Controller-, @Repository- oder @Service-Anmerkungen versehen sind.

DispatcherServlet - Java-Interviewfragen - EdurekaContextLoaderListener hingegen ist der Listener zum Starten und Herunterfahren des WebApplicationContext im Spring-Root. Einige seiner wichtigen Funktionen umfassen das Binden des Lebenszyklus von Anwendungskontext an den Lebenszyklus von ServletContext und das Automatisieren der Erstellung von Anwendungskontext.

ContextLoader - Java-Interviewfragen - Edureka

Q6. Was sind die Unterschiede zwischen Konstruktorinjektion und Setterinjektion?

Nein.Konstruktor-InjektionSetter-Injektion
 1) Keine partielle Injektion Partielle Injektion
 2) Überschreibt nicht die Setter-Eigenschaft Überschreibt die Konstruktoreigenschaft, wenn beide definiert sind.
 3)Erstellt eine neue Instanz, wenn eine Änderung auftrittErstellt keine neue Instanz, wenn Sie den Eigenschaftswert ändern
 4)  Besser für zu viele Eigenschaften Besser für ein paar Eigenschaften.

Q7. Was ist automatische Verkabelung im Frühjahr? Was sind die Autowiring-Modi?

Autowiring ermöglicht es dem Programmierer, die Bohne automatisch zu injizieren. Wir müssen keine explizite Injektionslogik schreiben. Sehen wir uns den Code zum Injizieren von Beans mithilfe der Abhängigkeitsinjektion an.

  1. <bean id=“emp“ class=“com.javatpoint.Employee“ autowire=“byName“ />

Die Autowiring-Modi sind unten angegeben:

Nein.ModusBeschreibung
 1) nein Dies ist der Standardmodus, dh die automatische Verdrahtung ist nicht aktiviert.
 2) namentlich Fügt die Bean basierend auf dem Eigenschaftsnamen ein. Es verwendet die Setter-Methode.
 3) nach Typ Fügt die Bean basierend auf dem Eigenschaftstyp ein. Es verwendet die Setter-Methode.
 4) Konstrukteur Es fügt die Bean mit dem Konstruktor ein

Q8. Wie behandelt man Ausnahmen im Spring MVC Framework?

Spring MVC Framework bietet die folgenden Möglichkeiten, um uns zu helfen, eine robuste Ausnahmebehandlung zu erreichen.

Controller-basiert:

Wir können Exception-Handler-Methoden in unseren Controller-Klassen definieren. Alles, was wir brauchen, ist, diese Methoden mit der Annotation @ExceptionHandler zu kommentieren.

Globaler Ausnahmehandler:

Die Ausnahmebehandlung ist ein Querschnittsthema, und Spring bietet die Annotation @ControllerAdvice, die wir mit jeder Klasse verwenden können, um unseren globalen Ausnahmehandler zu definieren.

HandlerExceptionResolver-Implementierung: 

Für allgemeine Ausnahmen stellen wir meistens statische Seiten bereit. Spring Framework bietet eine HandlerExceptionResolver-Schnittstelle, die wir implementieren können, um einen globalen Ausnahmehandler zu erstellen. Der Grund für diese zusätzliche Möglichkeit zum Definieren eines globalen Ausnahmehandlers ist, dass das Spring-Framework auch Standardimplementierungsklassen bereitstellt, die wir in unserer Spring-Bean-Konfigurationsdatei definieren können, um die Vorteile der Spring-Framework-Ausnahmebehandlung zu nutzen.

 

Q9. Was sind einige der wichtigen Spring-Anmerkungen, die Sie verwendet haben?

Einige der Spring-Anmerkungen, die ich in meinem Projekt verwendet habe, sind:

@Controller – für Controller-Klassen im Spring MVC-Projekt.

@RequestMapping – zum Konfigurieren der URI-Zuordnung in Controller-Handler-Methoden. Dies ist eine sehr wichtige Anmerkung, daher sollten Sie Spring MVC RequestMapping Annotation Beispiele durchgehen

@ResponseBody – zum Senden von Object als Antwort, normalerweise zum Senden von XML- oder JSON-Daten als Antwort.

@PathVariable – zum Zuordnen dynamischer Werte aus dem URI zu Handler-Methodenargumenten.

@Autowired – für Autowiring-Abhängigkeiten in Spring Beans.

@Qualifier – mit @Autowired-Anmerkung, um Verwirrung zu vermeiden, wenn mehrere Instanzen des Bean-Typs vorhanden sind.

@Service – für Serviceklassen.

@Scope – zum Konfigurieren des Umfangs der Spring Bean.

@Configuration, @ComponentScan und @Bean – für Java-basierte Konfigurationen.

AspectJ-Anmerkungen zum Konfigurieren von Aspekten und Ratschlägen, @Aspect, @Before, @After, @Around, @Pointcut usw.

Q10. Wie integriere ich Spring und Hibernate Frameworks?

Wir können das Spring ORM-Modul verwenden, um Spring- und Hibernate-Frameworks zu integrieren, wenn Sie Hibernate 3+ verwenden, wo SessionFactory die aktuelle Sitzung bereitstellt, dann sollten Sie die Verwendung von HibernateTemplate- oder HibernateDaoSupport-Klassen vermeiden und besser DAO-Muster mit Abhängigkeitsinjektion für die Integration verwenden.

Außerdem bietet Spring ORM Unterstützung für die Verwendung der deklarativen Transaktionsverwaltung von Spring, also sollten Sie diese verwenden, anstatt für die Transaktionsverwaltung den Boilerplate-Code für den Ruhezustand zu verwenden. 

Q11. Nennen Sie die Arten der Transaktionsverwaltung, die Spring unterstützt.

Spring unterstützt zwei Arten der Transaktionsverwaltung. Sie sind:

  1. Programmatisches Transaktionsmanagement:  Hierbei wird die Transaktion mit Hilfe der Programmierung verwaltet. Es bietet Ihnen extreme Flexibilität, ist aber sehr schwierig zu warten.
  2. Deklarative Transaktionsverwaltung:  Dabei wird die Transaktionsverwaltung vom Geschäftscode getrennt. Zur Verwaltung der Transaktionen werden nur Anmerkungen oder XML-basierte Konfigurationen verwendet.

Hibernate – Java-Interviewfragen für erfahrene Profis

1. Was ist Hibernate Framework?

Objektrelationales Mapping oder ORM ist die Programmiertechnik, um Objekte des Anwendungsdomänenmodells den relationalen Datenbanktabellen zuzuordnen. Hibernate ist ein Java-basiertes ORM-Tool, das einen Rahmen für die Zuordnung von Anwendungsdomänenobjekten zu den relationalen Datenbanktabellen und umgekehrt bereitstellt.

Hibernate bietet eine Referenzimplementierung der Java Persistence API, die es zu einer großartigen Wahl als ORM-Tool mit den Vorteilen der losen Kopplung macht. Wir können die Hibernate-Persistenz-API für CRUD-Operationen verwenden. Das Hibernate-Framework bietet die Möglichkeit, einfache alte Java-Objekte mithilfe von JPA-Annotationen sowie einer XML-basierten Konfiguration traditionellen Datenbanktabellen zuzuordnen.

In ähnlicher Weise sind Konfigurationen für den Ruhezustand flexibel und können sowohl aus einer XML-Konfigurationsdatei als auch programmgesteuert vorgenommen werden.

2. Was sind die wichtigen Vorteile der Verwendung von Hibernate Framework?

Einige der wichtigen Vorteile der Verwendung des Hibernate-Frameworks sind:

  1. Hibernate eliminiert den gesamten Boilerplate-Code, der mit JDBC geliefert wird, und kümmert sich um die Verwaltung der Ressourcen, sodass wir uns auf die Geschäftslogik konzentrieren können.
  2. Das Hibernate-Framework bietet Unterstützung für XML- und JPA-Annotationen, was unsere Code-Implementierung unabhängig macht.
  3. Hibernate bietet eine leistungsstarke Abfragesprache (HQL), die SQL ähnelt. HQL ist jedoch vollständig objektorientiert und versteht Konzepte wie Vererbung, Polymorphismus und Assoziation.
  4. Hibernate ist ein Open-Source-Projekt der Red Hat Community und wird weltweit eingesetzt. Dies macht es zu einer besseren Wahl als andere, da die Lernkurve kurz ist und es unzählige Online-Dokumentationen gibt und Hilfe in Foren leicht verfügbar ist.
  5. Hibernate lässt sich einfach in andere Java EE-Frameworks integrieren und ist so beliebt, dass Spring Framework integrierte Unterstützung für die Integration von Hibernate in Spring-Anwendungen bietet.
  6. Hibernate unterstützt verzögerte Initialisierung mit Proxy-Objekten und führt tatsächliche Datenbankabfragen nur dann durch, wenn dies erforderlich ist.
  7. Der Hibernate-Cache hilft uns, eine bessere Leistung zu erzielen.
  8. Für datenbankanbieterspezifische Funktionen ist Hibernate geeignet, da wir auch native SQL-Abfragen ausführen können.

Insgesamt ist Hibernate die beste Wahl auf dem aktuellen Markt für ORM-Tools, es enthält alle Funktionen, die Sie jemals in einem ORM-Tool benötigen werden.

3. Erklären Sie die Hibernate-Architektur.

Hibernate hat eine mehrschichtige Architektur, die dem Benutzer hilft, zu arbeiten, ohne die zugrunde liegenden APIs kennen zu müssen. Hibernate verwendet die Datenbank und die Konfigurationsdaten, um der Anwendung Persistenzdienste (und persistente Objekte) bereitzustellen. Es enthält viele Objekte wie persistentes Objekt, Sitzungsfabrik, Transaktionsfabrik, Verbindungsfabrik, Sitzung, Transaktion usw.HibernateArchitecture - Java-Interviewfragen - Edureka

Die Hibernate-Architektur ist in vier Schichten kategorisiert.

  • Java-Anwendungsschicht
  • Framework-Layer überwintern
  • Backhand-API-Schicht
  • Datenbankschicht

4. Was sind die Unterschiede zwischen Get- und Load-Methoden?

Die Unterschiede zwischen den Methoden get() und load() sind unten aufgeführt.

Nein.werden()Belastung()
 1) Gibt null zurück, wenn das Objekt nicht gefunden wird.Löst ObjectNotFoundException aus, wenn ein Objekt nicht gefunden wird.
 2) get() Methode trifft immer die Datenbank. Die Methode load() trifft die Datenbank nicht.
 3) Es gibt ein echtes Objekt zurück, keinen Proxy. Es gibt ein Proxy-Objekt zurück.
 4)Es sollte verwendet werden, wenn Sie sich nicht sicher sind, ob es eine Instanz gibt.Es sollte verwendet werden, wenn Sie sicher sind, dass die Instanz existiert.

5. Was sind die Vorteile von Hibernate gegenüber JDBC?

Einige der wichtigen Vorteile des Hibernate-Frameworks gegenüber JDBC sind:

  1. Hibernate entfernt viel Boiler-Plate-Code, der mit der JDBC-API geliefert wird, der Code sieht sauberer und lesbarer aus.
  2. Hibernate unterstützt Vererbung, Assoziationen und Sammlungen. Diese Funktionen sind bei der JDBC-API nicht vorhanden.
  3. Hibernate bietet implizit Transaktionsverwaltung, tatsächlich können die meisten Abfragen nicht außerhalb von Transaktionen ausgeführt werden. In der JDBC-API müssen wir Code für die Transaktionsverwaltung mit Commit und Rollback schreiben.
  4. Die JDBC-API löst eine SQLException aus, bei der es sich um eine geprüfte Ausnahme handelt, daher müssen wir viel Try-Catch-Blockcode schreiben. Meistens ist es in jedem JDBC-Aufruf redundant und wird für das Transaktionsmanagement verwendet. Hibernate umschließt JDBC-Ausnahmen und löst eine ungeprüfte JDBCException- oder HibernateException-Ausnahme aus, sodass wir keinen Code schreiben müssen, um sie zu behandeln. Die integrierte Transaktionsverwaltung von Hibernate entfernt die Verwendung von Try-Catch-Blöcken.
  5. Hibernate Query Language (HQL) ist objektorientierter und näher an der Programmiersprache Java. Für JDBC müssen wir native SQL-Abfragen schreiben.
  6. Hibernate unterstützt Caching, das für die Leistung besser ist, JDBC-Abfragen werden nicht zwischengespeichert, daher ist die Leistung gering.
  7. Hibernate bietet eine Option, mit der wir auch Datenbanktabellen erstellen können, da JDBC-Tabellen in der Datenbank vorhanden sein müssen.
  8. Die Hibernate-Konfiguration hilft uns bei der Verwendung von JDBC-ähnlichen Verbindungen sowie JNDI-Datenquellen für den Verbindungspool. Dies ist eine sehr wichtige Funktion in Unternehmensanwendungen und fehlt in der JDBC-API vollständig.
  9. Hibernate unterstützt JPA-Annotationen, sodass der Code unabhängig von der Implementierung ist und leicht durch andere ORM-Tools ersetzt werden kann. JDBC-Code ist sehr eng mit der Anwendung gekoppelt.

JSP – Java-Interviewfragen

1. Welche Lebenszyklusmethoden gibt es für eine JSP?

MethodenBeschreibung
 öffentlich void jspInit()Sie wird nur einmal aufgerufen, genau wie die Init-Methode des Servlets.
public void _jspService(ServletRequest request,ServletResponse) löst ServletException,IOException ausSie wird bei jeder Anfrage aufgerufen, genauso wie die Methode service() des Servlets.
 public void jspDestroy()Sie wird nur einmal aufgerufen, genau wie die Methode destrue() des Servlets.

2. Was sind die impliziten JSP-Objekte?

JSP stellt standardmäßig 9 implizite Objekte bereit. Sie sind wie folgt:

ObjektTyp
1) aus JspWriter
2) Anfrage HttpServletRequest
3) Antwort HttpServletResponse
4) Konfig ServletConfig
5) Sitzung HttpSession
6) Anwendung ServletContext
7) Seitenkontext Seitenkontext
8) Seite Objekt
9) Ausnahme Werfbar

3. Was sind die Unterschiede zwischen Include-Direktive und Include-Aktion?

Direktive beinhaltenHandlung beinhalten
Die Include-Direktive schließt den Inhalt zum Zeitpunkt der Seitenübersetzung ein.Die Include-Aktion schließt den Inhalt zum Zeitpunkt der Anfrage ein.
Die include-Direktive schließt den ursprünglichen Inhalt der Seite ein, sodass die Seitengröße zur Laufzeit zunimmt.Die include-Aktion schließt nicht den ursprünglichen Inhalt ein, sondern ruft die include()-Methode der vom Anbieter bereitgestellten Klasse auf.
 Es ist besser für statische Seiten. Es ist besser für dynamische Seiten.

4. Wie deaktiviere ich das Caching auf der Zurück-Schaltfläche des Browsers?

<%
response.setHeader(“Cache-Control”,”no-store”);
response.setHeader(“Pragma”,”no-cache”);
response.setHeader (“Expires”, “0”);                    //prevents caching at the proxy server
%>  

5. Was sind die verschiedenen Tags, die in JSTL bereitgestellt werden?

Es gibt 5 Arten von JSTL-Tags.

  1. Core-Tags
  2. SQL-Tags
  3. xml-Tags
  4. Internationalisierungs-Tags
  5. Funktionen-Tags

6. Wie kann ich die Sitzung in JSP deaktivieren?

<%@ page session=“false” %>   

7. Wie lösche ich ein Cookie in einer JSP?

Der folgende Code erklärt, wie ein Cookie in einer JSP gelöscht wird:

Cookie mycook = new Cookie("name1","value1");
 
response.addCookie(mycook1);
 
Cookie killmycook = new Cookie("mycook1","value1");
 
killmycook . set MaxAge ( 0 );
 
killmycook . set Path ("/");
 
killmycook . addCookie ( killmycook 1 );

8. Erklären Sie die Methode jspDestroy().

Die jspDestry()-Methode wird von der javax.servlet.jsp.JspPage -Schnittstelle immer dann aufgerufen, wenn eine JSP-Seite zerstört werden soll. Servlets-Destruction-Methoden können leicht überschrieben werden, um eine Bereinigung durchzuführen, beispielsweise beim Schließen einer Datenbankverbindung.

9. Inwiefern ist JSP besser als die Servlet-Technologie?

JSP ist eine Technologie auf der Serverseite, um die Generierung von Inhalten zu vereinfachen. Sie sind dokumentzentriert, während Servlets Programme sind. Eine Java-Serverseite kann Fragmente eines Java-Programms enthalten, die Java-Klassen ausführen und instanziieren. Sie treten jedoch innerhalb einer HTML-Vorlagendatei auf. Es bietet den Rahmen für die Entwicklung einer Webanwendung.

10. Warum sollten wir keine JSP-Standard-Tags in web.xml konfigurieren?

 

Wir müssen keine JSP-Standard-Tags in web.xml konfigurieren, da der Container, wenn er die Webanwendung lädt und TLD-Dateien findet, diese automatisch so konfiguriert, dass sie direkt in den JSP-Seiten der Anwendung verwendet werden. Wir müssen es nur mit der Taglib-Direktive in die JSP-Seite einfügen.

11. Wie werden Sie JSP EL verwenden, um den HTTP-Methodennamen zu erhalten?

Mit dem impliziten JSP-EL-Objekt pageContext können Sie die Anforderungsobjektreferenz abrufen und den Punktoperator verwenden, um den HTTP-Methodennamen auf der JSP-Seite abzurufen. Der JSP-EL-Code für diesen Zweck sieht wie folgt aus: ${pageContext.request.method}.


Ausnahme- und Thread-Java-Interviewfragen

Q1. Was ist der Unterschied zwischen Fehler und Ausnahme?

Ein Fehler ist ein nicht behebbarer Zustand, der zur Laufzeit auftritt. Wie OutOfMemory-Fehler. Diese JVM-Fehler können Sie nicht zur Laufzeit reparieren. Obwohl Fehler im Catch-Block abgefangen werden können, wird die Ausführung der Anwendung angehalten und kann nicht wiederhergestellt werden.

Während Ausnahmen Bedingungen sind, die aufgrund von fehlerhafter Eingabe oder menschlichem Versagen usw. auftreten, wird zB FileNotFoundException ausgelöst, wenn die angegebene Datei nicht existiert. Oder es tritt eine NullPointerException auf, wenn Sie versuchen, eine Nullreferenz zu verwenden. In den meisten Fällen ist es möglich, eine Ausnahme zu beheben (wahrscheinlich, indem Sie dem Benutzer eine Rückmeldung zur Eingabe der richtigen Werte usw.

Q2. Wie können Sie Java-Ausnahmen behandeln?

Es gibt fünf Schlüsselwörter, die zur Behandlung von Ausnahmen in Java verwendet werden: 

  1. Versuchen
  2. fangen
  3. schließlich
  4. Wurf
  5. wirft

Q3. Was sind die Unterschiede zwischen einer geprüften Ausnahme und einer ungeprüften Ausnahme?

Geprüfte Ausnahme

  • Die Klassen, die die Throwable-Klasse mit Ausnahme von RuntimeException und Error erweitern, werden als geprüfte Ausnahmen bezeichnet.
  • Geprüfte Ausnahmen werden zur Kompilierzeit geprüft.
  • Beispiel: IOException, SQLException usw.

Ungeprüfte Ausnahme

  • Die Klassen, die RuntimeException erweitern, werden als ungeprüfte Ausnahmen bezeichnet.
  • Ungeprüfte Ausnahmen werden zur Kompilierzeit nicht geprüft.
  • Beispiel: ArithmeticException, NullPointerException usw.

Q4. Was sind die verschiedenen Arten der Thread-Nutzung?

Es gibt zwei Möglichkeiten, einen Thread zu erstellen:

  • Erweiterung der Thread-Klasse

Dadurch wird ein Thread erstellt, indem eine Instanz einer neuen Klasse erstellt wird, die die Thread-Klasse erweitert. Die erweiternde Klasse muss die Funktion run() überschreiben, die der Einstiegspunkt des Threads ist.

  • Implementieren der Runnable-Schnittstelle

Dies ist der einfachste Weg, einen Thread zu erstellen, indem eine Klasse erstellt wird, die die ausführbare Schnittstelle implementiert. Nach der Implementierung der lauffähigen Schnittstelle muss die Klasse die öffentliche Methode void run() implementieren ()

Die Methode run() erstellt einen parallelen Thread in Ihrem Programm. Wenn run() zurückkehrt, wird der Thread beendet.

Die Methode run() erstellt einen parallelen Thread in Ihrem Programm. Wenn run() zurückkehrt, wird der Thread beendet.

Innerhalb der Methode run() müssen Sie den Code des Threads angeben.

Wie jede andere Methode kann die Methode run() andere Methoden aufrufen, andere Klassen verwenden und Variablen definieren.

Java funktioniert als „Pass by Value“- oder „Pass by Reference“-Phänomen?

Java ist immer Wertübergabe. Dies bedeutet, dass eine Kopie des Inhalts des Parameters im Speicher erstellt wird. In Java beziehen sich Objektvariablen immer auf das eigentliche Objekt des Speicherhaufens.

Q5. Wird der finally-Block ausgeführt, wenn die return-Anweisung am Ende des try-Blocks und des catch-Blocks geschrieben wird, wie unten gezeigt?

Der finally-Block wird immer ausgeführt, auch wenn die return-Anweisung am Ende des try-Blocks und des catch-Blocks geschrieben wird. Es wird immer ausgeführt, unabhängig davon, ob eine Ausnahme vorliegt oder nicht. Es gibt nur wenige Situationen, in denen der finally-Block nicht ausgeführt wird, wie z. B. VM-Absturz, Stromausfall, Softwareabsturz usw. Wenn Sie den finally-Block nicht ausführen möchten, müssen Sie System.exit() aufrufen. -Methode explizit im finally-Block.

 

Q6. Wie wird eine Ausnahme im Code weitergegeben?

Wenn eine Ausnahme nicht abgefangen wird, wird sie von der Spitze des Stapels geworfen und fällt im Aufrufstapel nach unten in die vorherige Prozedur. Wenn die Ausnahme dort nicht abgefangen wird, fällt sie auf die vorherige Funktion zurück usw., bis sie abgefangen wird oder die Aufrufliste das Ende erreicht. Der Fachbegriff dafür ist Exception Propagation.

 

Q7. Können Sie den Java-Thread-Lebenszyklus erklären?

Der Java-Thread-Lebenszyklus hat die folgenden Zustände:

Neu-

Wenn ein Thread erstellt wird und bevor das Programm den Thread startet, befindet er sich im neuen Zustand. Er wird auch als Born Thread bezeichnet.

 Lauffähig

Wenn ein Thread gestartet wird, befindet er sich im Zustand Runnable. In diesem Zustand führt der Thread seine Aufgabe aus.

Warten

Manchmal geht ein Thread in den Wartezustand, wo er im Leerlauf bleibt, weil ein anderer Thread ausgeführt wird. Wenn der andere Thread fertig ist, geht der wartende Thread wieder in den laufenden Zustand über.

Zeitgesteuertes Warten

Beim zeitgesteuerten Warten geht der Thread in den Wartezustand. Es bleibt jedoch nur für ein bestimmtes Zeitintervall im Wartezustand, nach dem es mit der Ausführung beginnt. Es wartet entweder bis das Zeitintervall endet oder bis der andere Thread beendet ist.

Beendet

Ein Thread befindet sich in diesem Zustand, wenn er beendet wird. Dies kann daran liegen, dass der Thread seine Aufgabe abgeschlossen hat, oder an einem anderen Grund.

Q8. Welchen Zweck erfüllen die Keywords final, final und finalize? 

Finale:

Final wird verwendet, um Beschränkungen auf Klasse, Methode und Variable anzuwenden. Eine finale Klasse kann nicht vererbt werden, eine finale Methode kann nicht überschrieben werden und der finale Variablenwert kann nicht geändert werden. Werfen wir einen Blick auf das folgende Beispiel, um es besser zu verstehen.

class FinalVarExample {
public static void main( String args[])
{
final int a=10;   // Final variable
a=50;             //Error as value can't be changed
}

Endlich

Schließlich wird verwendet, um wichtigen Code zu platzieren, er wird ausgeführt, unabhängig davon, ob die Ausnahme behandelt wird oder nicht. Werfen wir einen Blick auf das folgende Beispiel, um es besser zu verstehen.

class FinallyExample {
public static void main(String args[]){
try {
int x=100;
}
catch(Exception e) {
System.out.println(e);
}
finally {
System.out.println("finally block is executing");}
}}
}

Abschließen

Finalize wird verwendet, um eine Bereinigungsverarbeitung durchzuführen, kurz bevor das Objekt der Garbage Collection unterzogen wird. Werfen wir einen Blick auf das folgende Beispiel, um es besser zu verstehen.

class FinalizeExample {
public void finalize() {
System.out.println("Finalize is called");
}
public static void main(String args[])
{
FinalizeExample f1=new FinalizeExample();
FinalizeExample f2=new FinalizeExample();
f1= NULL;
f2=NULL;
System.gc();
}
}

Q9. Was sind die Unterschiede zwischen Wurf und Wurf? 

Schlüsselwort werfenwirft Schlüsselwort
Throw wird verwendet, um explizit eine Ausnahme auszulösen.Throws wird verwendet, um eine Ausnahme zu deklarieren.
Geprüfte Ausnahmen können nicht nur mit throw propagiert werden.Geprüfte Ausnahmen können mit Throws weitergegeben werden.
Auf Throw folgt eine Instanz.Auf die Würfe folgt der Unterricht.
Throw wird innerhalb der Methode verwendet.Throws wird mit der Methodensignatur verwendet.
Sie können nicht mehrere Ausnahmen auslösenSie können mehrere Ausnahmen deklarieren, z. B. löst public void method() IOException, SQLException aus.

Falls Sie mit diesen Java-Interviewfragen vor Herausforderungen stehen, kommentieren Sie bitte Ihre Probleme im folgenden Abschnitt.

Q10. Was ist Ausnahmehierarchie in Java?

Die Hierarchie ist wie folgt:

Throwable ist eine übergeordnete Klasse aller Exception-Klassen. Es gibt zwei Arten von Ausnahmen: Geprüfte Ausnahmen und UncheckedExceptions oder RunTimeExceptions. Beide Arten von Ausnahmen erweitern die Ausnahmeklasse, während Fehler weiter in Fehler der virtuellen Maschine und Assertionsfehler eingeteilt werden.

ExceptionHierarchy - Java-Interviewfragen - Edureka

Q11. Wie erstelle ich eine benutzerdefinierte Ausnahme?

Um Ihre eigene Ausnahme zu erstellen, erweitern Sie die Klasse Exception oder eine ihrer Unterklassen.

  • Klasse New1Exception erweitert Exception { } // Dadurch wird eine Checked Exception erstellt
  • Klasse NewException erweitert IOException { } // Dadurch wird eine Checked-Ausnahme erstellt
  • Klasse NewException erweitert NullPonterExcpetion { } // Dies erzeugt eine UnChecked-Ausnahme

Q12. Was sind die wichtigen Methoden der Java Exception Class?

Exception und alle seine Unterklassen stellen keine spezifischen Methoden bereit und alle Methoden sind in der Basisklasse Throwable definiert.

  1. String getMessage() – Diese Methode gibt die Nachricht String of Throwable zurück und die Nachricht kann bereitgestellt werden, während die Ausnahme durch ihren Konstruktor erstellt wird.
  2. String getLocalizedMessage( ) – Diese Methode wird bereitgestellt, damit Unterklassen sie überschreiben können, um dem aufrufenden Programm eine gebietsschemaspezifische Nachricht bereitzustellen. Die Throwable-Klassenimplementierung dieser Methode verwendet einfach die Methode getMessage(), um die Ausnahmemeldung zurückzugeben.
  3. Synchronized Throwable getCause() – Diese Methode gibt die Ursache der Ausnahme oder eine Null-ID zurück, wenn die Ursache unbekannt ist.
  4. String toString() – Diese Methode gibt die Informationen über Throwable im String-Format zurück, der zurückgegebene String enthält den Namen der Throwable-Klasse und die lokalisierte Nachricht.
  5. void printStackTrace() – Diese Methode gibt die Stack-Trace-Informationen in den Standardfehlerstream aus, diese Methode ist überladen und wir können PrintStream oder PrintWriter als Argument übergeben, um die Stack-Trace-Informationen in die Datei oder den Stream zu schreiben.

Q13. Was sind die Unterschiede zwischen Prozessen und Threads?

 VerfahrenGewinde
DefinitionEine ausführende Instanz eines Programms wird als Prozess bezeichnet.Ein Thread ist eine Teilmenge des Prozesses.
KommunikationProzesse müssen die Kommunikation zwischen Prozessen verwenden, um mit Geschwisterprozessen zu kommunizieren.Threads können direkt mit anderen Threads ihres Prozesses kommunizieren.
SteuerungProzesse können nur untergeordnete Prozesse steuern.Threads können beträchtliche Kontrolle über Threads desselben Prozesses ausüben.
ÄnderungenJede Änderung im übergeordneten Prozess wirkt sich nicht auf untergeordnete Prozesse aus.Jede Änderung im Hauptthread kann sich auf das Verhalten der anderen Threads des Prozesses auswirken.
SpeicherIn getrennten Speicherbereichen ausführen.In gemeinsam genutzten Speicherbereichen ausführen.
Kontrolliert vonDer Prozess wird vom Betriebssystem gesteuert.Threads werden vom Programmierer in einem Programm gesteuert.
AbhängigkeitProzesse sind unabhängig.Threads sind abhängig.

F14. Was ist ein Final-Block? Gibt es einen Fall, in dem final nicht ausgeführt wird?

Block schließlich ist ein Block, der immer eine Reihe von Anweisungen ausführt. Es ist immer mit einem try-Block verbunden, unabhängig davon, ob eine Ausnahme auftritt oder nicht. 
Ja, final wird nicht ausgeführt, wenn das Programm beendet wird, indem entweder System.exit() aufgerufen wird oder ein schwerwiegender Fehler verursacht wird, der zum Abbruch des Prozesses führt.

Q15. Was ist Synchronisation?

Synchronisation bezieht sich auf Multithreading. Ein synchronisierter Codeblock kann jeweils nur von einem Thread ausgeführt werden. Da Java die Ausführung mehrerer Threads unterstützt, können zwei oder mehr Threads auf dieselben Felder oder Objekte zugreifen. Die Synchronisierung ist ein Prozess, der alle gleichzeitig ausgeführten Threads synchron hält. Die Synchronisierung vermeidet Speicherkonsistenzfehler, die durch eine inkonsistente Ansicht des gemeinsam genutzten Speichers verursacht werden. Wenn eine Methode als synchronisiert deklariert wird, hält der Thread den Monitor für das Objekt dieser Methode. Wenn ein anderer Thread die synchronisierte Methode ausführt, wird der Thread blockiert, bis dieser Thread den Monitor freigibt. 

Synchronisation - Java-Interviewfragen - Edureka

 Q16. Können wir mehrere Catch-Blöcke unter einen Single-Try-Block schreiben? 

Ja, wir können mehrere Catch-Blöcke unter einem Single-Try-Block haben, aber der Ansatz sollte von spezifisch zu allgemein sein. Lassen Sie uns dies anhand eines programmatischen Beispiels verstehen.

public class Example {
public static void main(String args[]) {
try {
int a[]= new int[10];
a[10]= 10/0;
}
catch(ArithmeticException e)
{
System.out.println("Arithmetic exception in first catch block");
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("Array index out of bounds in second catch block");
}
catch(Exception e)
{
System.out.println("Any exception in third catch block");
}
}

Q17. Was sind die wichtigen Methoden der Java-Ausnahmeklasse?

Methoden werden in der Basisklasse Throwable definiert. Einige der wichtigen Methoden der Java-Ausnahmeklasse sind unten aufgeführt. 

  1. String getMessage() – Diese Methode gibt die Nachricht String über die Ausnahme zurück. Die Nachricht kann über ihren Konstruktor bereitgestellt werden.
  2. public StackTraceElement[] getStackTrace() – Diese Methode gibt ein Array zurück, das jedes Element im Stack-Trace enthält. Das Element bei Index 0 stellt den Anfang der Aufrufliste dar, während das letzte Element im Array die Methode am Ende der Aufrufliste darstellt.

Synchronized Throwable getCause() – Diese Methode gibt die Ursache der Ausnahme oder Null-ID zurück, wie sie durch ein Throwable-Objekt dargestellt wird.

  1. String toString() – Diese Methode gibt die Informationen im String-Format zurück. Der zurückgegebene String enthält den Namen der Throwable-Klasse und die lokalisierte Nachricht.
  2. void printStackTrace() – Diese Methode gibt die Stack-Trace-Informationen in den Standardfehlerstrom aus.

Q18. Was ist OutOfMemoryError in Java?

OutOfMemoryError ist die Unterklasse von java.lang.Error, die im Allgemeinen auftritt, wenn unserer JVM der Speicher ausgeht.

Q19. Was ist ein Faden?

Ein Thread ist die kleinste programmierte Anweisung, die von einem Scheduler unabhängig ausgeführt werden kann. In Java haben alle Programme mindestens einen Thread, der als Hauptthread bezeichnet wird. Dieser Haupt-Thread wird von der JVM erstellt, wenn das Programm seine Ausführung beginnt. Der Hauptthread wird verwendet, um main() des Programms aufzurufen.

Q20. Welche zwei Möglichkeiten gibt es, einen Thread zu erstellen?

In Java können Threads auf die folgenden zwei Arten erstellt werden:- 

  • Durch die Implementierung der Runnable-Schnittstelle.
  • Durch Verlängerung des Threads

Q21. Was sind die verschiedenen Arten von Garbage Collectors in Java?

Garbage Collection in Java ein Programm, das bei der impliziten Speicherverwaltung hilft. Da Sie in Java mit dem Schlüsselwort new Objekte dynamisch erstellen können, die nach ihrer Erstellung etwas Speicher verbrauchen. Sobald die Arbeit erledigt ist und keine Referenzen mehr auf das Objekt vorhanden sind, zerstört Java mit Garbage Collection das Objekt und entlastet den von ihm belegten Speicher. Java bietet vier Arten von Garbage Collectors:

  • Serieller Garbage Collector
  • Paralleler Garbage Collector
  • CMS Garbage Collector
  • G1 Garbage Collector

Falls Sie mit diesen Java- Interviewfragen vor Herausforderungen stehen , kommentieren Sie Ihre Probleme bitte im folgenden Abschnitt.

Quelle des Originalartikels unter https://www.edureka.co

Nell Martins

1662391363

BITCOIN UND DIE PROGRESSIVEN

USA | Cointelegraph

Die grundsätzliche Behauptung der Moderaten ist, dass der Bitcoin-Standard den Raum, über den der Staat Macht hat, verkleinert und damit die offenen Türen für Fälschungen verringert. Es gibt entscheidende Probleme mit dieser Methodik, von denen ich den größten Teil bereits an dieser Stelle dargelegt haben möchte. In erster Linie verzerrt dies den Vorteilskompromiss der Geldeinsparung, den ein anständiger, unflexibler Finanzrahmen haben würde, insbesondere angesichts der Tatsache, dass viele der Schwierigkeiten, denen die Gesellschaft heute gegenübersteht, wie die Naturkatastrophe, die unglückliche Gründung und die Ungleichheit, bedeutende Unternehmungen erfordern - und Spekulationen werden durch Geldschöpfung finanziert. Außerdem wird der Staat als eine exogene Substanz betrachtet, die in dieser geschwächten Struktur fortwährend existieren muss, im Gegensatz zu der Auffassung, dass der Staat wiederhergestellt werden sollte und ein grundlegender Apparat bei der Förderung des Fortschritts ist, indem er seine Grenzen auslotet.

Drittens, und vielleicht im Besonderen, hat diese Behauptung ebenfalls die umgekehrte Geschichte des Bargelds, da die materiellen und sozialen Beziehungen in einer allgemeinen Öffentlichkeit bestimmen, was Bargeld ist, und nicht andersherum. Um die finanziellen Probleme, mit denen wir konfrontiert sind, zu lösen, sollte der Konvergenzpunkt der Blockade die wechselhafte Verbindung zwischen Kapital und Arbeit, staatlicher Vereinnahmung durch die erste Klasse und übermäßigem Konsum durch ein paar auf Kosten der vielen sein. Die Konzentration auf das Bargeld in diesem von außen nach innen gerichteten, technokratischen Ansatz ist eine Unterbrechung.

 

Visit the Official Website of BitQT to know how their automated trading software works to help you get rich!

You can click here to download the BitQT App!

Available for iOS, Android, Mac, and Windows

You can watch how BitQT works on its Official YouTube Channel

Other than our review, you can check out reviews and feedback from its real users

BitQT is a reputable automated trading platform available in Austria

Address: Hohenstaufengasse 6, 1010 Wien, Austria

Telephone No.: +436602020237

 

BitQT is a reputable automated trading platform available in AustriaBitQT is available on Google Maps and read users' experiences and reviews about the stunning trading platform.

Einführung in die Webentwicklung in Python und Djang

Die Webentwicklung wurde aufgrund der weit verbreiteten Zugänglichkeit des Webs, insbesondere für den Handel, populär. Als Unternehmen schnell erkannten, dass sie ihre Produkte und Dienstleistungen im Internet anbieten können, entstand eine Nachfrage nach Webentwicklung, die nie nachgelassen hat.

Die Webentwicklung kann in drei große Teile unterteilt werden:

  1. Backend-Entwicklung: Hier geht es um Geschäftslogik, Datenspeicherung und -verarbeitung.
  2. Frontend-Entwicklung: Dies befasst sich mit der Interaktion des Benutzers mit dem System und umfasst hauptsächlich das Design von Benutzererfahrung (UX) und Benutzeroberfläche (UI).
  3. API-/Middleware-Entwicklung: Hier geht es darum, wie Backend- und Frontend-Apps kommunizieren.

In diesem Leitfaden wird die Entwicklung von Web-Apps mit dem Python-Framework Django untersucht . Dieses Framework befasst sich hauptsächlich mit der Backend- und API-/Middleware-Entwicklung. Es wird daher davon ausgegangen, dass Sie zumindest über mittlere Kenntnisse in Python verfügen.

Python-Webentwicklung

Die Webentwicklung in Python wurde aufgegriffen, um die Datenverarbeitung und Verarbeitungsleistung von Python ins Web zu bringen. Einige beliebte Websites, die auf Python/Django basieren, sind unter anderem Disqus, Instagram und Mozilla. Weitere Informationen finden Sie hier .

Hallo Welt in Django

Um mit Django zu beginnen, installieren Sie es mit diesem Befehl auf Ihrem Terminal.

pip install django

Um ein neues Django-Projekt zu starten, führen Sie den starter-Befehl aus, der ein Boilerplate-Projekt erstellt.

django-admin startproject hello_world

Sie haben jetzt ein Django-Projekt mit grundlegendem Boilerplate-Code. Innerhalb eines Django-Projekts können mehrere Apps existieren .

Eine App kann als eine Codebibliothek beschrieben werden, die einen separaten Teil eines größeren Projekts darstellt. Für eine Django-App muss mindestens eine App ausgeführt werden. Verwenden Sie zum Erstellen einer App das manage.pySkript und übergeben Sie den startappBefehl, wie unten gezeigt.

python manage.py startapp myapp

An diesem Punkt haben Sie ein Django-Projekt namens hello_worldund darin eine App namens myapp.

App-Boilerplate

Der App-Ordner enthält Starterdateien, die für jede Django-App von entscheidender Bedeutung sind. Diese sind:

  1. app.py: Wo App-Konfigurationen definiert werden
  2. admin.py: Hier werden Modellkonfigurationen in Bezug auf die Projektverwaltungsseite definiert
  3. models.py: Wo Datenbanktabellen definiert sind alsModels
  4. views.py- Wo Django-Ansichten definiert sind. Dies sind Objekte, die definieren, wie Inhalte auf einer Webseite angezeigt werden

Für dieses Projekt fügen Sie eine neue Datei hinzu und nennen sie urls.py. Kopieren Sie den folgenden Code in die Datei unter dem myapp/Ordner.

from django.urls import path
from .views import home
urlpatterns = [
    path('', home,name='home'),
]

Die Funktion dieser Datei besteht darin, zu definieren, auf welche Ansicht ein Benutzer zugreift, wenn er auf eine bestimmte URL zugreift. In diesem Fall werden sie beim Zugriff auf die Stamm-URL zur Startansicht weitergeleitet.

Der nächste Schritt besteht darin, die homeAnsicht zu entwickeln. Öffnen views.pyund kopieren Sie den Codeblock unten.

from django.shortcuts import HttpResponse

# Create your views here.
def home(request):
    return HttpResponse("Hello world from Django")

Das Obige erstellt eine Ansicht namens home, die eine zurückgibt HTTPResponse. Dies bedeutet, dass es sich nur um einfachen Text handelt. In Django gibt es klassenbasierte und funktionsbasierte Ansichten. Lesen Sie hier mehr über sie .

Die App ist jetzt fertig, muss aber mit dem Hauptprojekt verbunden werden, da der Benutzer zur Laufzeit auf das Projekt auf Root-Ebene zugreift und dann durch URL-Auflösung zur entsprechenden App geleitet wird. Um die App mit dem Hauptprojekt zu verbinden, fügen Sie sie der INSTALLED_APPSListe in der settings.pyDatei im hello_world/Projektordner hinzu; Verknüpfen Sie es auch in der Hauptdatei urls.pyim Projekt.

Navigieren Sie zum Hinzufügen zur INSTALLED_APPSListe zu der settings.pyDatei und ersetzen Sie die aktuelle Liste durch die Liste unten.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # local app
    'myapp',
]


Um die Projekt-URL mit der App-URL zu verknüpfen, navigieren Sie zu der hello_world/urls.pyDatei und kopieren Sie den folgenden Codeblock.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('myapp.urls'))
]

myappMit dem zweiten Element in der Liste weisen Sie an, dass der Datenverkehr an die URL-Datei in der App geleitet werden soll, wenn kein Parameter von der Stamm-URL vorhanden ist (Pfad leer) . Innerhalb der myappURL-Datei wird die Stamm-URL aufgelöst, um die homeAnsicht anzuzeigen. So werden Sie die Hello world from DjangoNachricht anzeigen.

Ausführen des Projekts

Führen Sie zum Ausführen des Projekts den folgenden Befehl aus:

python manage.py runserver

Dadurch wird das Projekt mithilfe einer integrierten Webserver-Gateway-Schnittstelle (WSGI) ausgeführt, die zum Ausführen von Python-Projekten im Web erforderlich ist. Die Site ist standardmäßig unter http://127.0.0.1:8000 erreichbar .

Beispielbildschirm

Nachdem Sie den runserverBefehl ausgeführt haben, sollten Sie beim Zugriff auf die Standard-Django-URL eine Hallo-Welt-Seite sehen, die der folgenden ähnelt.

Landebildschirm

 

Die Webentwicklung in Django ist ein ziemlich weites Feld. Die in diesem Leitfaden erlernten Fähigkeiten bieten eine Einführung in die Anforderungen für Positionen wie Backend- oder Full-Stack-Python/Django-Webentwickler.

Literale und Operatoren in Rust - Die Programmiersprache Rust

Literale und Operatoren - Rust By Example

Literale und Operatoren

Ganzzahlen 1, Gleitkommazahlen 1.2, Zeichen 'a', Zeichenfolgen "abc", Boolesche Werte trueund der Einheitentyp ()können mit Literalen ausgedrückt werden.

Ganzzahlen können alternativ in hexadezimaler, oktaler oder binärer Notation mit den folgenden Präfixen ausgedrückt werden: 0x, 0ooder 0b.

Zur besseren Lesbarkeit können Unterstriche in numerische Literale eingefügt werden, zB 1_000ist gleich wie 1000, und 0.000_001ist gleich wie 0.000001.

Wir müssen dem Compiler den Typ der von uns verwendeten Literale mitteilen. Im Moment verwenden wir das u32Suffix, um anzugeben, dass das Literal eine 32-Bit-Ganzzahl ohne Vorzeichen ist, und das i32Suffix, um anzugeben, dass es eine 32-Bit-Ganzzahl mit Vorzeichen ist.

Die verfügbaren Operatoren und ihre Rangfolge in Rust ähneln denen anderer C-ähnlicher Sprachen .

fn main() {
    // Integer addition
    println!("1 + 2 = {}", 1u32 + 2);

    // Integer subtraction
    println!("1 - 2 = {}", 1i32 - 2);
    // TODO ^ Try changing `1i32` to `1u32` to see why the type is important

    // Short-circuiting boolean logic
    println!("true AND false is {}", true && false);
    println!("true OR false is {}", true || false);
    println!("NOT true is {}", !true);

    // Bitwise operations
    println!("0011 AND 0101 is {:04b}", 0b0011u32 & 0b0101);
    println!("0011 OR 0101 is {:04b}", 0b0011u32 | 0b0101);
    println!("0011 XOR 0101 is {:04b}", 0b0011u32 ^ 0b0101);
    println!("1 << 5 is {}", 1u32 << 5);
    println!("0x80 >> 2 is 0x{:x}", 0x80u32 >> 2);

    // Use underscores to improve readability!
    println!("One million is written as {}", 1_000_000u32);
}

Quelle des Originalartikels unter https://doc.rust-lang.org