これらの50の質問を確認して、Javaプログラミングのインタビューをクラックしてください

プログラミングの就職の面接からよく寄せられるJavaの質問のリスト。

みなさん、こんにちは!過去数年間、私は多くのJavaインタビューの質問とディスカッションを個別に共有してきました。私の読者の多くは、同じ場所にそれらを置くことができるように、私がそれらをまとめることを要求しました。この投稿はその結果です。

この記事には、コアJavaの基礎、Javaコレクションフレームワーク、Javaマルチスレッドと同時実行、Java IO、JDBC、JVM内部、コーディングの問題、オブジェクト指向プログラミングなど、すべての重要なトピックをカバーする50を超えるJavaインタビューの質問が含まれています。

質問はさまざまなインタビューからも取り上げられており、決して非常に難しいものではありません。あなたはすでにあなたの電話や面接のラウンドでそれらを見たことがあるかもしれません。

質問は、マルチスレッドやコレクションなどの重要なトピックを確認するのにも非常に役立ちます。また、Javaスキルのギャップを埋めるためのThe Complete Java MasterClassなど、さらなる学習と改善に役立つリソースをいくつか共有しました。

では、私たちは何を待っているのでしょうか?これは、初心者と経験豊富なJava開発者の両方へのインタビューで最もよく聞かれるJavaの質問のリストです。

2〜3年の経験豊富なプログラマーのための50以上のJavaインタビューの質問

ですから、これ以上時間を無駄にすることなく、初心者プログラマー向けによく寄せられるコアJavaインタビューの質問のリストを以下に示します。このリストは、Javaで2〜3年の経験を持つ人のように、初心者と経験の浅い開発者に焦点を当てています。

1)Javaはどのようにしてプラットフォームの独立性を実現しますか?(回答)

ヒント:バイトコードとJava仮想マシン

2)Javaには何がClassLoaderありますか?(回答)

ヒント:クラスのバイトコードをロードするJVMの一部。あなたはあなた自身を書くことができます。

3)Javaプログラムを作成して、数値が偶数か奇数かを確認しますか?(回答)

ヒント:ビット単位のANDのように、ビット単位の演算子を使用できます。バイナリ形式では、偶数の最後にゼロがあり、奇数の最後に1があることを覚えておいてください。

4)Javaの違いは?ArrayListHashSet(回答)

ヒント:との間のすべての違いはListSetここで適用できます。たとえば、順序付け、重複、ランダム検索などです。JavaのArrayList、HashSet、およびその他の重要なコレクションの詳細については、「Javaの基礎:RichardWarburtonによるコレクション」を参照してください。

5)シングルトンのダブルチェックロックとは何ですか?(回答)

ヒント:インスタンスが初期化されているかどうかを2回チェックします。最初はロックなし、2番目はロックありです。

6)Javaでスレッドセーフなシングルトンをどのように作成しますか?(回答)

ヒント:列挙型の使用、ダブルチェックのロックパターンの使用、ネストされた静的クラスの使用など、さまざまな方法があります。

7)Javaで揮発性変数を使用するのはいつですか?(回答)

ヒント:変数を複数のスレッドで変更できることをJVMに指示し、その値をキャッシュしないJVMにヒントを与える必要がある場合。

8)Javaで一時変数を使用するのはいつですか?(回答)

ヒント:Serializableインターフェースを実装するクラスで変数をシリアライズ不可能にしたい場合。つまり、値を保存したくない変数に使用できます。Javaの一時変数については、完全なJavaマスタークラスを参照してください。

9)Javaの一時変数と揮発性変数の違いは?(回答)

ヒント:まったく異なり、一方はシリアル化のコンテキストで使用され、もう一方は並行性で使用されます。

10)JavaのSerializableとExternalizableの違いは?(回答)

ヒント:Externalizableを使用すると、シリアル化プロセスをより細かく制御できます。

11)Javaのプライベートメソッドをオーバーライドできますか?(回答)

ヒント:いいえ、サブクラスには表示されないため、Javaでメソッドをオーバーライドするための主要な要件です。

12)HashtableHashMapJavaの違いは?(回答)

ヒント:いくつかですが、最も重要なのはHashtable、同期されているのに対し、同期されてHashMapいないことです。また、レガシーであり、と比較して低速HashMapです。

13)ListSet Javaの違いは?(回答)

ヒント:List順序付けられ、複製を許可します。Set順序付けされておらず、要素の重複は許可されていません。

14)JavaArrayListVectorJavaの違い(回答)

ヒント:多くの、しかし最も重要なのは、同期されて遅いのArrayListに対し、同期されていない高速であるということですVector。のようなレガシークラスでもありますHashtable

