給与を50%増やし、小さな工場から反撃し、Ant P8の技術専門家に座ります(顔の経験+経験)

序文

ほとんどの場合、プログラマーの個人的なスキルの成長率は、会社の規模やビジネスの成長率よりもはるかに大きくなります。したがって、転職はこの業界で最も一般的な語彙になっています。

実際、転職の目的は昇給やキャリア開発に他ならず、私も例外ではありません。普通の学部を卒業後、インターネット会社に入社しました。ここ数年、経験を積み重ねてきました。ついに美団にジャンプすることにし、給料が50%増えました。個人的な経験と提案をお聞かせください。

ä¸æ带ä½äºè§£èèéæï¼ä¸åªæ¯æ个æ¯ä»å®é£ä¹ç®å

ä¸æ带ä½äºè§£èèéæï¼ä¸åªæ¯æ个æ¯ä»å®é£ä¹ç®å

次のコンテンツには、面接の質問(回答を含む)+学習ノート+電子書籍+学習ビデオが含まれます。パッケージ化され、無料で共有されます。VX[MXM9809]追加して入手してください。

A:面接前の準備

1.対象会社

辞める前に、あなたが大企業のねじになりたいのか、中小企業の万能薬になりたいのか、あなたはあなたのターゲット企業が何であるかを明確に考えなければなりません。

もちろん、大企業に行くことは必ずしも失敗ではありません。重要なのは、あなたの技術レベルと能力を見ることです。したがって、私たち自身の実情に基づいて、対象会社はMeituan、Byte、JDの3つの住宅から選択します。もちろん、3社すべてが履歴書を提出し、Meituanとのインタビューの中でようやくオファーを勝ち取るために努力しました。

 

2.タイムノード

転職の時点は非常に重要であり、面接の難易度は、主に人の不足の程度や就職HCの数によって異なる場合があります。

一般的に言って、次の2つの状況では、面接を通じてオファーを得る方が簡単です。

  1. 働く人を雇いたいとき
  2. 年末にピットが増えると

3.準備を再開します

履歴書の作成については、あまり言う必要はありませんので、ご理解ください。履歴書は、少なくとも次の点を満たしている必要があります。

  • プロジェクトを本体として履歴書をデザインする
  • ビジネスのニーズに焦点を当て、あなたのスキルを強調します
  • プロジェクトの3つの要素(プロジェクト=製品+テクノロジー+結果)
  • プロジェクトを定量化し、数値を示します

履歴書の作成については、どこから始めたらいいのかわからない方も多いので、参考に履歴書のテンプレートをいくつかご用意しておりますが、個人的にはとても参考になります。

給与を50%増やし、小さな工場からの反撃、Meituan L8技術専門家に座る(顔の経験+経験)

 

4.インタビューレビュー

面接前のレビューの重要性については、あまり繰り返さない。面接をしたことのある人なら誰でも、一時的な持ち越しであっても、裸になるよりずっといいことを知っていると思う。私のレビュー方法といくつかのスキルについては、記事の第3部で詳しく説明し、インスピレーションを与えてくれることを願っています。

B:アリへインタビューの全プロセス(インタビューの質問の共有)

アリ側:

  • Redisクラスター、なぜ16384なのですか?選挙プロセスであるセンチネルモードでは、スプリットブレインの問題が発生しますか?いかだアルゴリズム、長所と短所
  • JVMクラスローダー、カスタムクラスローダー、親委任メカニズム、長所と短所、Tomcatクラスロードメカニズム
  • Tomcatのホットデプロイメント、ホットリロードは理解できますか?どうやってやったの?
  • cmsコレクタープロセス、g1コレクターの原理、予測可能な一時停止を実現する方法は?地域のサイズと構造
  • メモリオーバーフロー、メモリリークが発生しましたか?どんなシーンが生まれましたか?それを解決する方法は?
  • ロックのアップグレードプロセス中に、軽量ロックがバイアスロックになることはありますか?バイアスロックをロックフリーにすることはできますか?スピンロック、オブジェクトヘッド構造、ロック状態変更プロセス
  • Kafkaのリバランス、Kafkaがリバランスしないようにサービスを再起動する方法は?オプションは何ですか?
  • 分散サービスとマイクロサービスを理解する方法は?なぜサービスを分割するのですか?何が問題になりますか?これらの問題を解決する方法は?
  • どのメッセージミドルウェアを使用していますか?カフカ、なぜカフカを使うの?高スループット、高スループットを確保する方法は?デザインモデル、ゼロコピー
  • アルゴリズム1:長さNの整数配列arrがあり、N個の等しくない自然数1-Nがある場合、arrのソートを実現してください。ただし、添え字0〜N-1の位置に番号を直接割り当てないでください。 1∼Nで
  • アルゴリズム2:ツリーが平衡二分木であるかどうかを判断する

アリの両面:

  • Innodbの構造を理解していますか?ディスクページとキャッシュ領域はどのように連携し、それらを見つける方法は?バッファとディスクのデータに一貫性がない場合はどうすればよいですか?mysqlが突然ダウンした場合、データが失われますか?
  • Redis文字列の実装、sdsとcの違い、スペースの事前割り当て
  • redisオーダーコレクションを実装するにはどうすればよいですか?スキップテーブルとは何ですか?ジャンプテーブルに要素を追加するプロセス、要素を追加および取得するプロセス、およびスコアを取得する時間の複雑さ、赤黒木を使用してみませんか?赤黒木の特徴は何ですか?左手と右手の操作
  • ioモデルを理解していますか?多重化、single、poll、epoll、epollの構造、イベントの登録方法、etおよびltモード
  • 高可用性を理解する方法は?高可用性を確保するにはどうすればよいですか?欠点、ヒューズメカニズム、およびそれを実現する方法は何ですか?
  • 高い並行性についてどう思いますか、高い並行性はどうですか、あなたのプロジェクトにはそれがありますか?問題がある場合、それらを解決する方法
  • プロジェクト紹介
  • アルゴリズム:バイナリツリーが与えられた場合、ノード値の合計が最大のパスのノード値の合計を計算してください。このパスの開始ノードと終了ノードは、バイナリツリー内の任意のノードにすることができます

アリの3つの側面:

  • プロジェクト紹介
  • オンラインで大量のトラフィックに遭遇しましたか?問題は何でしたか?データベースが2000qpsで失敗したのはなぜですか?理由について考えましたか?当時どのように対処しましたか?
  • 電流制限を行う方法、電流制限システムを設計するように求められた場合、それを達成する方法は?
  • アルゴリズム:浮動小数点数の立方根を見つける、ニュートン反復法
  • いつから始められますか?また、そのポジションに期待することは何ですか?
  • あなたはまだ他の会社にインタビューしていますか、そして現在のプロセスは何ですか?

Antインタビューの質問への回答:

給与を50%増やし、小さな工場からの反撃、Meituan L8技術専門家に座る(顔の経験+経験)

 

C:定性的な飛躍を達成する方法は?

1.テクノロジーの蓄積(学習+蓄積)

大規模な工場でも小規模な工場でも、アウトソーシング企業でも、テクノロジーの初心者にとっては、基本的に単純なCRUD作業を行います。簡単なことを繰り返してもスキルは上がらないと思う人も多いのですが、実は血の道を壊してしまう人もいるので、心と労力を費やしたかどうかがポイントです。

もちろん、私は個人的に独自の学習方法や習慣を持っています。私は通常、断片化された時間を使って、技術書やドキュメント、ビデオの説明などを見て、自分のように感じることがよくあります。突然気づきました。仕事にも大いに役立ちました。

  • 本の文書を読む:

給与を50%増やし、小さな工場からの反撃、Meituan L8技術専門家に座る(顔の経験+経験)

 

  • ビデオを見て学ぶ:

給与を50%増やし、小さな工場からの反撃、Meituan L8技術専門家に座る(顔の経験+経験)

 

  • 面接の質問:

給与を50%増やし、小さな工場からの反撃、Meituan L8技術専門家に座る(顔の経験+経験)

BATの第一線の面接の質問

給与を50%増やし、小さな工場からの反撃、Meituan L8技術専門家に座る(顔の経験+経験)

テーマ別面接の質問

2.正しい技術的方向性を確立する

私の意見では、能力よりも選択の方が重要な場合があります。ことわざにあるように、風の上に立つと、豚は離陸できます。

プログラマーにとっては、できるだけ早く自分のキャリアプランを立て、開発ルートを確立する必要があります。同じ強さを持ち、機会を見つけて判断するのが得意な人が常に主導権を握ると思います。

プログラマーの開発の方向性は、大きく3つのカテゴリーに分けることができます。

  • 建築家
  • プロジェクトマネージャ
  • マネージャー

