Javaの基本(Javaインタビューの質問)

1. Javaの起源は?

1991年1月、日が設立された
当初、「オーク」という名前の通り1991年2月に
1994年7月に、Javaの誕生、オークは、javaに改名さ
J2SE、J2EE、J2ME:1999年6月3つのバージョンのJavaのリリース
2009年4月、OracleはSunを買収

2. JAVAの長所と短所は?

4つの利点
(1)JVMによるクロスプラットフォーム実装、どこでも1回のコンパイル
(2)オブジェクト指向の考え方、開発が容易、低学習コスト
(3)ガベージコレクションメカニズムがオブジェクトのリサイクルを自動的に管理
(4)Javaがメモリの直接操作を制限これは、開発効率を向上させるJVMによって完了します
。2つの欠点
(1)JVM動作環境が必要であり、デスクトップアプリケーションの開発には適していません。
(2)パッケージAPIは、JVMを介してOSに転送する必要があるため、効率の問題が発生します。

3. J2SE、J2EE、J2MEの違いは何ですか?

J2SE Standard Edition、アプリケーションソフトウェア開発
J2EE Enterprise Edition、Web開発
J2ME Micro Edition、モバイルデバイス開発

4. Javaはどのようにしてどこでもコンパイルを実行できますか?

Javaコンパイラによって生成されたバイトコードファイルは、どこでも実行できるファイルです。オペレーティングシステムが仮想マシンとともにインストールされた後、仮想マシンはバイトコードファイルをオペレーティングシステムが認識できる言語に変換できます

5. Javaの3つの特徴

カプセル化:セキュリティの提供、
継承:コードの重複を減らし、再利用性を向上させる
ポリモーフィズム:親クラス参照を使用してサブクラスオブジェクトをポイントし、Javaの柔軟性を反映

6. JVM、JRE、JDKの違いは何ですか?

JVM:バイトコードファイルを認識できる仮想マシンプロセスは、Javaクロスプラットフォーム
JREのコアです:Javaランタイム環境(Javaランタイム環境)、JREはJavaユーザー向けであり、ダウンロードしてインストールする場合、開発者向けではありませんJREを使用する場合、システムは、Java開発ツール(コンパイラ、デバッガなど)を除く、JVM標準実装およびJAVAコアクラスライブラリを含むJAVAプログラムのみを実行できます
。JDK:JDK(Java開発キット)(Java開発キット)が提供されますコンパイラ(javac、javaファイルをクラスファイルにコンパイル)および実行環境(JVM、クラスファイルを解析して実行させるために使用)、JAVAを開発および実行できます。JDKはJAVAの中核です

7. 8つの基本データ型(未定)

詳細はマインドマップをご覧ください

8.パッキングとは何ですか?開梱とは何ですか?(未定)

JDK1.5からは、自動ボクシング機能が提供されています
ボクシング:基本タイプをラッパーのタイプに変更するプロセス。integer i = Integer.valueOf(int);
Unboxing:ラッパータイプを基本タイプに変更するプロセス。int i = Integer.intValue();
(1)算術演算を含めると、自動ボックス化解除がトリガーされます。
(2)自動ボクシングプロセスはたくさんありますが、ボクシングによって返されたパッケージオブジェクトがキャッシュから取得されない場合、多くの新しいオブジェクトが作成され、メモリを多く消費します。
Integer a = 100; //ボクシング、最初は
int b = new Integer(100); //ボックス化解除

9. 9つの一般的なObjectメソッド?

(1)HashCode HashCodeは同じで、値は必ずしも同じではありません
(2)等しい
(3)toString
(4)待機
(5)通知
(6)通知
(7)ファイナライズ
(8)getClass
(9)クローンメソッド

10. 4つのアクセス制御修飾子の違いは何ですか?

(1)プライベートにはこのクラスだけがアクセスできます
(2)デフォルトは同じパッケージ
だけがアクセスできます(3)プロテクトは同じパッケージとサブクラスだけがアクセスできます
(4)パブリックにアクセスできます

11.オーバーロードとリライトの違いは?

パラメータ同じメソッド名の二つの方法は、パラメータの数は、パラメータは、矛盾が呼び出されヘビーデューティ
親クラスのサブクラス継承し、そして継承が変更と呼ばれるリライタブル

12.ポリモーフィズムとは何ですか?ポリモーフィズムの理解について教えてください

親クラスの参照はサブクラスオブジェクトを指します。
利点は柔軟性であり、欠点はサブクラスメソッドを呼び出せないことです。

13. Javaの4つの参照型の違いは何ですか?

