Java 面接の質(zhì)問(wèn)と回答)
1. String s = new String("xyz"); 作成される StringObject の數(shù)は何ですか? String クラスを継承することは可能ですか?
両方または一方が可能です?!竫yz」はオブジェクトに対応します。このオブジェクトは文字列定數(shù)バッファーに配置されます。定數(shù)「xyz」は常に表示されます。何度出現(xiàn)しても、バッファ內(nèi)にあるものです。 NewString が書き込まれるたびに、新しいオブジェクトが作成されます。このオブジェクトは、定數(shù)「xyz」オブジェクトの內(nèi)容を使用して新しい String オブジェクトを作成します。 「xyz」が以前に使用されている場(chǎng)合、「xyz」はここでは作成されず、バッファから直接取得されます。このとき、StringObject が作成されますが、「xyz」の場(chǎng)合以前に使用されていない場(chǎng)合、この時(shí)點(diǎn)でオブジェクトが作成されてバッファに配置されます。この場(chǎng)合、2 つのオブジェクトが作成されます。 String クラスが継承されるかどうかについては、答えは「いいえ」です。String はデフォルトで最終変更され、継承できないからです。2. String と StringBuffer の違い
JAVA プラットフォームには、String と StringBuffer という 2 つのクラスがあり、文字列、つまり複數(shù)の文字を格納および操作できます。 . キャラクターデータ。 String クラスは、數(shù)値的に不変の文字列を提供します。この StringBuffer クラスによって提供される文字列は変更できます。文字データが変更されることがわかっている場(chǎng)合は、StringBuffer を使用できます。通常、文字データを動(dòng)的に構(gòu)築するには StringBuffers を使用します。3. 次のステートメントによって合計(jì)で作成されるオブジェクトの數(shù): String s="a" "b" "c" "d";
String s1 = "a"; String s2 = s1 + "b"; String s3 = "a" + "b"; System.out.println(s2 == "ab"); System.out.println(s3 == "ab");最初のステートメントは false の結(jié)果を出力し、2 番目のステートメントは true の結(jié)果を出力します。これは、javac コンパイルが文字列定數(shù)を直接追加する式を最適化できることを示しています。実行時(shí)まで加算操作を?qū)g行するのを待ち、代わりにコンパイル中にプラス記號(hào)を削除し、これらの定數(shù)を結(jié)合した結(jié)果に直接コンパイルします。 質(zhì)問(wèn)のコードの最初の行は、コンパイル時(shí)にコンパイラによって最適化されますが、これは "abcd" の文字列を直接定義するのと同等であるため、上記のコードは String オブジェクトのみを作成する必要があります。次の 2 行のコードを記述します。
String s ="a" + "b" +"c" + "d"; System.out.println(s== "abcd");最終的に出力される結(jié)果は true になるはずです。
4. try {} に return ステートメントがあるため、この try の直後にあるfinally{} のコードが実行されますか? いつ実行されますか? return の前または後ですか? ?
finally{} 內(nèi)のステートメントは確実に実行されることがわかっているため、これは通常、return 前に口頭で表示され、このメソッドは return 後に出てくる可能性があります。それがどこに行ったのかは誰(shuí)にも分かりません。次のプログラム コードの実行結(jié)果を參照してください:public classTest { public static void main(String[]args) { System.out.println(newTest().test());; } static int test() { intx = 1; try { returnx; } finally { ++x; } } } ---------執(zhí)行結(jié)果 --------- 1実行結(jié)果は 1 です。なぜでしょうか。メイン関數(shù)がサブ関數(shù)を呼び出して結(jié)果を取得するプロセスは、メイン関數(shù)が空のjarを用意するのと同じで、サブ関數(shù)が結(jié)果を返したい場(chǎng)合は、まず結(jié)果をjarに入れてからプログラムを返します。ロジックを main 関數(shù)に追加します。いわゆるリターンとは、サブ関數(shù)が「もう実行しません。メイン関數(shù)の実行を続けてください。結(jié)果はまったくありません。結(jié)果はこれを言う前に jar に入れられます?!工趣いΔ长趣蛞馕钉筏蓼?。 (ビデオ チュートリアルの推奨:
java コース )
5.final、finally、finalize の違い。
6. 実行時(shí)例外と一般例外の類似點(diǎn)と相違點(diǎn)は何ですか?
例外は、プログラムの実行中に発生する可能性のある異常な狀態(tài)を表します。ランタイム例外は、仮想マシンの通常の操作で発生する可能性のある例外を表し、一般的な操作エラーです。 Java コンパイラでは、発生する可能性のある非ランタイム例外をスローするメソッドを宣言する必要がありますが、キャッチされないランタイム例外をスローするメソッドを宣言する必要はありません。7. エラーと例外の違いは何ですか?
エラーは、回復(fù)が不可能ではないが困難な場(chǎng)合の深刻な問(wèn)題を示します。たとえば、メモリのオーバーフローです。プログラムがそのような狀況に対処することを期待することは不可能です。例外は設(shè)計(jì)または実裝の問(wèn)題を表します。つまり、プログラムが正常に実行されている場(chǎng)合には決して起こらない狀況を表します。8. Java の例外処理メカニズムの簡(jiǎn)単な原理と応用について簡(jiǎn)単に説明します。
例外とは、Java プログラムの実行中 (コンパイルされていない) に発生する異常な狀況またはエラーを指します。これは現(xiàn)実の出來(lái)事と非常によく似ています?,F(xiàn)実の出來(lái)事には、時(shí)間、場(chǎng)所、登場(chǎng)人物、プロットなどが含まれます。イベントの情報(bào)。情報(bào)はオブジェクトで表すことができます。Java はオブジェクト指向のアプローチを使用して例外を処理します。プログラム內(nèi)で発生する各例外をオブジェクトにカプセル化し、それを表します。オブジェクトには例外情報(bào)が含まれます。
Java は例外を分類します。さまざまなタイプの例外は、さまざまな Java クラスによって表されます。すべての例外のルート クラスは java.lang.Throwable であり、Throwable から 2 つのサブクラスが派生します:
Error および例外、エラーは、アプリケーション自體が克服および回復(fù)できない重大な問(wèn)題を表します。プログラムはクラッシュするだけです。たとえば、メモリ オーバーフローやスレッド デッドロックなどのシステムの問(wèn)題です。
例外は、プログラムがまだ克服および回復(fù)できる問(wèn)題を示します。これは、システム例外と通常の例外に分けられます。
システム例外は、ソフトウェア自體の欠陥によって引き起こされる問(wèn)題です。つまり、開(kāi)発者の配慮が不十分なために発生したソフトウェアの問(wèn)題は、ソフトウェア ユーザーが克服したり回復(fù)したりすることはできません。ただし、そのような問(wèn)題が発生しても、ソフトウェア システムは実行を継続できるか、ソフトウェアがハングします。たとえば、配列スクリプトの範(fàn)囲外 (ArrayIndexOutOfBoundsException) )、空のポインタ例外 (NullPointerException)、クラス変換例外 (ClassCastException);
一般的な例外は、動(dòng)作環(huán)境の変更や例外によって引き起こされる問(wèn)題であり、ネットワークの切斷、不十分な問(wèn)題など、ユーザーが克服できる問(wèn)題です。ハードディスクの空き容量。このような例外が発生した後、プログラムが停止することはありません。
Java は、システム例外と通常の例外に対して異なる解決策を提供します。コンパイラは、通常の例外を try..catch によって処理するか、throws ステートメントを使用して上位層の呼び出しメソッドにスローし続けるように強(qiáng)制します。チェック済み例外とも呼ばれます。例外、およびシステム例外は処理されるかどうかが異なるため、コンパイラは try..catch 処理を強(qiáng)制したり宣言をスローしたりしないため、システム例外は未チェック例外とも呼ばれます。
(推奨チュートリアル: java 入門チュートリアル )
9. Java のヒープとスタックの違いは何ですか?
JVM のヒープとスタックは異なるメモリ領(lǐng)域に屬し、異なる目的に使用されます。スタックはメソッド フレームやローカル変數(shù)を格納するためによく使用されますが、オブジェクトは常にヒープ上に割り當(dāng)てられます。スタックは通常、ヒープよりも小さく、複數(shù)のスレッド間で共有されませんが、ヒープは JVM 全體のすべてのスレッドによって共有されます。
スタック: 関數(shù)で定義されたいくつかの基本的なタイプの変數(shù)とオブジェクト參照変數(shù)は、関數(shù)のスタック メモリに割り當(dāng)てられます。変數(shù)がコード ブロックで定義されると、Java はその変數(shù)をスタックに割り當(dāng)てます。変數(shù)はメモリ空間を割り當(dāng)てます。変數(shù)のスコープを超えると、Java は変數(shù)に割り當(dāng)てられたメモリ空間を自動(dòng)的に解放し、そのメモリ空間はすぐに他の目的に使用できるようになります。
ヒープ: ヒープ メモリは、new によって作成されたオブジェクトと配列を格納するために使用され、ヒープに割り當(dāng)てられたメモリは、Java 仮想マシンの自動(dòng)ガベージ コレクタによって管理されます。配列またはオブジェクトがヒープ內(nèi)に生成された後、スタック內(nèi)の変數(shù)の値がヒープ メモリ內(nèi)の配列またはオブジェクトの最初のアドレスと等しくなるように、スタック內(nèi)に特殊な変數(shù)を定義することもできます。配列またはオブジェクトの參照変數(shù)を取得した後、スタック內(nèi)の參照変數(shù)を使用して、プログラム內(nèi)でヒープ內(nèi)の配列またはオブジェクトにアクセスできます。參照変數(shù)は、配列またはオブジェクトに名前を付けるのと同じです。物體。
10. int をバイト型変數(shù)に強(qiáng)制することはできますか?値がバイト型の範(fàn)囲より大きい場(chǎng)合はどうなりますか?
強(qiáng)制変換もできますが、Java の int は 32 ビット、byte は 8 ビットなので、強(qiáng)制変換すると int 型の上位 24 ビットが破棄されてしまいます。タイプの範(fàn)囲は -128 ~ 127 です。
以上がJava で頻繁に聞かれる基本的な面接の質(zhì)問(wèn)—(2)の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無(wú)料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版
中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

