JD Javaは10年のベテランで、これらの年の仕事、転職、面接の経験を要約しています。

迷わないように注意してください。Java関連のテクノロジーと情報の更新を続けてください。

序文

一週間前、元同僚が出張に来て、約束の場所を見つけて、カップを押しながらカップを替えながら、現在の仕事や生活について話しました。私はビジネスを始める前と現在、井東にいることについて話しました。旅はでこぼこです!
とにかく、私は自慢しています*、彼は本当に素晴らしいです*!仕事、転職、面接経験について話しました、今日は整理して共有する時間があります!お役に立てば幸いです。
ここに画像の説明を挿入

仕事について

プロジェクトのハイライト、テクニック、困難を示す方法:

私の経験とテクノロジーを要約することは問題ありませんが、私が行ったプロジェクトと私が知っているテクノロジーはとても平凡なので、明るいスポットが見つからない場合はどうすればよいですか?

輝点がないこと、つまり不足していることがわかっている場合は、次に終了して欠点を補うときに、自分用の輝点を作成しようとします。

たとえば、ビッグデータの仕事を見つけることができるので、将来的にはハイライトであるビッグデータテクノロジーのラベルが付けられます。または、同時実行性の高いプロジェクトを見つけてそれを実行し、将来的に同時実行性の高いプロジェクトを体験することもできます。これもあなたのハイライトです。

概して、仕事や面接を変更するたびに、退屈な面接の質問をブラッシングするよりも、自分自身を要約し、自分のハイライトをより深く掘り下げることが重要です。これはあなたの現在だけでなくあなたの将来にも役立ちます。

面接について

面接前に質問を確認することはお勧めしませんが、プロジェクトのハイライトとテクニックを要約する必要があります。また、忘れられていた重要な知識のポイントを確認する必要があります。

面接の質問

ここに画像の説明を挿入
最初の段階はメイン言語自体とその高度な機能であり、2番目の段階は自分のプロジェクトについて話し合うことであり、質問が散在しています。

1)LinkedList、ArrayList、HashMap、TreeMapなどのJavaデータ構造関連クラスの実現原理。以下は、データ構造を持つシリアルガンを単純にシミュレーションします。

たとえば、インタビュアーは最初にHashMapが適切かどうかを尋ねます。

あなたは間違いなくそれが整然としたものではないと答えます。インタビュアーは引き続き質問しますが、順次Map実装クラスはありますか?

現時点で分からないと言うなら、この質問は終わりです。TreeMapとLinkedHashMapがあると言うなら。

次に、インタビュアーはあなたに尋ねるかもしれません、TreeMapとLinkedHashMapはその順序をどのように保証しますか?

答えられない場合は、ここで終了してください。それでも答えると、インタビュアーは引き続き質問しますが、規則正しい実装のどちらが良いと思いますか?

それでも答えることができる場合、インタビュアーは引き続き質問します。それを実装するより良いまたはより効率的な方法があると思いますか?

あなたがそれを言うことができるなら、あなたはまだあなたが言った実装について多くの質問をすることができます。

上記は、インタビュアーが段階的に質問する例です。したがって、次の問題が露呈する可能性があるため、多くのことを知らなくても、混乱しないでください。単に「いいえ」と言って、この問題を解決し、慣れ親しんだフィールドにすばやく切り替えることをお勧めします。

2)Javaコンカレントパッケージのクラス、それらの機能、およびそれらの実装原理は、これらのクラスはjava.concurrentパッケージの下にあります。上記のように、並行パッケージでシリアルキャノンを単純にシミュレートしましょう。

たとえば、インタビュアーは最初に、すべてのスレッドがイベントが一緒に発生するのを待つことを認識したい場合、イベントが発生するとすべてのスレッドが一緒に実行を開始することを尋ねるかもしれませんが、良い方法はありますか?

この時点で、バリア(Javaの並行性パッケージのCyclicBarrier)を使用できると言うかもしれませんが、インタビュアーは引き続き質問しますが、それがどのように機能するか知っていますか?

回答し続けると、インタビュアーが引き続き質問する可能性があります。それを達成する他の方法を知っていますか?