強い参照:Object o = new Object(); GCは強く参照されるオブジェクトを収集しません。メソッドには例外があり、メソッドはスタックを終了し、すべてのローカル変数がリサイクルされるため、ローカル変数の強い参照がリサイクルされます。
ソフト参照:JVMヒープメモリがいっぱいになると、ソフト参照オブジェクトがリサイクルされます。一般的に使用されますキャッシュを実行(SoftReferenceオブジェクト)
弱参照:gcがリサイクルされるたび(WearkReferenve)
仮想参照:Object o = new Object(); o = null; gcにこのオブジェクトをリサイクルするように通知する

14.一般的な内部クラスは何ですか?

メンバー内部クラス
静的内部クラス
メソッド内部クラス
匿名内部クラス

15.参照渡しと値渡しの違いは何ですか?(完璧ではない)

Javaプログラミング言語には、値を渡すパラメーターのみがあります。
基本的なデータ型の値を渡します。
参照型の参照を渡します。

16.なぜ上向きと下向きの変化があるのですか?

上向き変換(自動)、親クラスへのサブクラス化、動的バインディングは安全です。Personp = new Student()、属性にポリモーフィズムがないため、オーバーロードされたメソッドにはポリモーフィズム
ダウンキャストがあります(必須)親クラスをサブクラスに変換するのは安全ではありません。下に移動するには、まず上に移動する必要があります。上に遷移すると、サブクラスの追加の属性とメソッドが失われます。下に移動しても安全です。エラーを報告せず、予期しない操作が発生します

17. hashCode()とは何ですか?(完璧ではない)

ハッシュ値、任意の長さのデータのハッシュアルゴリズムによって取得されたint値

18.コンストラクタを書き換えることはできますか?

コンストラクターは継承できないため、書き換えることはできませんが、オーバーロードできます

19. Mathクラスの役割は何ですか?一般的に使用される方法は何ですか?

基本的な数学演算のメソッドが含まれています
。max()、min()、compareTo()、random()、isLetter()をNumberクラスと組み合わせて使用​​して、文字の
丸めかどうか判断します。通常の条件では、丸められた負の値が返されます。 -1.5などの整数は-1を返します。
ceil:-1.5は-1を返すなど、小数点が配置されている2つの整数の間の大きい方の値を返します。
tail:小数が配置されている2つの整数の間の小さい値を返します。たとえば、-1.5は-2を返します。

20. Numberクラスとは何ですか?

すべてのラッパークラスの抽象親クラス、java.langパッケージ

21. Switchのタイプは何ですか?

(1)byte、short、int、問題なし、それは自動的にintに変換されます
(2)long、float、doubleはエラーを報告しますが、括弧でintに変換できます
問題はありません(3)char、JDK1。 7開始文字列も
(4)ブール値をintに変換できません。

22、

23. Integer型の2つのオブジェクトを==と比較するとどうなりますか?

(1)値が等しくない:false
(2)値が等しく、-128から127までの範囲:true
(3)値が等しく、-128から127までの範囲:false
(4)JVMが自動的に8つの基本を維持するためデータ型の定数プールは、int範囲での値の比較のために自動的にボックス化解除され、参照型は範囲
Integer.valueOf()およびxx.intValue()での比較には使用されません

24.&と&&の違いは何ですか?

(1)&と&&の両方を論理AND演算として使用でき、両側が真で、&&に短絡関数がある場合、演算結果全体が真
(2)&の両側が型である場合、それらはバイナリシステムに変換され、ビットごとのAND運営

25. short s1 = 1; s1 = s1 + 1;何が問題なのですか?

short型+ int型は自動的にint型に変換され、強制変換が必要なエラーが報告されます

26、

27、

28. staticとfinalの違いは何ですか?

1.静的変更は静的またはグローバルを意味します。変更されたプロパティとメソッドはクラスに属し、クラス名でアクセスできます。静的プロパティ/メソッド名
2.静的変更コードブロックは、Java仮想マシン(JVM)がクラスをロードするときの静的コードブロックを意味しますコードブロックは、実行時に実行されます。実行は1回だけです
。3.静的に変更された属性、つまりクラス変数は、クラスのロード時に作成および初期化されます。これは1回だけ作成されます
。4.このメソッドは、静的メソッドでは使用できません。そして、superキーワード、静的メソッドまたは変数のみを呼び出すことができます
5、静的メソッドは抽象抽象ではなく実装する必要があります
6、静的メソッドは静的メソッドによってのみオーバーライドできます

1.最終変更は定数を意味します。一度作成すると変更できません
。2 最終タグのメンバー変数は、宣言と同時に割り当てるか、クラスのコンストラクターで割り当てる必要があります。再割り当てすることはできません。3。
サブクラスで最終メソッドを書き換えることはできません
。4。最終クラスは継承できず、サブクラスもありません。最終クラスのメソッドは、デフォルトでfinalです
。5。finalは、コンストラクターの変更に使用できません。6。
プライベートタイプのメソッドは、デフォルトでfinalです。

