Java 面接でよくある基本的な質問

(*-*)浩
リリース: 2019-12-28 16:05:09
オリジナル
2304 人が閲覧しました

Java 面接でよくある基本的な質問

JDK と JRE の違いは何ですか?

JDK: Java Development Kit の略で、Java 開発ツールキットであり、Java の開発環境と実行環境を提供します。

JRE: Java Runtime Environment の略で、Java 実行環境。Java の動作に必要な環境を提供します。 (推奨される調査: java の一般的な面接の質問 )

具体的には、JDK には実際には JRE が含まれており、Java ソース コードをコンパイルするコンパイラ javac も含まれており、多くの Java プログラムのデバッグやツールも含まれています。分析。簡単に言うと、Java プログラムを実行する必要がある場合は JRE をインストールするだけでよく、Java プログラムを作成する必要がある場合は JDK をインストールする必要があります。

== 等しいと等しいの違いは何ですか?

== の効果は、次のように基本型と参照型で異なります:

基本型: 比較されるのは、値が同じかどうかです。

# 参照タイプ: 比較されるのは参照が同じかどうかです。

quals は本質的に == ですが、String と Integer が equals メソッドをオーバーライドして値の比較に変える点が異なります。

== 基本型の場合は値の比較、参照型の場合は参照比較、equals はデフォルトで参照比較ですが、String、Integer などの多くのクラスは、equals メソッドをオーバーライドします。などは値の比較に変換するため、通常の状況では、equals は値が等しいかどうかを比較します。

2 つのオブジェクトの hashCode() が同じ場合、equals() も true でなければなりません。

いいえ、2 つのオブジェクトの hashCode() は同じであり、equals() は true ではない可能性があります。

String str1 = "通话";
String str2 = "重地";
System.out.println(String.format("str1:%d | str2:%d",  str1.hashCode(),str2.hashCode()));
System.out.println(str1.equals(str2));
ログイン後にコピー

実行結果:

str1:1179395 | str2:1179395
false
ログイン後にコピー

コード解釈: 「call」と「powerful place」の hashCode() は明らかに同じですが、equals() はfalse, ハッシュ テーブルでは、equal hashCode() は 2 つのキーと値のペアのハッシュ値が等しいことを意味しますが、ハッシュ値が等しいということは、必ずしもキーと値のペアが等しいことを意味するわけではありません。

Java における Final の役割は何ですか?

最後に変更されたクラスを最終クラスと呼び、このクラスは継承できません。

最終的に変更されたメソッドはオーバーライドできません。

最終的に変更された変数は定数と呼ばれます。定数は初期化する必要があります。初期化後は値を変更できません。

Java の Math.round(-1.5) は何に等しいですか?

は -1 に等しい。

文字列は基本的なデータ型ですか?

String は基本型に属しません。基本型は byte、boolean、char、short、int、float、long、double の 8 つあり、String はオブジェクトに属します。

Java で文字列を操作するためのクラスとは何ですか?それらの違いは何ですか?

文字列を操作するクラスには、String、StringBuffer、および StringBuilder が含まれます。

String と StringBuffer および StringBuilder の違いは、String が不変オブジェクトを宣言することです。各操作では新しい String オブジェクトが生成され、ポインタが新しい String オブジェクトを指しますが、StringBuffer と StringBuilder は元のオブジェクトに基づいて操作が行われるため、文字列の内容が頻繁に変更される場合には String を使用しないほうがよいでしょう。

StringBuffer と StringBuilder の最大の違いは、StringBuffer はスレッド セーフであるのに対し、StringBuilder は非スレッド セーフであることですが、StringBuilder のパフォーマンスは StringBuffer よりも高いため、単一の環境で StringBuilder を使用することをお勧めします。 -スレッド環境およびマルチスレッド環境では、StringBuffer を使用することをお勧めします。

String str="i" は String str=new String("i") と同じですか?

メモリ割り当て方法が異なるため、異なります。 String str="i" の場合、Java 仮想マシンはそれを定数プールに割り当て、String str=new String("i") はヒープ メモリに割り当てられます。

文字列を反転するにはどうすればよいですか?

StringBuilder または stringBuffer の reverse() メソッドを使用します。

サンプル コード:

// 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
ログイン後にコピー

String クラスの一般的なメソッドは何ですか?

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

抽象クラスには抽象メソッドが必要ですか?

いいえ、抽象クラスには必ずしも抽象メソッドが必要というわけではありません。

サンプル コード:

abstract class Cat {
    public static void sayHi() {
        System.out.println("hi~");
    }
}
ログイン後にコピー

上記のコードでは、抽象クラスには抽象メソッドがありませんが、正常に実行できます。

通常のクラスと抽象クラスの違いは何ですか?


通常のクラスには抽象メソッドを含めることはできませんが、抽象クラスには抽象メソッドを含めることができます。

抽象クラスは直接インスタンス化できませんが、通常のクラスは直接インスタンス化できます。

抽象クラスはfinalで変更できますか?

いいえ、抽象クラスを定義すると他のクラスが継承することになります。finalとして定義するとクラスを継承できず競合が発生するため、finalでは抽象クラスを変更できません、下の図に示すように、エディターは次のエラー メッセージも表示します。

Java 面接でよくある基本的な質問

インターフェースと抽象クラスの違いは何ですか?

実装: 抽象クラスのサブクラスは継承に extends を使用し、インターフェイスはインターフェイスを実装するためにimplements を使用する必要があります。

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

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():写入文件。
ログイン後にコピー

以上がJava 面接でよくある基本的な質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート