Javaバックエンド開発を3年間アウトソーシングしていますが、年末に2か月間転職した後の面接にどのように対処しますか?

序文

例としてJavaインタビューを取り上げます。毎年の焦点は異なります。RPC、springboot、dockerなど、採用要件で使用していないテクノロジーが存在する可能性があります。2か月以内に面接に行く場合、お気に入りの会社には採用要件で使用していないようなテクノロジーがあり、面接官がこのテクノロジーについてどのような質問をするかわかりません。毎年多くの新しいテクノロジーが出現していますが、それらのほとんどは特定のアプリケーション分野のプログラミングフレームワークに属しています。たとえば、10年前のさまざまなWebプログラミングフレームワーク、10年前のミドルウェアフレームワーク、近年のディープラーニングフレームワークなどです。テクニックをすばやく習得するには、学習する必要のあるコンテンツがドメイン知識とフレームワークの2つの部分に分かれており、これに基づいて実践するにはいくつかの例が必要です。ドメイン知識はこの分野では普遍的であり、異なるフレームワークでも使用できます。フレームワークの知識は、プログラミングに便利なドメイン知識のカプセル化です。

ここでの編集者は、学習方法をまとめたものです。慣れていない限り、この方法を2か月間使用するだけで多くのテクニックを学ぶことができ、学習して使用できる種類です。この方法は、ほとんどのテクノロジー(Java、Spring、Redis、ネットワーク、オペレーティングシステムなど)には効果的ですが、基本的な蓄積を必要とするアルゴリズム、データ構造、およびデザインパターンには効果的ではないことに注意してください。スキル。。

1.マインドマップを整理する

インターネットにアクセスして、アリ部門の質問など、面接の質問の詳細なリストを見つけてください。次に、1つずつ答えてみて、そうでない場合は情報を確認し、答えながらマインドマップに整理します。

マインドマップはあまり詳細である必要はなく、固定形式はありません。自分で快適に見えるだけです。

  • JVMメモリを新世代、旧世代、および永続世代に分割する必要があるのはなぜですか。新世代エデンサバイバーに分かれているのはなぜ ですか?

  •  なぜエデンとサバイバーに分かれているのですか?なぜ2つのサバイバーエリアが必要なのですか?
  • どのような種類のガベージコレクター、それらの長所と短所を知っていますか、いくつかの低いcmG1を強調しています。パッケージには、原則、プロセス、長所と短所が含まれています 

  • 並べ替え、メモリバリア、発生前、メインメモリ、作業メモリなど、JVMメモリモデルの関連知識についてどの程度知っていますか

  • あなたが知っているクラスローダーについて、それが親の委任を破ることができるか、そしてそれを破る方法について単に話してください:

  • スレッドスタック情報を印刷する方法:

  • 強参照、ソフト参照、弱参照、ファントム参照の違いは何ですか?

上記は並行プログラミングのために編集者が収集したマインドマップです。詳細なマインドマップと実際の面接の質問が必要な場合は、私をクリックして入手してください

2.大企業から実際の面接の質問をいくつか集めて、自分の質問に答えます

次に、いくつかのインタビューの質問を収集します。ここにいくつかのインタビュー記事を収集しました。読みたい人はクリックして調べることができます!

JVMマルチスレッドネットワークプログラミングインタビューの主要メーカーが尋ねなければならないこれらすべてのJavaインタビューの質問をブラッシュアップしましたか?

1万元の世帯の中でプログラマーになりたいですか?これらのMySQLコア技術ポイントを理解する必要があります!

Ant Financial内からのJAVAインタビューブックが予想外に流出しました!【集めました】

ダブル11に近づくと、大廠からのオファーを勝ち取り、アリババに移るのに2か月かかりました。

すべての面接の質問に答えると、このテクニックの大まかなマインドマップが得られます。次に、欠陥を確認するためにさらに新しい質問を書き続けると、マインドマップがより完全になります。

3.知識ポイントを絶えず繰り返して統合します

マインドマップを作成したら、脳内でマップの内容を繰り返し続けます。

他の人に教えるのと同じように、静かに知識のポイントを表現するには、特定の言語を使用する必要があります。このステップはより重要です。学名はリトルイエローダックラーニングメソッドです。特定の言語で知識ポイントを表現することによってのみ、あなたが持っている曖昧さを知ることができます。