15)HashtableConcurrentHashMapJavaの違いは?(回答)

ヒント:よりスケーラブル。詳細については、Java Fundamentals:Collections by RichardWarburtonを参照してください。

16)ConcurrentHashMapスケーラビリティをどのように達成しますか?(回答)

ヒント:マップをセグメントに分割し、書き込み操作中にのみロックします。

以下のためにあなたが優先されます二つの方法17)Objectとして使用することKeyHashMap?(回答)

ヒント:等しいとハッシュコード

18)Javaでの待機とスリープの違いは?(回答)

ヒント:このwait()メソッドはロックまたはモニターを解放しますが、スリープは解放しません。

19)notifynotifyAllJavaの違いは?(回答)

ヒント:モニターを待機しているすべてのスレッドに通知しnotifyながら、1つのランダムスレッドがそのロックを待機していることをnotifyAll通知します。待機しているスレッドが1つだけであることが確実な場合は、を使用するnotifyか、そうnotifyAllでない方がよいでしょう。ThreadingEssentialsミニコースを参照してくださいJavaチャンピオンのHeinzKabutzが、スレッドの基本について詳しく学びます。

20)equals()Javaで、なぜハッシュコードをオーバーライドするのですか?(回答)

ヒント:オブジェクトをコレクションクラス(HashMapまたはなど)に格納することを計画している場合に必要な、equalsおよびハッシュコードコントラクトに準拠することArrayList

21)HashMap平均の負荷係数は何ですか?(回答)

ヒント:のサイズ変更をトリガーするしきい値HashMapは通常0.75です。これは、HashMap75%がいっぱいの場合にサイズを変更することを意味します。

22)ArrayListLinkedListJavaの違いは?(回答)

ヒント:配列やリンクリストと同じように、1つはランダム検索を許可し、もう1つは許可しません。リンクリストでは挿入と削除が簡単ですが、配列では検索が簡単です。Javaの重要なコレクションデータ構造の詳細については、Javaの基礎:コレクション Pluralsightに関するRichardWarburtonのコースを参照してください。

23)CountDownLatchCyclicBarrierJavaの違いは?(回答)

ヒント:CyclicBarrierバリアが解除されたCountDownLatch後は再利用できますが、カウントがゼロに達した後は再利用できません。

24)JavaでRunnablevsを使用するのはいつThreadですか?(回答)

ヒント:常に

25)Javaで列挙型がタイプセーフであることの意味は何ですか?(回答)

ヒント:これは、異なるEnumタイプのインスタンスをEnum変数に割り当てることができないことを意味します。たとえば、DayOfWeekdayのような変数がある場合、DayOfMonth列挙型から値を割り当てることはできません。

26)整数のオートボクシングはJavaでどのように機能しますか?(回答)

ヒント:valueOf()Javaのメソッドを使用する。

27)PATHClasspathJavaの違いは?(回答)

ヒント:PATHオペレーティングシステムClasspathで使用され、JVMでJARファイルやクラスファイルなどのJavaバイナリを検索するために使用されます。、、およびその他のJava環境変数の詳細についてPATHClasspath、「Javaの基礎:コアプラットフォーム」を参照してください。

28)Javaでのメソッドのオーバーロードとオーバーライドの違いは?(回答)

ヒント:オーバーライドはサブクラスで発生し、オーバーロードは同じクラスで発生します。また、オーバーライドは実行時のアクティビティであり、オーバーロードはコンパイル時に解決されます。

29)Javaでクラスがサブクラス化されないようにするにはどうすればよいですか?(回答)

ヒント:コンストラクターをプライベートにするだけです

30)クラスがクライアントによって使用されるのをどのように制限しますか?(回答)

ヒント:コンストラクターをプライベートにするか、コンストラクターから例外をスローします

31)StringBuilderStringBufferJavaの違いは?(回答)

ヒント:StringBuilder同期中StringBufferは同期されません。

32)Javaのポリモーフィズムと継承の違いは?(回答)

ヒント:継承により、コードの再利用が可能になり、動的な動作を提供するポリモーフィズムに必要なクラス間の関係が構築されます。Javaの基礎:オブジェクト指向設計を参照してください。OOP機能の詳細については。

33)Javaで静的メソッドをオーバーライドできますか?(回答)

ヒント:いいえ。オーバーライドは実行時に解決されますが、静的メソッド呼び出しはコンパイル時に解決されます。

34)Javaでプライベートメソッドにアクセスできますか?(回答)

ヒント:はい、同じクラス内ですが、クラス外ではありません

35)Javaのインターフェースと抽象クラスの違いは?(回答)

