JavaRush /Java Blog /Random-JA /コーヒーブレイク #58。Java 開発者が知っておくべき 20 の重要な面接の質問。複数のプログラミング言語を知...

コーヒーブレイク #58。Java 開発者が知っておくべき 20 の重要な面接の質問。複数のプログラミング言語を知ることのメリット

Random-JA グループに公開済み

Java 開発者が知っておくべき面接での 20 の重要な質問

出典: Dev.toコーヒーブレイク #58。 Java 開発者が知っておくべき 20 の重要な面接の質問。 複数のプログラミング言語を知るメリット - 1

1. Java の 2 種類の例外とは何ですか? それらの違いは何ですか?

回答: Java には、チェック例外とチェックなし例外の 2 種類の例外があります。
  1. 非チェック例外は、メソッドまたはコンストラクターの実行時にスローされ、メソッドまたはコンストラクターの境界を越えて伝播できる場合、メソッドまたはコンストラクターのキーワード ステートメントで宣言する必要はありません。
  2. 一方、チェック例外はコンストラクターのメソッドまたはキーワード ステートメントで宣言する必要があります。

2. JVM とは何ですか? Java が「プラットフォームに依存しないプログラミング言語」と呼ばれるのはなぜですか?

回答: Java 仮想マシン (JVM) は、Java バイトコードを実行できるプロセス仮想マシンです。各 Java ソース ファイルはバイトコード ファイルにコンパイルされ、JVM によって実行されます。Java 言語は、個々のプラットフォームごとに書き直したり再コンパイルしたりすることなく、あらゆるプラットフォームで実行できるアプリケーション プログラムを作成できるように設計されています。Java 仮想マシンは、基礎となるハードウェア プラットフォームの特定の命令長やその他の機能を認識しているため、これが可能になります。

3. アプレットと Java アプリケーションの違いは何ですか?

答え:
  • アプレットは、Java 対応のブラウザ ウィンドウで実行されます。
  • Java アプリケーションは、ブラウザの外部で実行できるスタンドアロン Java プログラムです。
どちらも Java 仮想マシン (JVM) を必要とします。ただし、Java アプリケーションの実行を開始するには、特定のシグネチャを持つ main メソッドが必要です。Java アプレットでは、実行を開始するためにそのようなメソッドは必要ありません。また、Java アプレットは通常、制限的なセキュリティ ポリシーを使用しますが、Java アプリケーションは通常、より緩やかなセキュリティ ポリシーを使用します。

4. JDK と JRE の違いは何ですか?

答え:
  • Java ランタイム環境 (JRE) は基本的に、Java プログラムを実行する Java 仮想マシン (JVM) です。アプレットを実行するためのブラウザ プラグインも含まれています。
  • Java Development Kit (JDK) は、ユーザーが Java アプリケーションを開発、コンパイル、実行できるようにする JRE、コンパイラ、ツール (JavaDoc や Java デバッガなど) を含む Java 言語用のフル機能のソフトウェア開発キットです。

5. サーブレットとは何ですか?

回答: サーブレットは、クライアント要求を処理し、動的な Web コンテンツを作成するために使用される Java プログラミング言語のクラスです。サーブレットは主に、HTML フォームによって送信されたデータを処理または保存し、動的コンテンツを提供し、ステートレス HTTP には存在しない状態情報を管理するために使用されます。

6. JSP ページとは何ですか?

回答: Java Server Page (JSP) は、次の 2 種類のテキストを含むテキスト ドキュメントです。
  • 静的データ、
  • JSP要素。
静的データは、HTML や XML などの任意のテキスト形式で表現できます。JSP は、静的コンテンツと動的に生成されたコンテンツを混合するテクノロジーです。

7. ディレクティブとは何ですか? JSP ではどのような種類のディレクティブが使用できますか?

回答: ディレクティブは、ページがサーブレットにコンパイルされるときに JSP エンジンによって処理される命令です。ディレクティブは、ページレベルの命令の設定、外部ファイルからのデータの挿入、カスタム タグ ライブラリの指定に使用されます。ディレクティブは <%@ と %> の間で定義されます。さまざまな種類のディレクティブを以下に示します。
  • Include ディレクティブ: ファイルをインクルードし、ファイルの内容を現在のページと結合するために使用されます。
  • ページ ディレクティブ: エラー ページやバッファなど、JSP ページ上の特定の属性を定義するために使用されます。
  • Taglib: ページで使用されるカスタム taglib を宣言するために使用されます。

8. System.gc() メソッドと Runtime.gc() メソッドは何をしますか?

回答: これらのメソッドは、ガベージ コレクションをトリガーするための JVM へのヒントとして使用できます。通常、Java 仮想マシン (JVM) は、定期的に、または空きメモリが低レベルに達したときにガベージ コレクションを実行します。