staticはクラスのコードブロックを変更できますが、最終的なものではありません。
staticはメソッドのローカル変数を変更できません。

29.抽象メソッドはstaticでは使用できません、なぜですか?

静的変更は静的メソッドであり、変更された抽象は抽象メソッドです。メソッド本体のない
メソッドは呼び出すことができません。抽象メソッドはサブクラスの書き換えが必要であり、静的メソッドは書き換えられません。2つは互いに矛盾しています

30.コードブロックのタイプは何ですか。いつ実行されますか?役割は何ですか?(未定)

静的コードブロック>コードブロックの構築>メソッドの構築;

31.ディープクローニングとシャロークローニングの違いは何ですか?

クローンオブジェクトは、Cloneableインターフェースを実装する必要があります。浅いクローンは、オブジェクトの参照タイプと参照タイプの基本タイプのみをコピーし、ディープクローンはすべてコピーします。つまり、オブジェクトの参照タイプオブジェクトもコピーされます。

32.ディープクローンとシャロークローンの方法は?どんなシーンを使いますか?

33. instanceofの役割

Left instanceof right:左側が右側のインスタンスかどうかを判別します。
コンパイルステータス:右側は親クラス自体の左側のサブクラスにできます。
実行ステータス:右側は左側の親クラスまたは独自のクラスにしかできません。それ以外の場合はfalse

34. String、StringBuffer、StringBuilderの違いは何ですか?

文字列はオブジェクトを変更できません、変更はオブジェクトを再作成します、StringBuffer、StringBuilderは変更できます、StringBufferスレッドセーフティ、StringBuilder
スレッドは安全ではありませんが、シングルスレッドのStringBuilder効率は比較的高いです

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

Equalsは比較値です。Objectクラスを継承する場合、equalsメソッドは適切に書き直す必要があります。Stringクラスでは、equalsは==を使用して住所を比較します。住所の同じ値は同じである必要があります。文字が同じ長さで同じ長さかどうかを判別し、各文字が等しいかどうかを比較します。

==は比較アドレスです

36. StringオブジェクトのreplaceとreplaceAllの違いは何ですか?

Replaceメソッド:文字と文字列の置換をサポートします。
replaceAllメソッド:正規表現に基づく文字列置換。
replaceは最初に一致する文字または文字列の置き換えであり、replaceAllはターゲット文字列内のすべての一致する文字または文字列の置き換えであるとかつて信じられていました。

37.新しいString()仮想マシンは何をしましたか?

(1)現在のオブジェクトクラスを検索する
(2)現在のオブジェクトクラスが見つからない(初めてロードするため)、現在のオブジェクトクラスをロードする
(3)現在のオブジェクトのスペースを開く
(4)属性を初期化する(親クラスの属性)また、親クラスの前に初期化されます)
(5)コンストラクターを実行します

38. Stringの一般的に使用されるメソッドは何ですか?

split(String regex)は、この文字列
charAt()をcharに分割します。]配列
equals()は、指定された正規表現の一致に従って、2つの文字列が等しいかどうかを比較し
ますgetBytes()はバイトを
返します文字列の長さ
のindexOf(文字列i)は、インデックスを返し
(ハッシュコードを)のハッシュコードを返し
ストリング(beginIndexパラメータINT、INT endIndexの)
toLowerCaseメソッドを()小文字
は、toUpperCase()上部に変換される
(トリム)先頭と末尾の空白を無視

39.文字列s = "a" + "b" + "c" + "d"作成されたオブジェクトの数は?

オブジェクト
javacコンパイルは文字列定数を直接加算および減算できます

40. 3種類の文字列反転

(1)新しいStringBuffer(str).reverse()。toString()
(2)str.subString(1)+ str.chatAt(0)递归
(3)新しいString(char [])

41.配列にlength()メソッドはありますか?文字列にlength()メソッドはありますか?

配列にはlength()メソッドがなく、lengthプロパティがあります。文字列にはlength()メソッドがあります。

42.一時的の役割は何ですか?

属性がシリアル化されないようにする

43.列挙型とは何ですか?メリットは何ですか?

44.バイナリコンピューティングを使用する利点は何ですか?

45.イテレータとは何ですか?

あまり明確ではないが、トラバーサル方式であることを知っている

46. JDK8を使用しましたか?特徴は何ですか?

注釈付きのコードを簡略化するためのいくつかの単純なラムダ(式)があります。

47.ラムダ式の利点は何ですか?コードを単純化する以外に?

52件のオリジナル記事を公開しました Likes2 1857を訪問します

おすすめ

転載: blog.csdn.net/qq_42972645/article/details/105642987