最初に書かれた考え
2020年は多くの災害の年です。私たち一人一人にとって、健康的な生活は何よりも重要です。エピデミックの影響を受けて、多くの企業が苦労し、一時解雇がさらに一般的になっているため、ほとんどの企業にとって、転職はもちろんのこと、仕事を続けるのは良いことです。
でも今年は多くの人より運が良かったようです。短大から来て、非常に低いスタート地点からスタートしました。学業資格を重視する大きな工場の中で道を切り開いたのです。私は2年間の仕事の後にSuningに入社し、Suningに3年間在籍し、現在はAliにいます。私の周りの多くの人々は好奇心が強いです、どうやってそれをしましたか?私が何年にもわたってどのように迅速に昇進してきたかをあなたと共有しましょう。私はあなたにいくつかのインスピレーションと助けをもたらすことができると思います。
この記事は主に4つのポイントを共有しており、必要に応じて読むことができます。
- Share1:AlibabaJavaの面接後の質問
- Share2:Suningは3年間開発されていますが、どうすれば経験を積むことができますか?
- Share3:5年の開発経験があるので、Aliを終了するにはどうすればよいですか?
- Share4:アリババの採用面接の合格率を向上させる方法は?
Share1:AlibabaJavaの面接後の質問
(1)飼育係の部分
- CAP定理
- ZAB契約
- リーダー選出のアルゴリズムとプロセス
(2)Redisパート
- Redisのアプリケーションシナリオ
- Redisでサポートされているデータ型(必須)
- zsetジャンプテーブルのデータ構造(必須)
- Redisデータの有効期限戦略(必須)
- RedisのLRU有効期限戦略の具体的な実装
- Redisキャッシュアバランシェとキャッシュペネトレーションの問題を解決する方法
- Redis永続化メカニズム(必須)
- Redisパイプライン
(3)Mysqlの部分
- ビジネスの基本要素
- トランザクション分離レベル
- トランザクションの同時実行性(ダーティ読み取り、ファントム読み取り)の問題を解決するにはどうすればよいですか?
- MVCCマルチバージョン同時実行制御?
- binlog、redolog、undologとは何ですか?また、それらの機能は何ですか?
- InnoDB行ロック/テーブルロック?
- myisamとinnodbの違い、いつmyisamを選択するか?
- インデックス構造としてB +ツリーを選択するのはなぜですか?
- インデックスB +ツリーのリーフノードに何を格納できますか?
- クエリが(予期される)インデックスに移動しないのはいつですか?
- SQLを最適化する方法は?
- 解析SQLをどのように説明しますか?
- による秩序の原則
(4)JVM部分
- ランタイムデータ領域(メモリモデル)
- ガベージコレクションメカニズム
- ガベージコレクションアルゴリズム
- マイナーGCおよびフルGCのトリガー条件
- GC中停止世界
- 各ガベージコレクターの特徴と違い
- 親の委任モデル
- JDBCと親委任モデルの関係
(5)Javaの基本部分
- HashMapとConcurrentHashMapの違い
- ConcurrentHashMapのデータ構造
- 同時実行性の高いHashMapリングはどのようにして生まれますか?
- 揮発性の役割
- Atomicクラスはどのようにして原子性を保証しますか(CAS操作)
- 同期とロックの違い
- なぜスレッドプールを使用するのですか?
- コアスレッドプールのパラメーターThreadPoolExecutor
- ThreadPoolExecutorワークフロー
- スレッドプールスレッドの優先度を制御する方法
- スレッド間の通信方法
- ブール値は数バイトを占めます
- jdk1.8 / jdk1.7にはどのような新機能が追加されていますか?
- 例外和エラー
(6)スプリング部
- SpringのIOC / AOPの実装
- 動的プロキシの実現
- Springは循環依存関係をどのように解決しますか(3レベルキャッシュ)
- Springのポストプロセッサ
- Spring @Transactionalはどのように実装されていますか?
- Springのトランザクション伝播レベル
- BeanFactoryとApplicationContextの接続と違い
(7)その他の部品
- 高い並行システムの現在の制限をどのように実現するのですか?
- 高並行性スパイクシステムの設計
- 負荷分散を設計する方法は?
Share2:Suningは3年間開発されていますが、どうすれば経験を積むことができますか?
(1)断片化された時間を使い、自分自身を向上させることを学ぶのが得意
ジュニアプログラマーからシニア開発者まで、他に近道はありません。最初から最後まで、進歩は学習に依存し、学習は時間に依存すると私は信じています。現在、インターネット業界は基本的に996のトレンドであり、残業しているプログラマーはより明白であるため、断片化された時間を使って学習することが、自分自身を向上させるための最も適切な方法です。
最初に私の個人的な学習時間のアカウントを計算します(参照用、参照用):
- 毎朝起きてから約30分(トイレに行く、朝食を食べる、通勤など)
- 毎日仕事に行くときは、他の人の時間を使って技術情報を検索したり、技術ブログを約30分間閲覧したりします。
- 夕方の通勤と食事(私は通常、この段階で自分の状態を調整するために休憩と娯楽を取り、Weibo、Momentsを磨きます)
- 夜に家に帰ると、どんなに疲れていても、勉強したり、本を読んだり、ビデオを見たりするのに1〜2時間かかります。
※このように計算すると、平均日は2〜3時間程度で、週末を除いて週5日で10時間以上です。
(2)バグ解決の経験を積む(自分の最適化能力を向上させる)
フォーラムには人気のあることわざがあります:ほとんどのプログラマーはBUGを通じて経験を蓄積し、あなたが解決するすべてのBUGはあなたの経験です。
実際、この観点はバグの重要性を強調していませんが、プログラマーがバグを修正することで最適化機能を改善できることを意味しますが、この「改革」は非常に重要です。
「改革」する方法は?
- 開発の過程で、私は常に大小の問題に遭遇します。問題に遭遇したとき、私は最初に自分の能力でそれを解決することを考えます。私は関連するソースコード、またはグーグルに関連する情報や技術を調べます。ブログ。問題が大きすぎて解決できない場合は、上司に相談してください。絡まることはなく、効果なしに時間を無駄にし、プロジェクトの進行を遅らせることはありません。上司に直接問題を解決させるのではなく、提案やアイデアに基づいて考えることも特に重要です。
- もう1つの意味は、最適化機能を改善するために率先して取り組む必要があるということです。コードを書く過程で、オブジェクト指向のアイデアやデザインパターンを積極的に紹介し、パフォーマンスの最適化(SQLステートメントを高速化する方法と仮想マシンのメモリパフォーマンスを向上させる方法)を「スタンド」に基づいて検討します。単独バージョン」プログラムクラスターを構築する方法を自問してみてください。既存のクラスター指向のコンポーネントを使用するにはどうすればよいですか?(たとえば、Eurekaを使用してサービス管理クラスターを構築し、リボンを使用してクラスター内の負荷分散を行うことができます)
- 最後に、スキルが多すぎる場合は、redis、メッセージミドルウェア、JVMチューニング、MySQL最適化、SpringCloudを学ぶ必要があります。
(3)オープンソースプロジェクトに参加する
実際、多くの面接戦略と共有では、情報を得ることができます。オープンソースプロジェクトに参加した面接官は、多くの場合、より人気があり、オファーを簡単に入手できます。
では、なぜオープンソースプロジェクトに参加したプログラマーがより人気があり、求められているのでしょうか。
- 大規模なオープンソースプロジェクトは、ほとんどすべて大規模なチームによって構築されており、非常に複雑です。このことから、あなたの個人的な能力と資質はテストに合格したと推測できます。
- オープンソースプロジェクトの開発は、個人の包括的な能力が大幅に向上したことを示しています。これらの能力には、「書面によるコミュニケーションスキル」、「処理するものの選択と交渉の方法の理解」、「Gitプロセス/ GitLabプロセスの改善」、「言語の理解」が含まれます。文法」など。待ってください。
- その他:オンラインでの評判を築き、個人の進歩に対するモチベーションを維持するなど。
(4)ソフトパワーを向上させ、よりプロフェッショナルになりましょう
私の個人的な理解によると、ジュニアプログラマーは学生に似ていますが、シニアプログラマーは「自分で作業する」能力が必要です。この移行には時間がかかり、過去2年間で私が懸命に取り組んできた方向性の1つです。
ソフトパワーを向上させ、よりプロフェッショナルなプログラマーになりましょう。
- 積極的にコミュニケーションすることを学ぶ。
- 問題を解決する能力を向上させ(バグ)、問題を解決する経験を積み重ねます(バグ)。
- 調整(ラングリング)能力:職場の部門を積極的に調整します。
- 協力してタスクや目標を一緒に完了することを学びます。
Share3:5年の経験を持つAliに変更するにはどうすればよいですか?
ステップ1:自分自身と相手を知る(仕事の責任を理解し、キャリアの成長パスを計画する)
①職務
仕事に応募するときは、履歴書に注意を払うことが多いですが、「仕事の責任」というキーワードは無視します。実際、これは面接の結果に影響を与えることがよくあります。
ことわざにあるように、「自分と敵を知っていれば、100回の戦闘で死ぬことはありません。」職務責任は、何をすべきか、どのように行うか、どのような基準を行うかを明確に示しています。プログラマーにとって、技術的な習熟度。その後の開発内容を明確に理解する必要があります。
例として見つけることができる会社を取り上げてください。BATの一次メーカーは言うまでもありません。
②成長経路
最初の正式な仕事の後、私は自分の将来の開発の方向性を非常に慎重に考えました。実際、プログラマーの成長軌道(プロモーションパス)が決定されるのは早いほど良いです。プログラマーの方向性は、技術職と管理職に大きく分けられており、これら2つの方向で評価される能力は依然として大きく異なります。
成長経路は次のとおりです。
- 管理職:初心者→テクニカルマネージャー→テクニカルディレクター→副社長→社長
- 技術職:初心者→上級エンジニア→技術専門家→ドメイン専門家→ドメイン権限
ステップ2:目標を策定する(明確で、測定可能で、達成可能で、時間制限のある目標を設定する)
職場では、必然的に「塩漬けの魚」になってしまうように、自分の目標を設定する必要があります。迅速に昇進したい場合は、目標から始める必要があります。目標は、SMARTの原則を満たす必要があります。
- 明確な
- 測定可能
- 達成可能
- 関連する
- 明確な期限があります(時間ベース)
簡単に言えば、私の目標は、1〜3年でどの段階に到達する必要があるか、3〜5年でどの段階に到達する必要があるかなどの段階に分割し、この段階で分割し続けることです。 。小さな目標を設定してから、大きな目標、つまり全体的な目標を構成して、達成がはるかに簡単になるようにします。
ステップ3:思考が得意(逆思考の育成、思考の最適化)
機械的なコーディングが必要ない場合、すばやく宣伝する方法は、最初に考え方を変え、ゆっくりと調整を開始し、いくつかの問題について考えるのが上手で、逆思考と最適化思考を育むことです。
いわゆる逆思考とは、なぜか自問することです。といった:
- なぜこのデータが必要なのですか?
- なぜこれらのことをするのですか?
- なぜ要約するのですか?
- なぜ計画するのですか?
- なぜコードレビューをするのですか?
思考を最適化することは、物事をより良くすることです。退屈な場合でも、効率や効果など、最適化の余地があります。すべてに最適化の余地がありますが、欠けているのは発見の目です。
以下に私の情報の一部を示します。それを必要とする友人はあなただけを必要とします:ワンクリックトリプル接続の後にアシスタントvx:bjmsb2020を追加します。
Share4:アリババの採用面接の合格率を向上させる方法は?
(1)履歴書を作成する
面接では、履歴書に基づいて、特に開発者に対して、プロジェクトの経験を見た後、多かれ少なかれ関連する質問をします。また、第一線のインターネット企業でさえ、プロジェクトについて質問します。準備してください。履歴書は特に重要です。
履歴書を作成するとき、それは真実でなければなりません。偽の履歴書は職場ではタブーなので、覚えておいてください。第二に、「理解、親しみやすさ、習熟度」という3つの言葉の違いを明確に区別する必要があります。テクノロジースタックの習熟度は、面接の質問の難しさに密接に関係しています。
もちろん、履歴書をスムーズに渡すために、私自身の履歴書を含むいくつかのテンプレートギフトパッケージも用意しています。
(2)内向きのプッシュを見つけようとする
学校の採用は簡単ですが、社会的な採用は困難です。これは一次インターネットでよく見られる現象で、新卒者の要件は比較的緩いですが、一定の労働生活を送っている人にとっては技術的要件が比較的高いため、一次工場に参入したい人が多いです。途中で社会採用が難しすぎて、履歴書も難しすぎると言われています。
実際、取るべき「近道」がいくつかあり、内部昇進の機会を見つけることができます。直接の社会的採用と比較して、確率は大幅に向上します。
(3)一定の幅と深さの技術を習得する
技術職であるため、企業には技術の習得の幅と深さに関する独自の要件があり、技術に関しては学歴はそれほど重要ではありません。したがって、技術レベルの向上に努めることがプログラマーの主な目標です。
では、テクノロジーをどの程度習得する必要があるのでしょうか。以下に示すように、私は特別に技術的なルートを整理しました。
人気のある技術フレームワークをマスターするにはどうすればよいですか?実際、私は学習経験を記録し、研究ノートをとる習慣があるので、いくつかの技術の要約と経験も持っています。
- Javaコア成長ノート:
- SpringBootコアテクニカルノート:
- SpringMVC開発コアノート:
- Springソースコードの詳細な分析:
- Redis学習の概要
(4)どの部門に直面していますか?面接で何を聞きたいですか?
面接の前に、面接している部署を事前に知って、宿題をする必要があります。たとえば、プロジェクトが主に金融に関連しているAlipayやAnt Financialなどのビジネスユニット、TaobaoやPinduoduoは電子商取引です。これらの違いは、インタビューの焦点にも影響します。
インタビュアーが尋ねるのが好きなことに関しては、あなたは蓄積するために通常の質問のブラッシングに頼る必要があります、質問をブラッシングすること、お互いから推論を引き出すことはまだインタビューに非常に役立ちます。
記事の最後に書かれたことわざ
続きを読む、もっと歩く。プログラマーとして、あなたのキャリアは35歳で終わると言われています。実際、このような年齢の不安を信じる必要はありません。35歳のプログラマーはたくさんいます。そうでなければ市場から排除されたい、まず第一に、あなたは価値があり、そうではありません価値を得るために、それがどんな職業であっても、それは社会によって排除されます。
学ぶことは決してあなたを失望させません。あなたが学ぶことから得られるものは常にあなたの最も貴重な富です。
上記の記事では、マインドマップ、メモの内容、面接の質問、その他の資料をすべて無料で共有できます。
必要なのはあなただけです:ワンクリックトリプル接続の後にアシスタントvx:bjmsb2020を追加します。