あなたがそれを達成するための多くの方法を挙げることができるなら、あなたに尋ね続けてください、これらの方法のどれがより良いと思いますか?

特定の方法の方が良いと言っても、インタビュアーはあなたに尋ねることができます。書くように求められた場合、それを達成するためのより良い方法があると思いますか?

現時点でこれを達成するためのより良い方法をまだ言うことができる場合、インタビュアーは間違いなくこれを取得し、引き続き質問します。

これが、面接中に面接担当者を案内する必要がある理由です。面接担当者の質問は追跡可能であることが多いので、面接担当者の軌跡をたどって、下で質問する可能性が高いと推測できる場合は、回答するときに話したい方向に進むことができます。話すこと。これにより、インタビューはより穏やかで快適になります。

3)IOパッケージおよびNIOパッケージの内容。この部分では、NIOに焦点が当てられ、ほとんどのIOパッケージは使い慣れているため、直接スキップして、NIOの内容について直接尋ねることができます。

IOパッケージとNIOパッケージの内容は比較的小さいですまず第一に、NIOモデルは精通している必要があり、特にセレクターはその責任と実装原理について非常に明確でなければなりません。実際、NIOの中核はIOスレッドプールであり、この重要な点を覚えておく必要があります。時には、インタビュアーがIOパッケージのデザインパターン(デコレータパターン)を尋ねることもありますが、なぜこのように設計するのですか?

面接担当者の中には、より優れたデザインがあるかどうかを尋ねる人もいます。現時点では、それがわからない場合は、現在のレベルが制限されており、優れたデザインを思い付くことはできないと断言してください。

4)Java仮想マシンの内容。この部分には主に、GC、クラスローディングメカニズム、およびメモリの3つの部分が含まれます。

GCパーツを備えたシンプルなシリアルキャノン。

インタビュアーは、オブジェクトがいつGCになるかを最初に尋ねることができますか?

次に、なぜ現時点でオブジェクトをGCにしたいのかを尋ね続けますか?

次に、GC戦略の分類は何かと尋ね続けますか?

あなたがそれを言うなら、これらの戦略のそれぞれの長所と短所は何であるかをあなたに尋ね続けますか?それらはどのシナリオに適していますか?

話し続けた後、実用的なシナリオを示し、GC戦略を選択できるようにしますか?

選ばれたら、続けて尋ねます。なぜこの戦略を選んだのですか?

以下は、クラスローディングメカニズムに関する簡単なシリアルショットです。

まず最初に、Javaクラスローダーとは何かを最初に尋ねなければなりませんか?

これらに回答した後、各クラスローダーによってロードされるクラスを尋ねられる場合がありますか?

話した後、これらのクラスローディングの親子関係は何ですか?

回答するときに親の委任モデルについて言及することがあるので、親の委任モデルとは何であるかを引き続き尋ねることができますか?

それを説明した後、質問を続けることができます。なぜJavaクラスローダーは親の委任モデルを使用するのですか?

答えた後も、独自のクラスローダーをカスタマイズする方法、独自のクラスローダーとJava独自のクラスローダーの関係を処理する方法を尋ねることができますか?

これは、メモリに関する別のシリアルキャノンです。

まず、メモリのどの部分に分割されているのか、そしてこれらの部分にどのようなデータが保存されているのかをお伺いします。

次に、オブジェクトがどのように存続し、これらの部分で作成から破棄まで移動するかを引き続き質問しますか?

次に、メモリのどの部分がGCリカバリに参加するか尋ねられる場合があります。

作業が完了したら、Javaメモリモデルの設計方法についても質問される場合があります。

答えた後、なぜあなたはなぜこのように設計したのかと尋ね続けますか?

質問したら、メモリモデルの設計と組み合わせたvolatileキーワードの役割について説明できますか?

話しているときは、必ず「可視性」について言及します。次に、可視性という3つの単語に続いて、並行コンテンツについて引き続き質問できます。

基本的に、Java言語自体と、言語の少し高度な内容が上記の部分です。上記の4つの部分を非常に完全に理解できれば、基本的にJavaの部分に問題はありません。当局は長い間おしゃべりをしてきました。これらについて長時間話すと、当然、他の質問をする時間が短くなります。