JDBCトランザクションを正しく処理するには、最初に自動(dòng)コミットモードをオフにし、次に複數(shù)の操作を?qū)g行し、結(jié)果に応じて最終的にコミットまたはロールバックする必要があります。 1。CONN.SETAUTOCOMMIT(FALSE)を呼び出して、トランザクションを開(kāi)始します。 2。挿入や更新など、複數(shù)のSQL操作を?qū)g行します。 3。すべての操作が成功した場(chǎng)合はconn.commit()を呼び出し、データの一貫性を確保するために例外が発生した場(chǎng)合はconn.rollback()を呼び出します。同時(shí)に、リソースを使用してリソースを管理し、例外を適切に処理し、接続を密接に接続するために、接続の漏れを避けるために使用する必要があります。さらに、接続プールを使用してセーブポイントを設(shè)定して部分的なロールバックを達(dá)成し、パフォーマンスを改善するためにトランザクションを可能な限り短く保つことをお?jiǎng)幛幛筏蓼埂?/p>

Java.Timeパッケージのクラスを使用して、古い日付とカレンダーのクラスを置き換えます。 2。LocalDate、LocalDateTime、LocalTimeを通じて現(xiàn)在の日付と時(shí)刻を取得します。 3。of()メソッドを使用して特定の日付と時(shí)刻を作成します。 4.プラス/マイナスメソッドを使用して、時(shí)間を不正に増加させて短縮します。 5. ZonedDateTimeとZoneIDを使用して、タイムゾーンを処理します。 6。DateTimeFormatterを介したフォーマットおよび解析の文字列。 7.インスタントを使用して、必要に応じて古い日付型と互換性があります?,F(xiàn)代のJavaでの日付処理は、java.timeapiを使用することを優(yōu)先する必要があります。