数回後、しっかりとした「水晶の記憶が形成されます(百度は必要ありません。自分で発明した語彙です)。

4.テクノロジーの厚みを深める

思い出すたびに、わからない部分を深く掘り下げ、根底にある原理を理解し、マインドマップを更新することで、テクノロジーの理解が徐々に深まっていきます。

このステップも非常に重要です。表面技術にとどまると、良いオファーを得るのに役立ちません。

5.外に出てXをインストールします

マインドマップを理解し、ある程度の深みを持ったら、面接に行きます。面接官をだまして、自分が隠れた王だと思う可能性が非常に高いです。私はこの方法を使用して、Redisをゼロからソースレベルまで学習しましたが、AntFinancialのインタビュアーはすべて私に不自由でした。

クリスタルメモリとは一体何ですか?私の感覚では、知識システムは脳に完全に吸収され、結晶に圧縮されています。この状態では、知識システムは少し大きいと思うかもしれませんが、実際に記憶を広げると、中にはたくさんのものがあり、それらはすべてすでに習得されています。

ストライクアイアンも自分で固くする必要があります(この方法はすべての人に適しているわけではありません)

また、アイロンがけに苦労する必要があります。この簡単な方法を使用するには、最初に適切な基盤が必要です。そうしないと、原則を理解できないため、面接の質問の解決策を研究するステップに固執することができません。暗記で面接に合格することはできません。

これらの知識マップを保管してください、それらはあなたの富です。就職後は、ブランチを出して毎日確認するのが最善です。真冬が凍りつくと、食物連鎖の最下部にいるコードファーマーが常に武器を鋭く保ち、十分な強度を発揮するのを待ちます。リスクに抵抗する

この方法は普遍的であり、私はこの方法を使って金融知識を学びますが、その効果は悪くありません。

リトルイエローダックの学習方法

3番目のステップでは、完全に理解するためにマインドマップの内容を繰り返す必要があります。これは実際には小さな黄色いアヒルの学習方法です。

要するに、おもちゃの小さな黄色いアヒルなど、他の人に知識を説明することです。知識を完全に理解しているかどうかをテストする最良の方法は、小さな黄色いアヒルを教えることです。

この方法は神経学に基づいています。私の知る限り、人間の脳は、いわゆる脳のサプリメントである、不合理なことの合理的な説明を見つけるのに非常に優れています。

特定の研究プロセスについては、一部のスプリットブレインの人々の実験記録を見ることができます。右脳に否定的な感情が現れると、左脳は何が起こったのかわかりません(左脳と右脳の間の情報交換チャネルはカットオフ)、しかし、左脳は最終的にそれを補うでしょう。「合理的な」説明、そしてそれは事実であると信じていますが、この説明は実際には間違っています。

したがって、知識のポイントを学ぶとき、あなたの脳は「私は完全に学んだ」という幻想を生み出します。

しかし、この知識のポイントを他の人に説明しようとすると、実際には説明できないポイントがたくさんあることに気付くでしょう。この状況は基本的に100%発生します。

さらに、プログラミングの実践では、この方法を使用すると、障害のトラブルシューティングをすばやく実行したり、複雑なコードをすばやく理解したりできます。

たとえば、コードの背後にあるビジネスロジックや実装の詳細を理解していない場合は、いくつかの文を使用して、このコードの機能と実装を正確に説明することができます。あなたがこれを行うことができれば、あなたはすでに理解しています。

これが不必要な行為だとは思わないでください。人間の脳は常に目を覚まし続けることはできません。実際の開発では、私たちの脳はコードを処理するために自然言語を使用しませんが、論理と抽象的な思考を直接行います。これは多くの脳のサプリメントを生み出しました。あなたのコードの理解は間違っている可能性が非常に高く、多くの人々がしばしばそれに遭遇しなければなりません。

この方法は少しばかげているように見えますが、実際には非常に便利です。

 構造化された思考について

知乎を6年近くプレイした後、ようやく素晴らしい答えが得られたので、それについて話しましょう。

以前は、構造化された思考(マインドマッピング)のいくつかの手段を使用していましたが、これは氷山の一角にすぎません。プログラマーにとって、良い構造化された思考習慣を持つことは生産性を大幅に向上させ、その効果は小さな黄色いアヒルの学習方法よりも大きくなります。私はそれを何度も検証しました。