これらの質問を書くプロセスからそれを感じることができるはずです。多くの場合、インタビュアーは線に沿って尋ねます。この線があなたに馴染みがないと感じた場合は、振り向いてインタビュアーが行くように案内する必要があります。他の質問をします。飛び出せなくなるまで下がらないでください。恥ずかしいことになります。

2.質問が点在するプロジェクトについて教えてください

この部分は、インタビューの過程で必須の質問であり、最も長い会話ステージでもあります。以前の言語の部分が非常にしっかりしていない限り、インタビュアーが1〜2時間尋ねるまで、言語自体の理解度がまだわかりません。それ以外の場合は、自分のプロジェクトのレベルをエスケープできてはならず、通常の状況では、チャット時間が短くなりすぎることはありません。

コンテンツのこの部分の一般的なパターンは、自分が行ったプロジェクトについて話すと、インタビュアーがその時点でその理由を説明するよう依頼する、または今より良いと思うかどうか尋ねるなど、その一部を説明するように突然求めてくるというものです。良い方法。これらの点在する問題のほとんどは、プロジェクトで使用されているテクノロジーに関連しています。そして、あなたがしなければならないことは、あなたがやったプロジェクトを完全にそして完全に要約することです(特に最新の1つまたは2つのプロジェクト)、そして1つまたはN個の明るいスポットさえ掘り出して、インタビュアーがそれらを最大限に活用できるようにすることです。明るい感じ。この効果を達成できれば、基本的に成功にはほど遠くない。

コンテンツのこの部分は、各自の経験と密接に関連しているため、考えられる質問をここにリストする方法はありません。この記事「プログラマーの顔:面接前に質問をブラッシングして面接前に準備する方法」は私が以前に書いたものです。おそらく、面接前に要約する方法について説明しました。興味があれば、それを見つけることができます。

3.追加ボーナスポイント

上記の2つの段階は基本的に必要であり、いくつかの追加のポイントがあります。これらのボーナスアイテムの中で、インタビュアーはいくつかのコンテンツ(TCP / IPプロトコル、アルゴリズムなど)についても尋ねますが、理解している場合、理解している場合、話し続け、理解していない場合は無視してください。その後、この問題のために地獄に直接送られることはありません。

以下に、これらのボーナスポイントをリストします。可能であれば、これらのボーナスポイントはまだ戦う必要があります。

1.コンピュータシステムの原則。

2.ネットワーク通信プロトコル(TCP / IP、HTTPなど)。

3.データ構造とアルゴリズム。

4.有名なオープンソースプロジェクトのソースコード。

5.あなたは素晴らしいオープンソースプロジェクトを自分で持っています。

6.個人のブログ。

7.コメント領域に追加されます。

これらのうち、最初の1〜3については、以前はよく理解できていたが、時間の問題で忘れてしまった場合でも、足をホールドすることができます。次の4〜6のアイテムは、毎日貯める必要がありますが、短期間ではできません。平日に貯まらない場合、これらの3つのボーナスアイテムは破棄できます。

4.職位に関連するコンテンツ

実際、この最後の項目は最初の3つの項目を補足するものであり、面接対象のポジションに関連するコンテンツに集中するようにしてください。たとえば、リアルタイムコンピューティングのポジションについて面接している場合、アルゴリズムは優れている必要があります。よく知られているリアルタイムコンピューティングのオープンソースプロジェクトに精通している必要があります。ソースコードを読むのが最善であり、分散システムに関する特定の洞察も必要です。

したがって、このパート4には具体的な内容はありませんが、面接の位置について非常に明確な場合は、面接の準備時に位置の要求に近づくことが最善であり、成功の可能性が高くなることを思い出させるだけです。

道は足元にあります、さあ!

福祉

この記事の最後にあるメリットを受け取る方法
Redisがシングルスレッドで高速なのはなぜですか?
https://blog.csdn.net/XingXing_Java/article/details/92626174

役に立ったと思われる場合は、いいねとコメントをお願いします。

おすすめ

転載: blog.csdn.net/XingXing_Java/article/details/93008104
おすすめ