1.次のうち、Threadクラスのメソッドはどれですか()
A start()B run()C exit()D getPriority()
回答:ABD
分析:Java APIドキュメントを見てください:http://docs.oracle.com/javase/7/docs/api/、exit()はSystem.exit(0)などのSystemクラスのメソッドです。
2. java.lang.Exceptionクラスに関する次のステートメントは正しいです()
Throwable B Serialable CDから継承したもの覚えていませんが、とにかく正しくありません
回答:A
分析:Java例外の基本クラスは、java.lang.Throwable、java.lang.Error、およびjava.lang.ExceptionがThrowableを継承し、RuntimeExceptionおよびその他のExceptionがExceptionを継承し、特定のRuntimeExceptionがRuntimeExceptionを継承します。
拡張機能:エラーと例外の違い(エラーと例外)
-
java.lang.Error:重大なエラーをマークするために使用されるThrowableのサブクラス。合理的なアプリケーションは、そのようなエラーを試行/キャッチするべきではありません。エラーの大部分は異常であり、まったく発生してはならないはずです。
java.lang.Exception:Throwableのサブクラスで、条件をキャッチするための適切なプログラムを示すために使用されます。つまり、これはプログラムの動作状態にすぎず、重大なエラーではなく、ユーザープログラムがそれをキャッチすることをお勧めします。 -
ErrorとRuntimeExceptionおよびそれらのサブクラスはチェックされていない例外ですが、他のすべてのExceptionクラスはチェックされた例外です。
チェックされた例外:通常、復元可能なプログラムからスローされます。、そして、そのような異常から回復するためにプログラムを使用できることが最善です。FileNotFoundException、ParseExceptionなど。チェックされた例外はコンパイル段階で発生します。try... catch(またはthrows)を使用する必要があります。そうしないと、コンパイルが失敗します。
未チェックの例外:通常、すべてが正常である場合に発生するはずのない例外ですが、発生します。主にプログラムの論理的な問題が原因で、不確実性を伴って実行時に発生します。ArrayIndexOutOfBoundException、ClassCastExceptionなど。言語自体の観点から、プログラムはそのような例外をキャッチするべきではありません。RuntimeExceptionなどの例外をキャッチして回復することはできますが、端末プログラマーは完全に不要であるため、そうすることをお勧めしません。このタイプのエラーはそれ自体がバグであり、修正する必要があるため、このようなエラーが発生すると、プログラムはすぐに実行を停止する必要があります。したがって、エラーや未チェックの例外が発生した場合、プログラムは自動的に終了する必要があります。プログラマーは、try / catchなどを実行するのではなく、理由を見つけてコードロジックを変更する必要があります。
RuntimeException:RuntimeExceptionシステムには、不正な型変換、配列の範囲外アクセス、nullポインターへのアクセスの試行などが含まれます。
RuntimeExceptionの処理の原則は、RuntimeExceptionが発生した場合、それはプログラマーのエラーである必要があります。たとえば、配列の添え字と配列の境界をチェックすることで、配列の範囲外のアクセス例外を回避できます。その他の(IOExceptionなど)チェックされた例外は、通常、ファイルの終わりからデータを読み取ろうとするなどの外部エラーです。これは、プログラム自体のエラーではなく、アプリケーション環境の外部エラーです。
3.次のプログラムの実行結果は()です。
文字列str1 =“ hello”;
String str2 =“ he” + new String(“ llo”);
System.err.println(str1 == str2);
回答案:false
分析:str2のlloは新しく適用されたメモリブロックであり、==は値ではなくオブジェクトのアドレスを判断するため、異なります。String str2 = str1の場合、それは真です。
4.次の説明のうち正しいものはどれですか()
A。クラスのコンストラクターは省略できません
B。コンストラクターはクラスと同じ名前にする必要がありますが、メソッドはクラスと同じ名前にすることはできません
C。コンストラクタは、オブジェクトが新しいときに実行されます
D。クラスは1つのコンストラクターのみを定義できます
回答:C
分析:ここで誤解があるかもしれません。実際、通常のクラスメソッドはクラス名と同じ名前を持つことができます。構築メソッドとの唯一の違いは、構築メソッドが値を返さないことです。
5.特定のオプションを覚えていませんが、使用される知識は次のとおりです。
文字列[] a =新しい文字列[10];
次に:a [0] 〜a [9] = null
a.length = 10
int [] a = new int [10]の場合;
则:a[0]~a[9] = 0
a.length = 10
6.次のプログラムの実行結果:()
public static void main(String args[]) {
Thread t = new Thread() {
public void run() {
pong();
}
};
t.run();
System.out.print("ping");
}
static void pong() {
System.out.print("pong");
}
A pingpong B pongping Cpingpongとpongpingの両方がDを出力しない場合があります
回答:B
分析:ここで考慮されるのは、Threadクラスのstart()メソッドとrun()メソッドの違いです。start()はスレッドを開始するために使用されます。startメソッドが呼び出されると、システムは新しいスレッドを開始し、次にrun()メソッドを呼び出してタスクを実行します。run()を単独で呼び出すことは、通常のメソッドを呼び出すことと同じです。スレッドの特性が失われました。したがって、スレッドを開始するときは、run()ではなくstart()を使用する必要があります。
7.以下はリレーショナルデータベースです()
A. Oracle B MySql C IMS D MongoDB
回答:AB
回答:IMS(情報管理システム)データベースは、IBMによって開発された2つのデータベースタイプの1つです。
1つは、代表的な製品であるリレーショナルデータベースです。DB2。
もう1つは、製品を表す階層データベースです。IMS階層データベースです。
非リレーショナルデータベースには、MongoDB、memcachedb、Redisなどが含まれます。
8. GCスレッドはデーモンスレッドですか?()
答えは
分析:スレッドは、デーモンスレッドと非デーモンスレッド(つまり、ユーザースレッド)に分けられます。
現在のJVMインスタンス内の非デーモンスレッドが終了しない限り、デーモンスレッドはすべて機能します。最後の非デーモンスレッドが終了した場合にのみ、デーモンスレッドはJVMで終了します。
デーモンスレッドの最も一般的なアプリケーションはGC(ガベージコレクター)です
9. volatileキーワードはスレッドの安全性を保証しますか?()
回答:いいえ
分析:volatileキーワードは、読み取りの可視性を確保するためにマルチスレッド同期で使用されます。JVMは、メインメモリからスレッド作業メモリにロードされた値がキャッシュではなく最新の読み取り値であることのみを保証します。しかし、複数のスレッド
揮発性の書き込み操作は、スレッドの安全性を保証できません。たとえば、スレッド1とスレッド2が読み取りおよびロード操作を実行していて、メインメモリのcountの値が5であることがわかった場合、この最新の値がロードされます。スレッド1のヒープカウントが変更された後、メインメモリに書き込まれます。メインメモリのカウント変数は6になります。スレッド2はすでに読み取りおよびロード操作を実行しており、計算後、メインメモリのカウントの変数値も6に更新されます。その結果、2つのスレッドがvolatileキーワードで変更されます。 、並行性は引き続き存在します。
10.次の説明のうち正しいものはどれですか()
LinkedListはListから継承します
BAbstractSetはSetから継承します
CHashSetはAbstractSetから継承します
DWeakMapはHashMapから継承します
回答:AC
分析:以下は、ダウンロードされたJavaコレクションタイプの継承図です。
11. i + 1 <i()のような数はありますか
回答:存在する
分析:iがintタイプの場合、iがintが表すことができる最大の整数であると、i + 1はオーバーフローして負の数になります。現時点では、<iではありませんか?
拡張:i> j || i <= jを真にしない数はありますか()
回答:存在する
分析:たとえば、Double.NaNまたはFloat.NaNは、@ BuilderQiuネチズンが指摘してくれたことに感謝します。
12. 0.6332のデータタイプは()です。
フロートBダブルCフロートDダブル
回答:B
分析:デフォルトはダブルタイプです。フロートタイプの場合は、fディスプレイの説明、つまり0.6332fを追加する必要があります。
13.次のストリームクラスのうち、文字指向の入力ストリームに属するものはどれですか()
A BufferedWriter B FileInputStream C ObjectInputStream D InputStreamReader
回答:D
分析:JavaのIO操作には、バイト指向(バイト)と文字指向(文字)の2つの方法があります。
バイト指向の操作は、8ビット単位のバイナリデータに対する操作であり、データ変換はありません。これらのクラスはすべて、InputStreamおよびOutputStreamのサブクラスです。
文字指向の操作とは、文字単位のデータを操作し、読み取り時にバイナリデータを文字に変換し、書き込み時に文字をバイナリデータに変換する操作です。これらのクラスはすべてReaderとWriterのサブクラスです。
概要:InputStream(入力)/ OutputStream(出力)のサフィックスはバイトストリームです。
以Reader(输入)/Writer(输出)为后缀的是字符流。
拡張機能:Javaフロークラス図の構造。一目でわかり、ほとんどの複数選択の質問を解決
できます。14。Javaインターフェイス修飾子は()
プライベートB保護CファイナルDアブストラクト
回答:CD
分析:インターフェースは非常に重要です。状況を説明するために、ここに少し風が強いです:
(1)インターフェイスは、システムによって提供されるすべてのサービスを記述するために使用されるため、外部ユーザーがアクセスできるように、インターフェイスのメンバー定数とメソッドはパブリック(パブリック)である必要があります。
(2)インターフェースは、システムが実行できることのみを記述し、その実行方法を指定しないため、インターフェースのメソッドは抽象(抽象)メソッドです。
(3)インターフェースには特定のインスタンスに関連する詳細が含まれていないため、インターフェースには構築方法がなく、インスタンス化できず、インスタンス変数も静的変数のみが含まれます。
(4)インターフェースの変数は、すべての実装クラスで共有されます。共有されているため、変更されたものは共有されているとは見なされないため、変更しないでください。したがって、変数は不変(最終)タイプ、つまり定数です。
(5)インターフェースで変数を定義できませんか?インターフェイスが変数を定義できるが、インターフェイスのメソッドが抽象的である場合、インターフェイスの動作によってプロパティを変更することはできません。一部の人々はそれは問題ではないと言うでしょう、あなたはインターフェースを実装するオブジェクトの振る舞いを通してインターフェースのプロパティを変更することができます。もちろんこれは問題ありませんが、そのような状況を考慮してください。インターフェイスAにパブリックアクセス許可を持つ静的変数aがある場合。Javaのセマンティクスによれば、インターフェイスを実装するオブジェクトなしで変数aにアクセスできます。Aa= xxxを使用すると、インターフェイスで変数aの値を変更できます。これが抽象クラスで実行できるのと同じように、インターフェイスAを実装するすべてのオブジェクトは、変更後に自動的にaの値を持ちます。つまり、aが1つの場所で変更されると、これらすべてのオブジェクトのaの値が続きます。かわった。このクラスと抽象クラスの違いは何ですか?インターフェイスのより高い抽象化レベルを反映する方法、インターフェイスによって提供される統合プロトコルを反映する方法、およびインターフェイスの抽象化とは何ですか?したがって、変数はインターフェイスに表示できません。変数がある場合、インターフェイスによって提供される統合された抽象化と競合します。したがって、インターフェイスを実装するオブジェクトに統一された属性を提供するために、インターフェイスの属性は定数である必要があります。定数は読み取りのみが可能で、変更はできません。
素人の言葉で言えば、変更されると思うものは、インターフェイスではなく、独自の実装に配置する必要があります。インターフェイスは、あるクラスのプロパティと動作の高レベルの抽象化にすぎません。変更のために閉じられ、拡張のために開かれます(さまざまな実装)。インターフェイスは、開閉の原則の現れです。
など:
インターフェイスのメソッドは、デフォルトではパブリックアブストラクトです。
インターフェイスで変数を定義することはできません。つまり、定数のみを定義できます(さらに、最終的な変更は定数になります)。したがって、インターフェイスのプロパティはデフォルトでパブリック静的最終定数であり、初期値を割り当てる必要があります。
注:Finalとabstractを同時に表示することはできません。
15.コンストラクタなしでオブジェクトを作成できますか()
AはいBいいえ
回答:A
分析:Javaでオブジェクトを作成するいくつかの方法(重要):
(1)newステートメントを使用してオブジェクトを作成します。これは、オブジェクトを作成するための最も一般的な方法です。
(2)リフレクション手段を使用して、java.lang.Classまたはjava.lang.reflect.ConstructorのnewInstance()インスタンスメソッドを呼び出します。
(3)オブジェクトのclone()メソッドを呼び出します。
(4)逆シリアル化手段を使用して、java.io.ObjectInputStreamオブジェクトのreadObject()メソッドを呼び出します。
(1)および(2)は明示的にコンストラクターを呼び出します。(3)はメモリ内の既存のオブジェクトのコピーであるため、コンストラクターは呼び出されません。(4)ファイルからクラスのオブジェクトを復元します。また、コンストラクターは呼び出されません。
16. ArrayList list = new ArrayList(20);リストを数回展開します()
A 0 B 1 C 2 D 3
回答:A
分析:これは少し紛らわしいです。デフォルトのArrayListの長さが10であることは誰もが知っているので、リストに20個の要素を追加する場合は、一度拡張する必要があります(元の1.5倍に拡張)が、ここに表示されるのは必要なスペースの量です。 、だから私はあなたのために一度にたくさんのスペースを割り当てます、つまり、拡張する必要はありません。
17.次のうち、対称暗号化アルゴリズムはどれですか()
A DES B AES C DSA D RSA
回答:AB
分析:一般的に使用される対称暗号化アルゴリズムは、DES、3DES、RC2、RC4、AESです。
一般的に使用される非対称暗号化アルゴリズムは、RSA、DSA、ECCです。
一方向ハッシュ関数を使用した暗号化アルゴリズム:MD5、SHA
18.新しいストリームオブジェクトを作成するには、次のオプションのどれが間違っていますか?()
A)新しいBufferedWriter(新しいFileWriter( "a.txt"));
B)new BufferedReader(new FileInputStream( "a.dat"));
C)新しいGZIPOutputStream(new FileOutputStream( "a.zip"));
D)new ObjectInputStream(new FileInputStream( "a.dat"));
回答:B
分析:質問13の写真を覚えていますか?Readerは、FileReaderでのみインスタンス化できます。
19.次のプログラムは正常に実行できますか()
パブリッククラスNULL {
public static void haha(){
System.out.println("haha");
}
public static void main(String[] args) {
((NULL)null).haha();
}
}
回答:正常に実行できます
分析:null値は任意のjavaクラスタイプに強制でき、(String)nullも有効であるため、出力はhahaです。ただし、null強制が無効なオブジェクトになった後も、その戻り値はnullのままであり、静的メソッドの呼び出しはクラス名にバインドされるため、オブジェクトにアクセスしなくても正しく出力できます。逆に、静的な変更がない場合は、オブジェクトを使用してアクセスすることしかできません。nullを指定してオブジェクトを呼び出すと、間違いなくnullポインタエラーが報告されます。これはC ++と非常によく似ています。答えてくれた@Floriannetizensに感謝します。
class HelloA {
public HelloA() {
System.out.println("HelloA");
}
{
System.out.println("I'm A class"); }
static {
System.out.println("static A"); }
}
public class HelloB extends HelloA {
public HelloB() {
System.out.println("HelloB");
}
{
System.out.println("I'm B class"); }
static {
System.out.println("static B"); }
public static void main(String[] args) {
new HelloB();
}
}
回答:
static A
static B
I'm A class
HelloA
I'm B class
HelloB
分析:正直なところ、この質問は非常に良いと思います。静的ステートメントブロック、構築ステートメントブロック(つまり、中括弧のみのブロック)、およびコンストラクターの実行順序を調べてください。
オブジェクト初期化シーケンス:(1)クラスがロードされた後、staticによって変更されたステートメントを上から下に(親クラスからサブクラスに)実行します。(2)staticステートメントが実行された後、mainメソッドを実行します。(3)ステートメントが独自のオブジェクトを新規作成する場合、構築コードブロックとコンストラクター(2つは一緒にバインドされていると言えます)が上から下に実行されます。
次に、上記のコードを少し変更して、状況をより明確に説明します。
class HelloA {
public HelloA() {
System.out.println("HelloA");
}
{
System.out.println("I'm A class"); }
static {
System.out.println("static A"); }
}
public class HelloB extends HelloA {
public HelloB() {
System.out.println("HelloB");
}
{
System.out.println("I'm B class"); }
static {
System.out.println("static B"); }
public static void main(String[] args) {
System.out.println("-------main start-------");
new HelloB();
new HelloB();
System.out.println("-------main end-------");
}
}
このときの出力は次のとおりです。
static A
static B
------- main start -------
I'm A class
HelloA
I'm B class
HelloB
I'm A class
HelloA
I'm B class
HelloB
------ -メインエンド-------
20. getCustomerInfo()メソッドは次のとおりです。3種類の例外を試行でキャッチできます。メソッドの操作中にIOExceptionが発生した場合、どのような結果が出力されますか()
public void getCustomerInfo() {
try {
// do something that may cause an Exception
} catch (java.io.FileNotFoundException ex) {
System.out.print("FileNotFoundException!");
} catch (java.io.IOException ex) {
System.out.print("IOException!");
} catch (java.lang.Exception ex) {
System.out.print("Exception!");
}
}
IOException!
BIOException!Exception!
CFileNotFoundException!IOException!
DFileNotFoundException!IOException!Exception!
回答:A
分析:複数のcatchステートメントブロックの実行順序を調べます。複数のcatchステートメントが使用されている場合、catchステートメントブロックは順番に並んでいます。例外タイプは、front catchステートメントブロックから順番に照合されるため、親例外が子例外タイプの前にある場合、親例外タイプが最初に照合され、子例外タイプが一致する機会、つまり子例外タイプは取得されません。それが配置されているcatchステートメントブロックは、到達不能ステートメントになります。したがって、親例外クラスであるException bossは、通常、catchステートメントブロックの最後に配置されます。
21.次のコードの実行結果は次のとおりです。()
import java.io.*;
import java.util.*;
public class foo{
public static void main (String[] args){
String s;
System.out.println("s=" + s);
}
}
Aコードがコンパイルされ、「s = "」が出力されます。
Bコードがコンパイルされ、「s = null」が出力されます。
C String sが初期化されていないため、コードをコンパイルできません
Dコードはコンパイルされますが、NullPointExceptionがキャッチされます。
回答:C
分析:最初はnullか何かを出力すると思っていましたが、実行した後、Javaで定義されたすべての基本的な型またはオブジェクトを初期化して値を出力する必要があることがわかりました。
- System.out.println( "5" + 2);の出力は()である必要があります。
A 52 B7 C2 D5
回答:A
分析:言うことは何もありません、Javaは自動的に2を文字列に変換します。
22.次のプログラム操作の結果を指摘します()
public class Example {
String str = new String("good");
char[] ch = {
'a', 'b', 'c' };
public static void main(String args[]) {
Example ex = new Example();
ex.change(ex.str, ex.ch);
System.out.print(ex.str + " and ");
System.out.print(ex.ch);
}
public void change(String str, char ch[]) {
str = "test ok";
ch[0] = 'g';
}
}
A、good and abc
B、良いとgbc
C、テストokおよびabc
D、テストOKとGBC
回答:B
文末
これらは、最近主要なIT企業の筆記試験に参加した後に記憶から書き留めた非常に基本的な質問です。整理した後、私のような主要なITキャンパスの募集に参加した学生に捧げられます。これらは純粋なJavaの基本スキルであり、ベテランです。学校を卒業していない子供たちを笑わないために、入る必要はありませんが、IT企業はこれらの基本的なことをテストするのが好きです。整理に多くの時間を費やし、整理の過程で多くのことを学びました。すべての質問を真剣に受け止めてください~~~
これでJAVAの質問についての共有は終わりです。それを読んで満足できない場合は、コレクションも整理します。企業が主催する20年以上のインタビュー知識ポイントと、さまざまなJavaコア知識ポイントが無料で共有されます。情報が必要な場合は、ここをクリックしてqfに署名してください。