知乎で「構造化された思考」を検索して詳細に調べることができ、優れた答えがたくさんあります。次に、私がよく使用するいくつかの考え方と、プログラミングでのそれらの実装についてのみ説明します。

5W1H方式

この方法にはたくさんの人がいますが、ここでは主にプログラミングの練習で5W1H解析を行う方法を紹介します。問題や要求が発生した場合は、以下の手順に従って分析してください。

  1. リストを書く、各項目は何、なぜ、どこで、いつ、誰が、どのように
  2. 内容:数文で、問題の核心とは何か、要件の性質は何かを正確に説明してください。これは、フォローアップ作業で間違いを犯さないようにするための全体的なプログラムです。
  3. 理由:これを行う理由を1つか2つの文で説明してください。これはあなたがしていることが意味のあるものであり、あなたの目標が正しいことを保証します。
  4. ここで:空間次元での問題の静的分析。マクロレベルでは、どのコンポーネントが問題に関与しているか、ミクロレベルでは、どのキークラス、メソッド、構成などが問題に関与しているか。原則として、このバスケットにはスペース関連の要素をすべて投入できます。分析が包括的であるほど、優れています。
  5. いつ:時間ディメンションで問題を動的に分析します。マクロレベルでは、コンポーネントはどのように相互に通信しますか。ミクロレベルでは、上記のコードがトリガーされたときなどです。原則として、時間に関連する要素をこのバスケットに入れることができます。分析が包括的であるほど、優れています。重複する要素が頻繁にある場所と場合、これは問題ではありません。好きな場所に配置できます。
  6. 誰が:キャラクターの関係の次元で問題を分析します。一般的に、このステップはより直感的で、問題に関与している人、人と人との関係、および各人の責任をリストするだけです。このようにして、何かに遭遇したときに適切な人を見つけることができます。
  7. 方法:リストを使用して、これを実現する方法を説明します。このステップは実際には要約です。前の5つの次元の要素を組み合わせて、高品質で省力化されたソリューションを見つけ、そのソリューションに従って実装します。

5W1H思考法の最大の利点は、多次元で考えることを余儀なくされることです前にも言ったように、私たちの脳は脳のサプリメントが好きです。それらを1つずつ分析できないと、私たちの脳はさまざまなジャンプの思考に従事し、最終的には多くの要因を見逃してしまいます。では、もう少し複雑なプロジェクトで、あなたも、私はそれを知っているか私に聞かないでください、必要なカーネルが何であるかを知らないかもしれません。

リンク方式

私が要約した方法は、プログラムに対して線形因果分析を実行することです。静的な観点から、シングルスレッド、マルチスレッド、または複雑なシステムのいずれであっても、プログラムは線形であり、これがこの方法の基礎です。特定の手順:

1.リンクを形成する

問題や要求が発生した場合は、最初に5W1H法を使用して多次元分析を行い、次にWhereバスケット内の因子をWhen因子に従って大まかにソートし、それらを1つずつリンクします。あなたがあなたの仕事について十分に知っているならば、このステップはより速いはずです。

2.リンクを分析します

発生した問題のタイプに応じて、さまざまな分析を実行します。

  • トラブルシューティングの問題が発生した場合は、リンクの各ノードを注意深く観察し、問題のコンテキストに基づいて最も可能性の高いノードを確認および推測し、問題が見つかるまで問題の半径を狭めます。実際、多くの人がトラブルシューティング時にこれを行います。
  • 祖先のたわごとの山を変更する必要がある場合は、リンク分析を実行するときにコードでTaijiノードを探す必要があります。いわゆる大地ポイントは、小さく拡張できる重要な部分です。先祖のコードが変更されるほど、間違いが起こりやすくなることは誰もが知っています。安全のために、変更の範囲を制御するために最善を尽くす必要があります。これらの大地ポイントを見つけてください、あなたはいくつかの変更で要件を完了することができます。
  • テスト要件が発生した場合は、リンク内の各ノードで拡張分析を実行し、各ノードの可能な境界条件、異常条件などをリストして、これらのノードをカバーするテストケースを作成できます。

リンク方式の最大の利点は、直感頼らずにすべての段階で何をしているのかがわかることです時には直感は、トラブルシューティングを行う場合は特に、重要ですが、勘だけに頼る場合、あなたは間違いなく多くの有用な情報を欠場します。コードを変更するのに直感だけに頼っている場合、最終結果は最適なソリューションではない可能性が高く、実質的に多くのテストと検証のコストが増加します。