まず、マネージャーに関係なく、最初の2つの方向性に関しては、技術レベルと作業能力に一定の要件があります。まず、技術が基盤であり、次に能力の逸脱であることを明確にする必要があります。

たとえば、アーキテクトは、完全で堅固な技術システム、一定レベルの達成度、優れたシステム分析および設計機能、開発プロジェクトでの豊富な経験を持っている必要があります。また、プロジェクトマネージャーは、技術スキルに加えて、理解する必要があります。ソフトウェア開発のすべての側面を理解し、開発のさまざまなテクノロジーとアプリケーションを理解し、開発チームのレベルと特性を理解します。

給与を50%増やし、小さな工場からの反撃、Meituan L8技術専門家に座る(顔の経験+経験)

 

3.他の人のコードの読み方を学ぶ(メモ)

理由はわかりませんが、多くの開発者は常に「魅力的な自信」を持っており、Yang Liのコンセプトを使用して、「私以外のすべての人、すべての人が書いたコードはゴミです」という考えを持っています:なぜあなたは明らかに普通なのですか?しかし、再び自信がありますか?

実際、他の人のコードで作業を続けることができることは、複数の利点を備えた優れたスキルです。前のコードがどれほど厄介であるか、よく考えられていなくても、それを拡張する必要があります。

結果として、それは2つの方法であなたに利益をもたらします:

  • 他の人のコードを読むことができることは、悪いデザインが何であるかを理解する良い機会です。
  • 他の人の厄介なコードを読むことができるので、更新が必要なときにも簡単になります。

私は個人的に、いくつかの開発スキルとソースコードを含むいくつかの大物のテクニカルノートを読みました。

(スペースは限られており、その一部のみが示されています。メモには、Spring Family Bucket、Redis、MySQL、JVM、およびその他のナレッジポイントが含まれています)

  • 春のソースノート

給与を50%増やし、小さな工場からの反撃、Meituan L8技術専門家に座る(顔の経験+経験)

 

  • SpringBootテクニカルノート

給与を50%増やし、小さな工場からの反撃、Meituan L8技術専門家に座る(顔の経験+経験)

 

  • Redisで遊ぶための実用的なメモ

給与を50%増やし、小さな工場からの反撃、Meituan L8技術専門家に座る(顔の経験+経験)

 

4.独自のシナリオ思考を育成する

最初の2年間は、大学の研究では再現するのが難しい、自分自身のシナリオベースの思考を育ててきました。シナリオ思考とは何ですか?それは、エンドユーザーがソフトウェアをどのように誤って使用する可能性があるかを率先して考えることです。

ほとんどのプログラミングは保守可能であるため、通常、他のコードと高度に結合されたコードを変更することを意味します。単純な変更でも、オブジェクト、メソッド、およびAPIへの可能なすべての参照を追跡する必要があります。そうしないと、気づかなかったモジュール接続が誤って切断されやすくなります。データベースのデータ型を変更したばかりの場合でも。また、開発に入る前に、エッジケースや統合された高レベルの設計について考えることも含まれます。

新しいモジュールまたはマイクロサービスを開発するためのシナリオはより複雑であり、構築される運用シナリオを検討するために時間をかけることが非常に重要です。将来のユーザーが新しいモジュールをどのように使用する必要があるか、どのように誤って使用するか、どのパラメーターが必要になるか、将来のプログラマーが別の方法でコードを必要とするかどうかを考えてください。

単純なコーディングとプログラミングは問題の一部にすぎません。お使いのコンピュータでうまく動作するソフトウェアを作成するのは簡単です。しかし、デプロイメントコードがうまくいかない可能性のある多くの方法があります。実稼働環境に入ると、コードがどのように使用され、他のどのコードが元のコードに追加されるかを言うのは困難です。5年後、将来のプログラマーはコードの制限に不満を感じるかもしれません。

総括する

Javaプログラマーにとって最も貴重な時間は、働き始めた瞬間から計算される「ゴールデン5年」です。この5年は、学習して成長するのに最適な期間です。

将来の発展の道を迂回することを避け、年俸50万または100万という夢を実現できるように、自分自身のための良い基盤を築いてください。

友情の共有:記事のコードワードは簡単ではありません。3つの連続した波でより多くのzan + turn fa + lunへのコメントを願っています〜

記事に記載されているインタビューの質問、メモ、電子書籍、学習ビデオが必要な場合は、私をフォローしてVX [MXM9809]を追加すると、無料でダウンロードできます。

おすすめ

転載: blog.csdn.net/Sqdmn/article/details/115186604