9. HashMap と Hashtable にはどのような違いがありますか?

回答: Java の HashMap と Hashtable にはいくつかの違いがあります。
  1. Hashtable は同期されますが、HashMap は同期されません。これにより、非同期オブジェクトは一般に同期オブジェクトよりもパフォーマンスが向上するため、HashMap は非スレッド アプリケーションに適しています。
  2. Hashtable では、null キーまたは値は許可されません。HashMap では、1 つの null キーと任意の数の null 値を使用できます。
  3. HashMap のサブクラスの 1 つは LinkedHashMap なので、予測可能な反復順序 (デフォルトの挿入順序) が必要な場合は、HashMap を LinkedHashMap に簡単に交換できます。Hashtable を使用している場合、これはそれほど簡単ではありません。

10.JDBCとは何ですか?

回答: JDBC は、ユーザーがデータベースを選択できるようにする抽象化レイヤーです。JDBC を使用すると、開発者は特定のデータベースの背後にある詳細を気にすることなく、Java でデータベース アプリケーションを作成できます。

11.「静的」キーワードは何を意味しますか? Java でプライベート メソッドまたは静的メソッドをオーバーライドできますか?

回答: staticキーワードは、変数メンバーまたはメソッドが、それが属するクラスのインスタンスを必要とせずにアクセスできることを意味します。メソッドのオーバーライドは実行時の動的バインディングに基づいており、静的メソッドはコンパイル時に永続的にバインドされるため、ユーザーは Java の静的メソッドをオーバーライドできません。静的メソッドはクラスのインスタンスに関連付けられていないため、この概念は適用できません。

12. 例外を処理するときのfinallyブロックの重要性は何ですか?

回答:例外がスローされるかどうかに関係なく、finallyブロックは常に実行されます。catch文がなく例外が発生した場合でも。最後に言及しておきたいのは、finallyブロックはI/O バッファーやデータベース接続などのリソースを解放するために使用されるということです。

13. Java の例外とエラーの違いは何ですか?

回答: エラーは、プログラム コードでは処理できない重大な状態です。 例外は、プログラム コードによって処理できる例外的な状況です。

14. Java でオブジェクトがガベージ コレクションの対象となるのはいつですか?

回答: Java オブジェクトは、現在使用しているプログラムで使用できなくなると、ガベージ コレクションの対象になります。

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

回答: Iteratorインターフェイスには、任意のコレクションを反復処理できる多数のメソッドが用意されています。すべての Java コレクションには、Iteratorインスタンスを返すIteratorメソッドが含まれています。イテレーターは、反復中に基になるコレクションから要素を削除できます。

16. 参照渡しと値渡しとは何ですか?

答え:
  • オブジェクトがvalue によって渡される場合、それはオブジェクトのコピーが渡されることを意味します。こうすることで、このオブジェクトに変更が加えられたとしても、元の値には影響しません。
  • オブジェクトが参照によって渡される場合、オブジェクトが実際に渡されるのではなく、オブジェクトへの参照が渡されることを意味します。こうすることで、外部メソッドによる変更もすべての場所に反映されます。

17. Java アプレットとは何ですか?

回答: Java アプレットは、HTML ページに組み込んで Java 対応クライアント ブラウザで実行できるプログラムです。アプレットは、動的で対話型の Web アプリケーションを作成するために使用されます。

18. Java では HashMap はどのように機能しますか?

回答: Java の HashMap はキーと値のペアを保存します。HashMap にはハッシュ関数が必要で、hashCodeメソッドとqualsメソッドを使用して、コレクションに要素を設定したりコレクションから要素を取得したりします。putメソッドが呼び出されると、HashMap はキーのハッシュ値を計算し、そのペアをコレクション内の適切なインデックスに保存します。キーが存在する場合、その値は新しい値で更新されます。HashMap のいくつかの重要な特性は、その容量、負荷率、およびしきい値サイズの変動です。

19. Java Collections Framework の主なインターフェイスは何ですか?

回答: Java Collections Framework は、オブジェクトのコレクションに対する操作をサポートするように設計されたインターフェイスとクラスのセットです。Java Collections Framework にある主なインターフェイスは次のとおりです。
  • コレクションは、要素として知られるオブジェクトのグループを表します。
  • Set は、重複した要素を含めることができないコレクションです。
  • リストは、繰り返し要素を含めることができる順序付けされたコレクションです。
  • Map はキーを値にマップするオブジェクトであり、重複したキーを含めることはできません。

20. Java はどのようなデータ型をサポートしていますか? オートボクシングとアンボクシングとは何ですか?

回答: Java プログラミング言語は、次の 8 つのプリミティブ データ型をサポートします。
  • バイト
  • 短い
  • 整数
  • 長さ
  • 浮く
  • ダブル
  • ブール値
  • チャー
