Heim  >  Artikel  >  Java  >  Häufige grundlegende Java-Interviewfragen

Häufige grundlegende Java-Interviewfragen

(*-*)浩
(*-*)浩Original
2019-12-14 15:06:172306Durchsuche

Häufige grundlegende Java-Interviewfragen

Was ist der Unterschied zwischen JDK und JRE?

JDK: Die Abkürzung für Java Development Kit, Java Development Tool Kit, stellt eine Java-Entwicklungsumgebung und eine Laufumgebung bereit.

JRE: Die Abkürzung für Java Runtime Environment, Java Runtime Environment, stellt die erforderliche Umgebung für den Betrieb von Java bereit. (Empfohlene Studie: Gemeinsame Fragen zu Java-Interviews)

Insbesondere enthält JDK tatsächlich JRE und auch den Compiler Javac, der Java-Quellcode kompiliert, sowie viele Debugging- und Java-Programme Werkzeuge zur Analyse. Einfach ausgedrückt: Wenn Sie Java-Programme ausführen müssen, müssen Sie nur JRE installieren. Wenn Sie Java-Programme schreiben müssen, müssen Sie JDK installieren. Was ist der Unterschied zwischen

== und equal?

Die Auswirkungen von == sind für Basistypen und Referenztypen wie folgt unterschiedlich:

Basistypen: Es wird verglichen, ob die Werte gleich sind

Referenztyp: Was verglichen wird, ist, ob die Referenzen gleich sind;

quals ist im Wesentlichen ==, aber String und Integer überschreiben die Methode equal und wandeln sie in einen Wertvergleich um.

== Bei Basistypen handelt es sich um einen Wertvergleich, bei Referenztypen handelt es sich um einen Referenzvergleich und gleich ist standardmäßig ein Referenzvergleich, aber viele Klassen überschreiben die Methode „equals“, z. B. String, Integer usw. wandelt es in einen Wertevergleich um, sodass unter normalen Umständen gleich vergleicht, ob die Werte gleich sind.

Wenn der hashCode() der beiden Objekte gleich ist, dann muss auch equal() wahr sein, oder?

Nein, der hashCode() der beiden Objekte ist derselbe und equal() ist möglicherweise nicht wahr.

String str1 = "通话";
String str2 = "重地";
System.out.println(String.format("str1:%d | str2:%d",  str1.hashCode(),str2.hashCode()));
System.out.println(str1.equals(str2));

Ausführungsergebnis:

str1:1179395 | str2:1179395
false

Codeinterpretation: Offensichtlich sind die hashCode() von „call“ und „powerful place“ gleich, aber equal() ist falsch Denn in einer Hash-Tabelle bedeutet gleich hashCode(), dass die Hash-Werte zweier Schlüssel-Wert-Paare gleich sind. Gleiche Hash-Werte bedeuten jedoch nicht unbedingt, dass die Schlüssel-Wert-Paare gleich sind.

Welche Rolle spielt final in Java?

Die letzte geänderte Klasse wird als letzte Klasse bezeichnet und kann nicht vererbt werden.

Endgültig geänderte Methoden können nicht überschrieben werden.

Endgültig geänderte Variablen werden Konstanten genannt. Nach der Initialisierung kann der Wert nicht geändert werden.

Was ist Math.round(-1.5) in Java gleich?

ist gleich -1.

Ist String ein grundlegender Datentyp?

String ist kein Grundtyp. Es gibt 8 Grundtypen: Byte, Boolean, Char, Short, Int, Float, Long, Double und String ist ein Objekt.

Welche Klassen gibt es zum Betreiben von Strings in Java? Was ist der Unterschied zwischen ihnen?

Zu den Klassen, die mit Strings arbeiten, gehören: String, StringBuffer und StringBuilder.

Der Unterschied zwischen String und StringBuffer und StringBuilder besteht darin, dass String ein unveränderliches Objekt deklariert. Jede Operation generiert ein neues String-Objekt und zeigt dann den Zeiger auf das neue String-Objekt, während StringBuffer und StringBuilder in verwendet werden können Die Operation wird auf Basis des Originalobjekts ausgeführt. Daher ist es am besten, String nicht zu verwenden, wenn sich der Inhalt der Zeichenfolge häufig ändert.

Der größte Unterschied zwischen StringBuffer und StringBuilder besteht darin, dass StringBuffer threadsicher ist, während StringBuilder nicht threadsicher ist. Die Leistung von StringBuilder ist jedoch höher als die von StringBuffer. Daher wird empfohlen, StringBuilder einzeln zu verwenden -Threaded-Umgebung und in einer Multithread-Umgebung wird die Verwendung von StringBuffer empfohlen.

Ist String str="i" dasselbe wie String str=new String("i")?

ist anders, weil die Speicherzuweisungsmethode anders ist. String str="i" wird von der Java Virtual Machine dem Konstantenpool zugewiesen und String str=new String("i") wird dem Heap-Speicher zugewiesen.

Wie kann man eine Zeichenfolge umkehren?

Verwenden Sie die reverse()-Methode von StringBuilder oder stringBuffer.

Beispielcode:

// StringBuffer reverse
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("abcdefg");
System.out.println(stringBuffer.reverse()); // gfedcba
// StringBuilder reverse
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("abcdefg");
System.out.println(stringBuilder.reverse()); // gfedcba

Was sind die gängigen Methoden der String-Klasse?

indexOf():返回指定字符的索引。
charAt():返回指定索引处的字符。
replace():字符串替换。
trim():去除字符串两端空白。
split():分割字符串,返回一个分割后的字符串数组。
getBytes():返回字符串的 byte 类型数组。
length():返回字符串长度。
toLowerCase():将字符串转成小写字母。
toUpperCase():将字符串转成大写字符。
substring():截取字符串。
equals():字符串比较。

Müssen abstrakte Klassen abstrakte Methoden haben?

Nein, abstrakte Klassen müssen nicht unbedingt abstrakte Methoden haben.

Beispielcode:

abstract class Cat {
    public static void sayHi() {
        System.out.println("hi~");
    }
}

Im obigen Code verfügt die abstrakte Klasse nicht über abstrakte Methoden, kann aber normal ausgeführt werden.

Was sind die Unterschiede zwischen gewöhnlichen Klassen und abstrakten Klassen?

Gewöhnliche Klassen können keine abstrakten Methoden enthalten, während abstrakte Klassen abstrakte Methoden enthalten können.

Abstrakte Klassen können nicht direkt instanziiert werden, gewöhnliche Klassen können jedoch direkt instanziiert werden.

Können abstrakte Klassen mit final geändert werden?

Nein, die Definition einer abstrakten Klasse dient der Erbschaft durch andere Klassen. Wenn sie als final definiert ist, kann die Klasse nicht vererbt werden, was zu Konflikten untereinander führt, sodass final die abstrakte Klasse nicht ändern kann. Wie in der Abbildung unten gezeigt, gibt der Editor außerdem eine Fehlermeldung aus:

Häufige grundlegende Java-Interviewfragen

Was ist der Unterschied zwischen einer Schnittstelle und einer abstrakten Klasse?

Implementierung: Unterklassen abstrakter Klassen verwenden Erweiterungen, um Schnittstellen zu erben; sie müssen Implementierungen verwenden, um die Schnittstelle zu implementieren.

构造函数:抽象类可以有构造函数;接口不能有。

main 方法:抽象类可以有 main 方法,并且我们能运行它;接口不能有 main 方法。

实现数量:类可以实现很多个接口;但是只能继承一个抽象类。

访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的方法可以是任意访问修饰符。

java 中 IO 流分为几种?

按功能来分:输入流(input)、输出流(output)。

按类型来分:字节流和字符流。

字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据。

BIO、NIO、AIO 有什么区别?

BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。

NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。

AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

Files的常用方法都有哪些?

Files.exists():检测文件路径是否存在。
Files.createFile():创建文件。
Files.createDirectory():创建文件夹。
Files.delete():删除一个文件或目录。
Files.copy():复制文件。
Files.move():移动文件。
Files.size():查看文件个数。
Files.read():读取文件。
Files.write():写入文件。

Das obige ist der detaillierte Inhalt vonHäufige grundlegende Java-Interviewfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Javaweb-Interviewfragen (3)Nächster Artikel:Javaweb-Interviewfragen (3)