Java の基本的な面接の質問 (1)

王林
リリース: 2020-08-24 16:08:32
オリジナル
2213 人が閲覧しました

Java の基本的な面接の質問 (1)

1.「.java」ソース ファイルには複数のクラス (内部クラスではない) を含めることはできますか?制限事項は何ですか?

クラスは複数存在できますが、パブリック クラスは 1 つだけ存在でき、パブリック クラス名はファイル名と一致している必要があります。

(その他のインタビュー質問の推奨事項:Java インタビューの質問と回答)

2. Java には goto がありますか?

Java の予約語は、現在 Java では使用されていません。

3. & と && の違いについて話します。

& と && は、論理 AND (and) を示す論理 AND 演算子として使用できます。演算子の両側の式の結果が true の場合、演算結果全体が true になります。それ以外の場合は、 as 当事者の 1 つが false の場合、結果は false になります。

&& には短絡機能もあります。つまり、最初の式が false の場合、2 番目の式は評価されなくなります。たとえば、if(str!= null&& !str.equals() s)) 式、str が null の場合、次の式は実行されないため、NullPointerException は発生しません。&& が & に変更されると、NullPointerException がスローされます。 If(x==33 & y>0) y は成長しますが、If(x==33 && y>0) は成長しません

& は、& 演算子がオンの場合、ビット演算子としても使用できます。両側 式がブール型ではない場合、& はビット単位の AND 演算を表します。通常、0x0f を使用して整数で & 演算を実行し、整数の下位 4 ビットを取得します。たとえば、0x31 & 0x0f の結果は次のようになります。 0x01。

4. JAVA の現在の複数のネストされたループから抜け出すにはどうすればよいでしょうか?

Java では、複数のループから抜け出す場合は、外側のループ ステートメントの前にラベルを定義し、内側のループ本体のコード内でそのラベルを含む Break ステートメントを使用して抜け出すことができます。外側のループの。

例:

for(int i=0;i<10;i++){ for(intj=0;j<10;j++){ System.out.println(“i=” + i + “,j=” + j); if(j == 5) break ok; } }
ログイン後にコピー

また、私は個人的にラベルを使用せず、代わりに、外側のループの条件式の結果を内側のループ本体のコードで制御できるようにしています。たとえば、2 次元配列内の数値を検索するとします。

int arr[][] ={{1,2,3},{4,5,6,7},{9}}; boolean found = false; for(int i=0;i
        
ログイン後にコピー

(推奨学習:java 入門チュートリアル)

5. switch ステートメントは byte で動作するか、long で動作するか、上の String で動作するか?

switch(e) では、 e は整数式または列挙定数 (大きいフォント) のみです。整数式は int 基本型または Integer ラッパー型です。byte、short、char のため、暗黙的に int に変換できるため、これらの型およびこれらの型のパッケージ化型も可能です。明らかに、long 型も String 型も switch の構文に準拠しておらず、暗黙的に int 型に変換できないため、switch ステートメントでは使用できません。

switch 文が String に使用できるかどうかを言うのは間違いです。この記述方法は Java 1.7 以降ですでにサポートされています。

6. short s1= 1; s1 = (s1 1 は int 型で等号の左側は short 型なので強制する必要があります) 1 1; どうしたのですか? short s1 = 1; s1 = 1;何が問題ですか? (何も間違っていません)

簡単に言うと、s1= 1; s1 = s1 1;s1 1 は演算中に式の型を自動的に昇格させるため、結果は int 型になり、型が s1 の場合、コンパイラは型キャストを必要とするエラーを報告します。

略して s1= 1; s1 = 1; = は Java 言語で指定される演算子であるため、Java コンパイラはこれに対して特別な処理を実行し、正しくコンパイルできます。

7. 中国語の文字は char 変数に格納できますか? なぜですか?

char 変数は、Unicode でエンコードされた文字を格納するために使用されます。Unicode でエンコードされた文字セットには中国語の文字が含まれているため、 , もちろん、char型変数には漢字も格納できます。ただし、特殊な中国語文字が Unicode エンコード文字セットに含まれていない場合、特殊な中国語文字をこの char 変数に格納することはできません。追加説明: Unicode エンコーディングは 2 バイトを占有するため、char 型の変数も 2 バイトを占有します。

8. 2 に 8 を掛けた値を計算するには、最も効率的な方法を使用してください?

2<< 3, (3 桁左シフト) 数値を n だけ左にシフトするため、これは、2 の n 乗に相当します。すると、数値を 8 倍するときは、3 ビットだけ左にシフトするだけで済みます。CPU が直接サポートするビット演算が最も効率的です。最も効率的な数は 2 に 8 を掛けたものですか? 方法は 2<<3 です。

9.final キーワードを使用して変数を変更する場合、参照は変更できませんか、または参照先のオブジェクトは変更できませんか?

final キーワードを使用して変数を変更する場合、参照変数は変更できませんが、参照変数が指すオブジェクトの内容は変更できることを意味します。たとえば、次のステートメントの場合:

finalStringBuffer a=new StringBuffer("immutable");
ログイン後にコピー

次のステートメントを実行するとコンパイル時エラーが報告されます:

a=new StringBuffer("");
ログイン後にコピー

ただし、次のステートメントを実行するとコンパイルされます:

a.append(" broken!");
ログイン後にコピー

誰かがメソッドのパラメータを定義するとき、メソッドが渡されたパラメータ オブジェクトを変更しないように次の形式を使用することがあります。

public void method(final StringBuffer param){ }
ログイン後にコピー

実際には、これは不可能です。メソッド内に追加することもできます。次のコードを使用してパラメータ オブジェクトを変更します:

param.append("a");
ログイン後にコピー

(学習ビデオの推奨事項:java course)

10.静的変数とインスタンス変数の違いは何ですか?

在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。

public class VariantTest{ publicstatic int staticVar = 0; publicint instanceVar = 0; publicVariantTest(){ staticVar++; instanceVar++; System.out.println(staticVar +instanceVar); } }
ログイン後にコピー

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!