オートボックス化は、プリミティブ型とそれに対応するオブジェクト ラッパー クラスの間で Java コンパイラーによって実行される自動変換です。変換が逆方向に行われる場合、この操作はUnboxingと呼ばれます。読んでいただきありがとうございます。技術面接も頑張ってください!

複数のプログラミング言語を知ることのメリット

出典: Dev.to 個人的には、すべての開発者は複数のプログラミング言語を知っておくべきだと確信しています。言い換えれば、プログラミング言語について話している場合、開発者は多言語に対応している必要があります。コーヒーブレイク #58。 Java 開発者が知っておくべき 20 の重要な面接の質問。 複数のプログラミング言語を知るメリット - 2

第一言語と第二言語

話をわかりやすくするために、この記事で使用されている用語のいくつかを明確にしましょう。私は、すべての開発者が好みの言語を 1 つ持つべきだと考えています。私はこの言語をメイン言語と呼んでいます。メイン言語以外の言語を補助言語と呼びます。もちろん、開発者はキャリアを通じて主言語を (複数回) 変更する可能性があります。これで大丈夫です。これには多くの理由が説明されています。

専門家

多言語開発者に関する議論では、開発者の第 2 言語の知識は、第一言語の習熟度が低くなるという代償を払って得られるという議論がよく行われます。この考えの支持者は、新しい言語をそれぞれ学習するには時間がかかり、その時間を第一言語の知識の習得に費やすことはできなくなると想定しています。この考え方は私には間違っているように思えます。スポーツという別の例えもあります。あるスポーツをすると、別のスポーツのパフォーマンスが向上することが知られています。もちろん、どちらの種目でも金メダルを獲得することはできますが、ダーツのせいで水泳が上手くなるわけではありません。一方、ロッククライマーの場合、ヨガは柔軟性とバランスを養うのに役立ちます。したがって、ヨガを練習すると、ヨガをしない場合よりも優れたクライマーになれます。追加の言語をそれぞれ学習すると、知っている他の言語のスキルも向上することが多いと思います。

より幅広いツール

さらに、複数のプログラミング言語を知っていると、開発者としての武器が大幅に向上します。視野が広がり、物事をさまざまな視点から見ることができるようになります。日常生活から例を見てみましょう。ドライバーを使ったことがある人なら、プラスネジについてよく知っているでしょう。一見するとプラスネジはどれも同じで、ドライバー1本で締められるように見えます。はい、ネジを締めたり緩めたりするのが難しい場合がありますが、通常はドライバー 1 本で十分です。コーヒーブレイク #58。 Java 開発者が知っておくべき 20 の重要な面接の質問。 複数のプログラミング言語を知るメリット - 3しかし、ある日、工具店に入り、美しいドライバーを眺めていると、さまざまな種類のプラスドライバーがあることに気づきました。あなたは、すでに持っているドライバーがプラス (PH) であることに気づき、その双子の姉妹であるポジドライブ (PZ) を購入することにしました。そして、あるネジにはあるネジが適しており、他のネジには別のネジが適していることが突然判明しました。見た目は同じですが、交換可能ではありません。(ドライバーの PH と PZ の文字が何を意味するのか疑問に思っていた方は、もうおわかりでしょう)。より多くの知識と追加の工具があれば、次回プラスネジを締める必要があるときに、より適切な作業ができるようになります。プログラミング言語についても同様です。

追加の知識のためにお金を払う必要はありません

したがって、私は個人的には、追加のプログラミング言語を学ぶことに価値があるとは考えていません。どちらの言語も同等に優れた能力を発揮できるでしょうか? おそらくそうではありませんが、それがあなたの目標である可能性は低いです。母国語について何か新しいことを学びましたか? 私はこれを絶対に確信しています。新しい言語を知ると、それらの違いが明らかになります。そして、これがあなたの好奇心を呼び覚まします。新しい言語ではなぜ物事のやり方が違うのか、またその動作はどうなるのか不思議に思うでしょう。最後に、人生の例を挙げます。私は Python で書かれたコマンド ライン ツールを 1 つ使用しました。このツールを新しいマシンにインストールするたびに問題が発生し、更新するたびに問題の数が増加しました。Go がツールボックスに入っている場合は、このシナリオにおける Go の利点にすぐに気づくでしょう。Go では、そのアーティファクトを自己完結型のバイナリにコンパイルできます。コンパイルしたバイナリは、コンパイルしたすべてのマシンで確実に動作します。そこで、Python CLI を Go に移植しました。この新しいバージョンでは、ランタイムやサードパーティの依存関係の変更について心配する必要がなくなりました。これは、タスクに最適なツールを選択する好例です。そして、選択できるようにするには、多言語開発者になる必要があります。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION