Java プログラマーのポジションの面接の準備をしたことがある場合、または認定試験 (必ずしもプログラミングに関するものではない) に合格したことがある場合は、おそらくそこで尋ねられる質問が非常に具体的であることにすでに気づいているでしょう。それらの多くは、言語の設計について考えることを強いられます。知識の深さを調査するように設計されたものもあります。何よりもパズルのように見える質問もあれば、練習しないと認識するのが非常に難しい言語のニュアンスに関する質問もあります。この記事では、開発者のSarans Sing がJava に関するそのような質問をいくつか紹介します。もちろん答え付きで。 1. return ステートメントまたは System.exit() を try/catch ブロックに配置するとどうなりますか? これは非常に人気のある、微妙な Java の質問です。重要なのは、多くのプログラマが
finally
ブロックが常に実行されると信じていることです。return
ステートメントをブロック内に配置するか、ブロック内からtry/catch
呼び出すことにより、この質問はこの信念に疑問を投げかけます。 この難しい質問に対する答えは、ステートメントがブロック内に配置されるとブロックは実行されますが、ブロック内から が呼び出された場合は実行されません。 2. Java は多重継承をサポートしていますか? これは非常に難しい質問です。インタビュアーはよく「C++ が直接多重継承をサポートしているのなら、なぜ Java はサポートできないのですか?」と質問します。答えはSystem.exit()
try/catch
finally
return
try/catch
System.exit()
try/catch
Java は複数の型の継承をサポートしているため、見た目よりも少し複雑です。結局のところ、Java インターフェイスは他のインターフェイスを拡張できます。ただし、Java は実装の多重継承をサポートしていません。 3. 親クラスのメソッドがNullPointerException
s をスローする場合、そのメソッドは s をスローするメソッドによってオーバーライドできますかRuntimeException
? これも、オーバーロードとオーバーライドに関連する難しい質問です。 回答:オーバーライドされたメソッドはNullPointerException
の親クラスである RuntimeException を安全にスローできますが、 のようなチェック例外タイプでは同じことを行うことはできませんException
。 4. スレッドがデッドロックなしでリソースにアクセスできることをどのように保証しますか?N
N
マルチスレッド コードを書くのが得意でない場合は、この質問に実際につまずく可能性があります。これは、デッドロックや競合状態に遭遇したことがない経験豊富なプログラマーにとっても難しい場合があります。 ここでの重要なポイントは順序にあります。リソースを取得したときと逆の順序でリソースを解放することで、デッドロックを防ぐことができます。 5. Java のとクラスの違いは何ですか? StringBuffer
StringBuilder
これは Java 言語の古典的な質問であり、一部の開発者にとっては難しいと思われることもあれば、非常に単純な開発者もいます。このStringBuilder
クラスは JDK 1.5 で登場しました。これらのクラスの唯一の違いは、 、、 などStringBuffer
の のメソッドは同期されるのに対し、 の対応するメソッドは同期されることです。length()
capacity()
append()
StringBuilder
そうではありません。この基本的な違いは、文字列の連結が を使用しStringBuilder
た場合よりも を使用した場合の方が高速であることを意味しますStringBuffer
。実際には、StringBuffer
文字列の連結は 99% の確率で同じスレッド上で実行されるため、使用はお勧めできません。 6. 式 1.0/0.0 を評価した結果は何ですか? 例外またはコンパイルエラーが発生しますか? これもクラスに関する難しい質問です。Java 開発者は、プリミティブ double データ型とクラスの存在を認識していますが、浮動小数点演算を実行するとき、、、、および関連する算術計算を管理するルールには十分な注意を払っていません。 この質問に対する答えは簡単です。Double
Double
Double.POSITIVE_INFINITY
Double.NEGATIVE_INFINITY
NaN
-0.0
ArithmeticException
投げられません。式は と評価されますDouble.POSITIVE_INFINITY
。 7. すでにそのキーが含まれている にキーを挿入しようとするとどうなりますかHashMap
? この難しい質問は、別のよくある質問の一部です。「HashMap
Java ではどのように動作しますか?」HashMap
は、Java に関する紛らわしい、難しい質問の一般的な原因です。 答えは次のとおりです。クラスでは重複キーが許可されていないため、にキーを再挿入しようとするとHashMap
、古いキーが置き換えられます。HashMap
そして、同じキーは同じハッシュ コードを取得します。つまり、ハッシュ バケット内の同じ場所に置かれることになります。Quora資料 に基づく
GO TO FULL VERSION