現在のインターネット環境では、プログラマーやエンジニアの需要が高まっており、それに応じてエンジニアリング業界への投資を希望する人も増えています。そのため、多くの大企業がエンジニアのポジションの面接の要件を徐々に増やしています。面接では、インタビュアーは基本的な知識がしっかりしているかどうかに焦点を当てます。基本的なJavaプログラミングの面接の質問は、面接の前に行う必要のある宿題です。15の基本的なJavaプログラミングの面接の質問を以下にまとめます。Javaの面接に参加したい友人以下を学ぶことができます。
image.png
1. Java言語レベルのセキュリティはどこにありますか?
回答:Javaは、強力で危険なポインターを排除し、それらを参照に置き換えました。ポインタを動かすことができるので、メモリ領域が空いているかどうかに関係なく、ポインタがメモリ領域を指すことができます。メモリアドレスが重要なデータを格納したり、他のプログラムによって占有されたりする可能性があるため、これは危険です。配列が境界を越えるために。
ガベージコレクションメカニズム:プログラマーはメモリコレクションを直接制御する必要はなく、ガベージコレクターはバックグラウンドで使用されなくなったメモリを自動的に収集します。プログラムが時間内にリサイクルするのを忘れて、メモリリークを引き起こすのを避けてください。プログラムのコアクラスライブラリのメモリのプログラムエラー回復を回避し、システムクラッシュを引き起こします。
例外処理メカニズム:Java例外メカニズムは、主に5つのキーワード(try、catch、finally、throw、およびthrows)に依存しています。
強制型変換:強制変換ルールが満たされた場合にのみ、強制変換が成功します。
2. JDK、JRE、およびJVMの関係は何ですか?
回答:jdkはJAVAプログラムを開発するときに使用する開発キットであり、内部にはJREオペレーティング環境JREもあります。JREは、Javaプログラムの実行に必要なオペレーティング環境です。つまり、開発する代わりにJavaプログラムを実行するだけであれば、JREをインストールするだけで既存のJavaプログラムを実行できます。JDkとJREの両方にJava仮想マシンJVMが含まれており、Java仮想マシンには多くのアプリケーションプログラムなどのインタプリタとクラスローダーが含まれています。
3. if multi-branchステートメントとswitchマルチブランチステートメントの類似点と相違点は何ですか?
回答:同じ:これらはすべてブランチステートメントであり、複数のケースを判断して処理します。
違い:スイッチはマルチブランチの状況に適しています。つまり、判断して処理する必要のある状況が多くあります。判断条件タイプは単一で、エントリは1つだけです。ブランチの実行後(ある場合)ブレークアウトなし)、それは判断なしで実行されます;そして-elseif-elseマルチブランチが主にブランチの少ないブランチ構造に適している場合、判断タイプは単一ではなく、1つのブランチが実行される限り、次のブランチは実行されません実行されます。スイッチは等しい値の判断であり(> = <=は許可されていません)、が等しい値と間隔であれば、広い範囲で使用できます。
4.&と&&の違いとつながり
回答:&と&&の間の接続:&と&&の両方を論理AND演算子として使用できますが、使用する特定の条件によって異なります。オペランド1&オペランド2、オペランド1 &&オペランド2、式1&式2、式1 &&式2。
ケース1:上記のオペランドがブール変数の場合、&と&&の両方を論理AND演算子として使用できます。
ケース2:上記の式の結果がブール変数の場合、&と&&の両方を論理AND演算子として使用できます。
論理積と(and)を表します。演算子の両側の式またはオペランドの結果がtrueの場合、演算全体の結果はtrueです。それ以外の場合、いずれかがfalseである限り、結果はfalseになります。
&と&&の違い(異なる点):&論理演算子は論理AND演算子と呼ばれ、&&論理演算子は短絡AND演算子と呼ばれ、論理AND演算子と呼ばれることもあります。いずれの場合も、&の両側のオペランドまたは式が計算に参加します。&&の場合:&&の左側のオペランドがfalseの場合、または左側の式の結果がfalseの場合、&&の右側のオペランドまたは式は計算に参加せず、最終結果はfalseになります。
要約すると、論理AND演算の第1オペランドが偽であるか、最初の式の結果が偽である場合、第2オペランドまたは式が操作されるかどうかは、最終結果に影響を与えません。偽でなければなりません。
5.基本的なデータ型変換ルール?
回答:基本型変換は、自動変換と強制変換に分けられます。
自動変換ルール:容量の小さいデータ型を容量の大きいデータ型に自動的に変換できます。
その低レベルの自動変換を高レベルに言うために。ここでの容量とは、バイト数ではなく、型式の範囲を指します。
強制変換ルール:高レベルから低レベルへの強制変換が必要です。変換方法:(1)代入演算子「=」の右側の変換は、演算を実行する前に、式の最上位のデータ型に自動的に変換されます。(2)代入演算子 "="の両側での変換、左レベル>右レベルの場合は自動的に変換されます。左レベル==右レベルの場合は変換は不要です。左レベルの場合は変換は不要です。 <適切なレベルでは、強制変換が必要です。(3)整数定数は、式の範囲を超えない限り、強制的な型変換を必要とせずに、byte、short、charなどの型変数に直接割り当てることができます。それ以外の場合は強制変換を実行する必要があります。
6.ifマルチブランチステートメントとswitchマルチブランチステートメントの類似点と相違点は何ですか?
回答:同じ:これらはすべてブランチステートメントであり、複数のケースを判断して処理します。
違い:スイッチはマルチブランチの状況に適しています。つまり、判断して処理する必要のある状況が多くあります。判断条件タイプは単一で、エントリは1つだけです。ブランチの実行後(ある場合)ブレークアウトなし)、それは判断なしで実行されます;そして-elseif-elseマルチブランチが主にブランチの少ないブランチ構造に適している場合、判断タイプは単一ではなく、1つのブランチが実行される限り、次のブランチは実行されません実行されます。スイッチは等しい値の判断であり(> = <=は許可されていません)、が等しい値と間隔であれば、広い範囲で使用できます。
7. whileループとdo-whileループの違いは何ですか?
回答:whileが最初に判断されてから実行され、最初にfalseと判断された場合、ループ本体は一度に実行されません。dowhileが最初に実行されてから判断され、少なくとも1回は実行されます。whileループが初めてtrue、違いはありません。
image.png
8.休憩と継続の役割は?
回答:ブレーク:現在のループを終了し、現在のループ本体を終了します。Breakは、switchステートメントを終了することもできます。
続行:ループ本体の後続のステートメントは実行されませんが、ループは終了していません。ループの状態を判断し続けます(forループもi ++になります)。続行すると、ループが終了します。
9.アレイの特徴は何ですか?
回答:配列は(同じタイプのデータ)の(順序付けられた)(コレクション)です。
配列はメモリ内に連続したスペースを開きます。各スペースは、配列の要素と呼ばれる以前の変数と同等です。
各配列要素のデフォルト値はdouble0.0 boolean false int0です。
配列要素は、サイズ順ではなく、インデックス順で並べられています。
基本データ型と参照データ型は配列に格納できますが、配列の場合、配列の型は固定されており、1つしか使用できません。
length:配列の長さ。配列の長さは固定されています。一度定義すると、変更できません(配列の拡張)。
10.数がその因数の合計に正確に等しい場合、この数は「最終数」と呼ばれます。たとえば、6 = 1 + 2 +3です。0から1000までのすべての数字を見つけるプログラム
答:public class WanShu {
private static boolean isWanShu(int shu){
int sum = 0;
for (int i = 1; i < shu; i++) {
if(shu%i==0){
sum+= i;
}
}
if(sum==shu){
return true;
}else{
return false;
}
}
public static void main(String[] args) {
for (int i = 1; i < 1000; i++) {
if(isWanShu(i)){
System.out.println(i);
};
}
}
}
11.次のプログラムの出力は(A)です。
static boolean foo(char c){
System.out.print(c);
return true;
}
public static void main(String [] args){
int i = 0;
for (foo('A'); foo('B') && (i < 2); foo('C')) {
i++;
foo('D');
}
}
A. ABDCBDCB B. ABDCDBCB C. ABDBCDCB D. ABDBCDCB
分析:最初に、ABDCで開始し、CとDを除外してから、foo( 'B')&&(i <2)を実行する必要があります。結果はBで、結果はAです。実行順序--foo( 'A')-foo( 'B')&& true--foo( 'D')-foo( 'C')-foo( 'B')&& true--foo( 'D ')-foo(' C ')– foo(' B ')&& false–end
12. n = 5の場合、次の関数の戻り値は次のとおりです。(A)
int foo(int n)
{
if(n<2)return n;
return foo(n-1)+foo(n-2);
}
A.5 B.7 C.8 D.1
分析:結果= foo(4)+ foo(3)
foo(4)= foo(3)+ foo(2)
foo(3)= foo(2)+ foo(1)
foo(2)= foo(1)+ foo(0)
foo(1)= 1
foo(0)= 0
したがって、foo(2)= 1、foo(3)= 2、foo(4)= 3
13.挿入ソートのコードを書く
答:package com.bjsxt;
パブリッククラスTestInsertSort {
public static void sort(int arr []){
int i、j;
for(i = 1; i <arr.length; i ++){
int temp = arr [i];
for(j = i; j> 0 && temp <arr [j-1]; j –){
arr [j] = arr [j-1];
}
arr [j] = temp;
}
}
}
14.ファイナル、ファイナル、ファイナライズの違いは何ですか?
回答:Final修飾子(キーワード)クラスがfinalとして宣言されている場合、それは新しいサブクラスを派生できなくなり、親クラスとして継承できないことを意味します(例:文字列クラス、数学クラスなど)。変数またはメソッドをfinalとして宣言すると、使用中に変更されないことが保証されます。finalとして宣言された変数は、宣言時に初期値を指定する必要があり、将来の参照でのみ読み取ることができ、変更することはできません。finalとして宣言されたメソッドも使用のみ可能で、オーバーライドすることはできませんが、オーバーロードすることはできます。最終的に変更されたオブジェクトを使用すると、オブジェクトの参照アドレスは変更できませんが、オブジェクトの値は変更できます。
最後に、クリーンアップ操作を実行するために、例外処理中にfinallyブロックが提供されます。最終的に存在する場合、例外が発生したかどうかに関係なく、finallyステートメントが実行されます。通常の状況では、物理接続(IOストリーム、データベース接続、ソケット接続)を閉じるなど、関連するすべての操作がこのコードブロックに入れられます。
メソッド名を確定します。Javaテクノロジでは、finalize()メソッドを使用して、ガベージコレクタがオブジェクトをメモリからクリアする前に必要なクリーンアップ作業を実行できます。ガベージコレクターによってオブジェクトが削除される前に、finalize()メソッドが呼び出されます。Objectクラスで定義されているため、すべてのクラスが継承します。サブクラスはfinalize()メソッドをオーバーライドして、システムリソースを整理したり、その他のクリーンアップタスクを実行したりします。通常の状況では、このメソッドはJVMによって呼び出されるため、プログラマーは呼び出さないでください。
15.文字定数と文字列定数の違いは何ですか?
回答:正式には:文字定数は一重引用符で囲まれた文字です。文字列定数は二重引用符で囲まれた文字の数です。意味:文字定数は、式の操作に参加できる整数値(ASCII値)と同等です。文字列定数はアドレス値を表します(文字列はメモリ位置に格納されます)。占有メモリサイズ:文字定数は1バイトのみを使用し、文字列定数は数バイトを使用します(少なくとも1つの文字終了フラグ)。
上記は、今日の私の友人のためにまとめられた基本的なJavaプログラミングの面接の質問です。これらの15の質問は、Javaプログラミングの最も包括的な知識を持っているとは言えませんが、基本的な一般的な試験の内容であり、たくさんあります。したがって、Javaのインタビューで、皆さんが上記の内容を注意深く学び、Javaの基本的なチュートリアルを通じてJavaの知識を時間内に学ぶことができることを願っています。