Pre-formanceTartuptimeMemoryusage、quarkusandmicronautleadduetocopile-timeprocessingingandgraalvsupport、withquarkusoftentylightbetterine serverlessシナリオ。

ネットワークポートアンドファイアワルクトグテルトエナブルコマニケーションwhiledensuringsecurity.1.networksarevirtualendpointsnumbered0–655 35、withwell-knownportslike80(http)、443(https)、22(ssh)、および25(smtp)識(shí)別pecificservices.2.portsoperateovertcp(信頼できる、c

JavaのGarbage Collection(GC)は、メモリを自動(dòng)的に管理するメカニズムであり、到達(dá)不可能なオブジェクトを取り戻すことでメモリ漏れのリスクを軽減します。 1.GCルートオブジェクトからのオブジェクトのアクセシビリティ(スタック変數(shù)、アクティブスレッド、靜的フィールドなど)、および到達(dá)不可能なオブジェクトはゴミとしてマークされています。 2。マーククリアリングアルゴリズムに基づいて、すべての到達(dá)可能なオブジェクトをマークし、マークのないオブジェクトをクリアします。 3.世代の収集戦略を採(cǎi)用する:新世代(Eden、S0、S1)は頻繁にMinorGCを?qū)g行します。高齢者のパフォーマンスは少なくなりますが、MajorGCを?qū)g行するのに時(shí)間がかかります。 Metaspaceはクラスメタデータを保存します。 4。JVMはさまざまなGCデバイスを提供します。SerialGCは小さなアプリケーションに適しています。 ParallelGCはスループットを改善します。 CMSが減少します

適切なHTMLinputタイプを選択すると、データの精度を向上させ、ユーザーエクスペリエンスを向上させ、使いやすさを向上させることができます。 1.テキスト、電子メール、電話、番號(hào)、日付など、データ型に従って対応する入力タイプを選択します。 2。HTML5を使用して、より直感的な相互作用方法を提供できるU(xiǎn)RL、色、範(fàn)囲、検索などの新しいタイプを追加します。 3.プレースホルダーと必要な屬性を使用して、フォームフィリングの効率と精度を改善しますが、プレースホルダーがラベルを置き換えることはできないことに注意してください。

gradleisthebetterchoiceformostnewprojectoitssuperorfficability、performance、andmoderntoolingsupport.1.gradle’sgroovy/kotlindslismoreconciseandexpressiveethanmaven’sverboseml.2.gradleorformsmavenbenbumebutedwitedwitedwitedspedexは

Deferは、クリーニングリソースなど、関數(shù)が戻る前に指定された操作を?qū)g行するために使用されます。パラメーターは、延期時(shí)にすぐに評(píng)価され、関數(shù)は最後のファーストアウト(LIFO)の順に実行されます。 1.複數(shù)の債務(wù)は、宣言の逆の順序で実行されます。 2.ファイルの閉鎖などの安全なクリーニングに一般的に使用されます。 3。指定された返品値を変更できます。 4.回復(fù)に適したパニックが発生した場(chǎng)合でも実行されます。 5。リソースの漏れを防ぐために、ループで延期の亂用を避けます。正しい使用により、コードのセキュリティと読みやすさが向上します。