他の方法

STARメソッド:このメソッドは、特定の問題や問題を他の人に説明するためによく使用されます。コミュニケーションでは多く使われますが、特定のプログラミングではあまり使われませんので、ご自身で検索してください。

ピラミッド方式:この方式がより一般的です。しかし、正直なところ、この方法を習得するのは簡単ではありません。私は主に仕事の報告に使用しています。

PKメソッド:意思決定(テクノロジーの選択など)について躊躇する場合は、紙を見つけて、いくつかのソリューションのすべての長所と短所、長所と短所PK、短所と短所PKをリストし、最終的に次のようになります。答え。

アルゴリズム学習法

アルゴリズムへのショートカットはありませんが、アルゴリズムの能力をより速く向上させるためにいくつかの方法を使用できます。

「タオ」と「スキル」:

私の意見では、アルゴリズム学習は「dao」と「shu」に分けられます。「Tao」はフレームワークとアイデアを指し、「shu」はアイデアをコードに変換する機能を指します。「タオ」能力の欠如であるアルゴリズムの問​​題を解決するためのアイデアがない場合もあれば、アイデアはあるがコードを記述できない場合や、抜け穴が多い場合もあります。 "技術"。

「タオ」と「シュウ」は別々に練習することができます:

「タオ」を練習すると、20の質問など、毎日一定数のアルゴリズムの質問を見つけることができます。質問を読んだ後は、コードを1行も書かずに、アイデアやさまざまな解決策を考えて思い出すだけです。このように繰り返し練習すると、一定期間が経過した後、一般的な質問を見ると、基本的に少なくとも信頼できる考え方が得られます。

「スキル」の演習はより直感的になります。つまり、毎日いくつかのアルゴリズムの問​​題を解決し、特定のコードを記述し、さまざまな境界条件、プログラミングスキル、テストケースなどについて考えます。このように一定期間続けると、「技術的」能力が自然に向上し、基本的には単純なアルゴリズムを1回のパスで記述できます。

潘玉良

  • 「コミュニケーション」は、ソフトウェア開発の第一級市民です。この文章を深く理解して実践できる技術者はいない。
  • プロジェクトを行うには、最初に外側、次に内側、最初に高い、次に低い必要があります。外部要因は一般的にプロジェクトの進行を著しく妨げるため、最初に外部要因を解決し、次に内部要因を真剣に検討します。製品プロセスとさまざまな詳細、完全な要件、全体的なアーキテクチャとワークフローなどの高レベルの調査から始めて、特定の実装、技術的な問題、およびソリューションを調査するために最下部に移動します。プロジェクトを逆に実装するために、最終的には多くの無駄な作業を行うことがよくあります。このようなケースは、技術的に才能があると考えて数年の経験を持つ人によく見られ、直接実施します。プロジェクトは人、物、技術で構成されており、人と物を調整することはできません。技術がどれほど優れていても、プロジェクトは成功しません。
  • 事前に感情的な問題を解決することになると、それから実際的な問題を解決します。感情の問題を解決することは、多くの場合、多くの低レベルの間違いを犯します。
  • メタ認知についてもっと研究するビジョンを持っている人は、別の世界を開くことをお勧めします。
  • 継続的な内省は、あなたが本当に強力な人々のグループになるのを助ける非常に強力な能力です。それはBeimingDivine Artのようなもので、さまざまな人々から優れたものを学び、自分の欠点を補うことができます。

これで記事は終わりです!

エディターからの最後のメリット

以下は、大きな工場からの実際の質問の編集者が編集したインタビューデータと、2020年に最新のJavaコアテクノロジーによって編集されたデータのコレクションです受け取る必要がある友人は、私をクリックして無料で受け取ることができます。プログラミングは、プログラミングを愛するすべての人に常に開かれています。それは、自由で平等で共有された世界であり、私は常にこのように信じてきました。  

プロフィール写真の一部:

 

編集者の共有が気に入った場合は、気に入ってフォローすることができます。編集者は引き続き最新の記事を共有し、特典を受け取ります。

おすすめ

転載: blog.csdn.net/QLCZ0809/article/details/111395729
おすすめ