ヒント:Java 8からは、違いがあいまいになります。ただし、Javaクラスは引き続き複数のインターフェースを実装できますが、拡張できるのは1つのクラスのみです。

36)JavaのDOMパーサーとSAXパーサーの違いは?(回答)

ヒント:DOMはXMLファイル全体をメモリにロードしますが、SAXはロードしません。これはイベントベースのパーサーであり、大きなファイルの解析に使用できますが、DOMは高速であり、小さなファイルに適しています。

37)Javaのthrowキーワードとthrowsキーワードの違いは?(回答)

ヒント:throwsは、エラーが発生した場合にメソッドがスローできる例外を宣言しますが、throwキーワードは実際には例外をスローします。Javaでの例外処理の詳細については、「Javaの基礎:例外処理」を参照してください。

38)Javaのフェイルセーフイテレータとフェイルファストイテレータの違いは?(回答)

ヒント:フェイルセーフは、基になるコレクションを反復処理しているときに外部の変更を検出するたびにスローConcurrentModificationExceptionしませんfail-fast

39)Javaのイテレータと列挙型の違いは?(回答)

ヒント:イテレータを使用すると、反復中に要素を削除することもできますが、列挙では削除できません。

40)IdentityHashMapJavaには何がありますか?(回答)

ヒント:メソッドの代わりに等式演算子をMap使用して==等式をチェックするA。equals()

41)StringJavaのプールとは何ですか?(回答)

ヒント:Stringリテラルのプール。JDK7のpermgenスペースからヒープに移動されたことを忘れないでください。

42)SerializableクラスにJavaでシリアル化できないフィールドを含めることはできますか?(回答)

ヒント:はい。ただし、静的または一時的にする必要があります。

43)これとJavaのスーパーの違いは?(回答)

ヒント:これは現在のインスタンスを参照し、superはスーパークラスのインスタンスを参照します。

44)ComparatorComparableJavaの違いは?(回答)

ヒント:Comparatorカスタムの順序をComparable定義し、オブジェクトの自然な順序を定義します(例:のアルファベット順)StringJavaでのソートの詳細については、「完全なJavaマスタークラス」を参照してください。

45)java.util.Datejava.sql.DateJavaの違いは?(回答)

ヒント:前者には日付と時刻の両方が含まれ、後者には日付部分のみが含まれます。

46)ObjectJavaのクラスでwaitメソッドとnotifyメソッドが宣言されているのはなぜですか?(回答)

ヒント:オブジェクトのみが使用できるロックが必要なためです。

47)Javaが多重継承をサポートしないのはなぜですか?(回答)

ヒント:C ++のエクスペリエンスが悪いためサポートされていませんが、Java 8では、ある意味でTypeサポートされています。現在、Javaでは多重継承のみがサポートされていません。

48)Javaのチェックされた例外とチェックされていない例外の違いは?(回答)

ヒント:チェックされている場合は、catchブロックを使用して例外を処理する必要がありますが、チェックされていない場合は、ユーザー次第です。コンパイルは気になりません。

49)Javaのエラーと例外の違いは?(回答)

ヒント:入力するのにうんざりしています。答えを確認してください

50)Javaの競合状態とデッドロックの違いは?(回答)

ヒント:どちらも並行アプリケーションで発生するエラーです。1つはスレッドのスケジューリングが原因で発生し、もう1つはコーディングが不十分なために発生します。デッドロック、競合状態、およびその他のマルチスレッドの問題の詳細については、Javaでのマルチスレッドと並列コンピューティングを参照してください。

クロージングノート

おかげで、あなたは記事の終わりに到達しました…あなたのプログラミングインタビューで頑張ってください!確かに簡単なことではありませんが、このロードマップとガイドに従うことで、DevOpsエンジニアになることに一歩近づきます。

この記事が気に入ったら、友達や同僚と共有してください。Twitterでjavinpaulをフォローすることを忘れないでください。

追加リソース

  • Javaインタビューガイド:200以上のインタビューの質問と回答
  • Spring Frameworkインタビューガイド—200以上の質問と回答
  • ジョンソンメズによる就職の面接の準備
  • マーカムによって公開されたJavaプログラミングインタビュー
  • コーディングインタビューのクラッキング—189の質問と回答
  • 就職の面接のためのデータ構造とアルゴリズム分析
  • 過去5年間の130以上のJavaインタビューの質問
PS — Javaを学ぶために無料のリソースが必要な場合は、この無料のJavaコースのリストをチェックして準備を始めることができます。

PSS —「コードで作成されるStringオブジェクトの数」という画像で共有されているインタビューの質問に対する回答を提供していません。推測して説明できますか?