「インタビューが拒否されました」から「AntFinancial」、そして「Ali」まで、Androidエンジニアによる個人的な経験-インタビューの乾物

辞任の時期に、卒業したばかりの学生や3年から5年働いたばかりの学生を助けたいと思い、個人的な経験を簡単にみんなと共有しました。

1:個人的な経験

記事を書く前に、簡単な自己紹介から始めましょう。この部分はもっと湿っています。興味がない場合は、2番目の部分にスキップしてインタビューの質問を見てください。
私は16年で学士号を取得し、卒業1年目に福建省で働きました。17年で杭州に行きました。杭州に来る前は、面接の準備に長い時間を費やしました。自信に満ちていました。しかし杭州に到着したとき、私はまだ大きな挫折に遭遇しました。インタビュアーがあなたが言ったことはコンポーネント化とプラグイン化だと私に尋ねたとき、私はその時に行き詰まったことを今でも覚えています。面接前にたくさんの準備をしましたが、オープンソースのフレームワークデザインのアイデアをたくさん読んで、プロジェクトについて話すとき、プロジェクトの使い方についても少し吹き飛ばしましたが、面接官から簡単に言われたときコンポーネント化とプラグイン化の違いについて話す当時、私はしばらく答えることができませんでした。今それについて考えるのは本当に恥ずかしいです。

しかし、杭州はインターネットの首都としての価値があります。本当に多くの機会があります。それは私の準備に関係しているかもしれませんし、私が直面している会社が比較的小さいか、会社に人がいないためかもしれません。とにかく、私は覚えていますかなりたくさんのオファーがありました。友人に勧められた後、アリババの合弁会社を選びました。振り返って考えると、初めて杭州で働いた経験に本当に感謝しています。ここで多くの優秀な同僚に会いました(これらの同僚のほとんどはアリにも行きました)。素敵なボスがたくさん。

今振り返ってみると、その時に出会った同僚に本当に感謝しています。私たちのチームの雰囲気はとても良く、学習の雰囲気はとても強かったです。私たちはテクノロジーの共有をプライベートに組織することがよくありました。その間、私たちは最先端のインターネットテクノロジーだけでなく、学習習慣も大きく成長しました。この会社にはたくさんの機会があり、あらゆる機会を捉えました。半年後、卒業後2年ではなく、5〜6人のグループリーダーになりました。昇進の話をしていた時、卒業して2年で人をリードし始めたと裁判官が言ったのを今でも覚えています。これは挑戦であり、落とし穴です。スキルも経験も非常に不足しているので、しないでください。迷子になります。自分自身のために、常にテクノロジーに熱意を持ち、改善を続けます。私はまた、比較的小さな会社で働いていて、仕事を始めてすぐに人々を導き始める他の学生にもこの文章を与えます。

18年の半ばまでに、私はAnt Financialに移りました。これは、以前行っていたAlibabaのAntFinancialです。当時は、周りの多くの同僚がゆっくりとアリの申し出を受け取ったからです。実際、その段階のコンピュータープロフェッショナルとして、私たちは基本的にBATの夢を持っています(現在は2021年ですが、元のBATはまだそれほど香りがよくありません)。 。みんなが外に出てワクワクしているのを見て、アリのポジションに投票しました。それは少しの強さと少しの幸運と見なされるべきです。私はもともと顔のない釘でしたが、後で誤ってAntFinancialに行きました。

私は8月18日にAntFinancialに入社し、1月21日の終わりまで約2年半かかりました。私はまだ仕事をしていて、引き継ぎの段階にあるので、ここで話すのに不便なことがたくさんあります。私はここで多くの課題に直面しましたが、同時に多くの素晴らしい同僚に会い、物事を行うための多くの方法を学びました。Antを離れようとしています。ここでは、うまくいかなかったことも含めて、いくつかの仕事の経験を要約します。背後にいる学生から少し学ぶことができれば幸いです。

1:アリのような大規模な工場では、実際、多くの企業で同じです。コミュニケーションとフィードバックは非常に重要であり、盲目的に一生懸命働く人々は実際には不利です。着実に働いている数人の学生が「325」とマークされて去るのを見ました。ですから、上司や同僚の前で自分を詰め込み、表現することを学ぶ必要があります。

2:需要が多すぎ、運用と保守の作業負荷が多すぎます。通常、あらゆる種類の些細なことがすべての時間(睡眠時間や週末の時間も含む)を満たします。解放することを学ぶ必要があります(解決策について考えるか、助けを求めてください。または、他の人に渡してください))、外に出て、成長のために何か面白いことをしてください。この方法でのみ、KPIを取得しやすいプロジェクトに取り組む時間ができます。それ以外の場合は、理由について不平を言うだけです。あなたはとても忙しく、なぜあなたは誓いや疲れる仕事をしているのですか。実際、これらの苦情はまったく役に立たない。上司やほとんどの人の目には、あなたが何も処理できないことを示すことしかできない。結果指向の値では、プロセスは重要ではありません!

3:一般の人々の仕事の目的は、同じ条件下でより高い物質的利益を得ることに他なりません。あなたが本当に一生懸命に必死に働き、それでも上司の精神的な承認を得ることができず、あなたが望む物質的な報酬を得ることができない場合、あなたは自分自身を変えるか、環境を変えるか、または環境を変えるでしょう。

4:仕事は会社のものであり、技術、成長、健康だけが彼ら自身のものです。ここに居たくない、自分の居場所はあるけれど、鉄を打つときは頑張る必要があります。率直に言って、転職したいのは自分の強さにもよる。日常の仕事では、インターネット業界、テクノロジーの更新交換の速度が速すぎて、自己成長だけが王様の方法です。

2:面接経験

私の立場はAndroid開発です。Tencent、Ali、Didi、Netease、Meituan、Toutiao、Kuaishouなど、多くの第1層および第2層のインターネット企業があります。以下の記事は湿気が少なく、すべてインタビューの乾物です。 。私は皆のためにいくつかの「テストスコープ」を丸で囲み、インタビューであなたに少し助けをもたらすことができることを願っています。

私が最初に言いたいのは、面接時間は非常に重要であり、それはあなたの競争力とオファーを得る難しさを直接決定するということです。同じ仕事について、異なる時点での面接、難易度と要件は異なります。空室の程度や求人HCの数にも
よるので、杭州のインターネットでの私の観察によれば、一般的に年末にはより多くの機会があります。また、緊急性の高いポジションや「リリース」の可能性が高いポジションを推薦する人を知っていると、当然オファーを受ける可能性が高くなります。これは、前述の面接です。A少し運がいい。

2つ目のポイントはAndroidの基本です。私は4年半、約5年後に卒業し、開発エンジニアと開発専門家がいます(最近、一次工場と二次工場の開発専門家からも申し出がありました)。基本的に、各インタビューの準備として、Androidインタビューの一般的な「八股文」を作成します。アクティビティ、サービス、ハンドラーNDKなど、毎回尋ねられます。これらの基本は習得し、十分に理解している必要があります。

3番目のポイント:筆記試験の質問過去2年間のインタビューで、一部の大企業は基本的に筆記試験の質問を行っています。通常、これらの質問はNiukeオンラインによって作成されます。これらの質問のほとんどはアルゴリズムの質問であり、基本的にはleetcodeの元の質問です。したがって、面接の準備をしたい学生は、事前に適応し、LeetCodeにアクセスして質問を確認する必要があります。一般的に、面接官は面接の成績に応じて難易度の異なる質問をします。面接の質問にうまく答えれば、質問は比較的簡単になります。答えが良くない場合は、直接難しい質問をすることができます。

しかし、私の経験によれば、ほとんどの場合に出される質問は、leetcodeのホットな質問100の中程度の難易度の元の質問です。ここでは、参考のために、過去2か月のインタビュー中遭遇し元の質問のいくつかをまとめました。GitHubをクリックして、完全な質問バンクを表示してください。

第4に、一般的に使用されるさまざまなパフォーマンスの最適化とソースコード:彼の原則を習得する必要があります。時間があれば、コアソースコードを使用するのが最善です。平均的なインタビュアーは、特に小さな工場が大きな工場にジャンプするときに、これらのことを尋ねるのが好きです。 1。これらの知識ポイントについては、インターネット上の記事や自分の状況に応じて、対応する準備をすることができます。ここには物が多すぎるので、要約はしません。

5点目はプロジェクトです。プロジェクトについて話すとき、それがビジネスプロジェクトである場合、プロジェクトの難しさと解決策を反映する必要があります。高い同時実行性、大量のデータ、安定性の確保方法などが最適です。フレームワークプロジェクトの場合は、プラットフォームや高い信頼性を確保する方法などを反映する必要があります。次に、プロジェクトで行うより特徴的なこと、最も難しいことがあります(今回は、自分のものであると言える限り、それを行ったかどうかに関係なく、学び、適用することです)。

難しいプロジェクトに出会ったことのない学生も多いかもしれませんが、インタビュアーにとっては難しいプロジェクトではありません。現時点では、ミドルウェアのようなプロジェクトを準備して、話題になっている方がいいと思います。インタビュアー。、構成プラットフォームなどのタスクスケジューリングなどの現在の制限など、これらはすべてユニバーサルプロジェクトであり、独自のビジネスプロジェクトに簡単に統合できます

3:まとめ

辞任期間はつまらないので、ここ数年の仕事の経験を簡単に振り返り、この期間に蓄積された面接の経験を少しお役に立てれば幸いです。

4:最後に書く

私は今、新会社に加わりました。私自身の経験の一部を共有するために、以前にこの記事を書きました。さらに、9人のAlibabaアーキテクトが共同でリリースしたAndroidアーキテクトの成長学習ルートと学習資料を共有し
ます。1。アーキテクトが基盤を構築するための基本的なスキル:
Androidアプリケーションが開発されているJava言語では、SDKもJava言語で記述されているため、Java言語を学ぶ必要があります。さらに、kotlin言語は公式のAndroidホットプッシュを受けていますが、kotlinもJava言語にコンパイルされて実行されます。Androidの場合、SDKがkotlinで書き直されない限り、Java言語を学習する必要があります。また、AndroidapkのバックグラウンドサーバープログラムはJava言語で構築されている可能性が高いため、Javaの学習も避けられません。

では、Androidプログラマーが学ぶ必要のあるJavaのことは何でしょうか。AndroidプログラマーはCVコードブロックに慣れているため、Androidに関連する少し難しいJavaの基礎は、ほとんどの場合、ジェネリック、マルチスレッド、リフレクション、JVM、効率的なIO、アノテーション、シリアル化などのしきい値です。これは、 CVであり、プログラマーが原理を理解していない場合、具体的な内容を図に示します。

2.Androidフレームワークアーキテクチャ-AndlroidAdvanced UIとFrameWorkソースコードFrameWork
言えば、Githubにアクセスして、Tencent Matrixのソースコードを調べ、フレームワークの知識がどれほど重要かを知る必要があります。フレームドロップ監視、機能インストルメンテーション、低速機能検出、ANR監視、および起動監視と同様に、監視方法、監視に使用するメカニズム、機能インストルメンテーションの挿入場所、およびを知るには、フレームワークをより深く理解する必要があります。リフレクションどのクラス、どのメソッド、どの属性を反映する必要があるか。

3. 360°の全体的なパフォーマンスチューニング
のAndroidのパフォーマンスチューニングはキーがあり、その中の知識ポイントの多くは、含まれるデザインのアイデアやコードの品質の最適化、 プログラムのパフォーマンスの最適化、および開発効率の最適化を。私たちの開発者は、まとめのAndroid360°すべての側面として、これらを参照してください。性能調整。実際、ソフトウェア開発の過程で、多くの読者がシステムパフォーマンスの問題に遭遇したに違いありません。システムパフォーマンスの問題を解決するための主な手順は次のとおりです。

評価:適切なテストデータを取得するために、システムで多数の対象テストを実行します。
システムのボトルネックを分析する:テストデータを分析し、ホットスポット(ホットスポット、つまりボトルネック)を見つけます。
パフォーマンスの最適化:ホットスポット関連のコードを最適化します。

4.オープン
ソースフレームワークのデザインアイデアの解釈Android開発におけるオープンソースフレームワークのデザインアイデアの知識ポイントもより重要です。各社の採用において、Androidオープンソースフレームワークの要件は比較的厳しいことが誰もが理解できると思います。 。また、完全に理解したい場合は、一般的なAndroidホットフィックスフレームワーク、 プラグインフレームワーク、 コンポーネントフレームワーク、 画像読み込みフレームワーク、 ネットワークアクセスフレームワーク、 RxJavaレスポンシブプログラミングフレームワークIOC依存性注入フレームワークを整理して計画することを学ぶ必要があります最近のアーキテクチャコンポーネントJetpackおよびその他のAndroidサードパーティオープンソースフレームワーク。これらは、Androidオープンソースフレームワークの設計アイデアです。次の図に示すように:

5。NDKモジュールの開発
Androidプラットフォームは、誕生以来、CおよびC ++の開発をサポートしてきました。ご存知のとおり、Android SDKはJavaに基づいて実装されています。つまり、Android SDKに基づいて開発されたサードパーティアプリケーションは、Java言語を使用する必要があります。ただし、これは「サードパーティアプリケーションはJavaしか使用できない」と同じではありません。Android SDKが最初にリリースされたとき、Googleは仮想マシンDalvikがJNIプログラミングをサポートしていることを発表しました。つまり、サードパーティアプリケーションはJNIを介して独自のC動的ライブラリを呼び出すことができます。つまり、Androidプラットフォームでは「Java + C」です。プログラミング方法は常に可能でした。最近、最も人気のあるオーディオおよびビデオ開発テクノロジーもNDKモジュール開発に属しています。高度なオーディオとビデオに関するこの記事を読むことができます:高度なオーディオとビデオについては、この記事をクリックしてください:Androidプログラマーとして、オーディオとビデオの開発に精通しているため、冬がどんなに寒くても、あなたを凍らせることはできません


6.実際の戦闘へのアーキテクトトレーニング。
上記の知識を学んだ後、実際の戦闘に適用する必要があります。一般的な戦闘:アーキテクチャ設計、オンラインモールプロジェクト戦闘、ニュースクライアントプロジェクト戦闘、マルチフォーマットプレーヤープロジェクト戦闘、Gradle自動化プロジェクトすべての最優先事項です。

もちろん、小さなプログラムプロジェクトの実際の戦闘も、Android開発者が理解しなければならないことです

。7。WeChatの小さなプログラム
Aliアーキテクトの小さなプログラムに対する見解:

まず、アプレットが将来モバイル端末で輝くことができるかどうかに関係なく、アプレットを学習して習得しても害はありません。
2つ目のポイントは、現在のバージョンに関する限り、まだ閉じすぎているということです。小さなプログラムを開発することは、WeChatによって指定された小さなサークルを回っているように感じます。サークルで非常に優れた開発経験を得ることができるかもしれませんが、一歩も外に出ることはできません。
3つ目のポイントは、パフォーマンスと利便性の間で、最終的には利便性が優先されることが多いということです。
3つ目のポイントは、jsで開発できるものは、最終的にはjsで開発されるということです。

8.ハイブリッド開発とFlutter
は優れたアーキテクトになりたい考えています。習得する必要のある知識は少なすぎます。また、Flutter
in Flutterのように、新しいテクノロジーを学ぶことはできませんすべてがコントロールです。すべてがコントロールです!すべてがコントロールです!この概念を覚えておいてくださいテキストはコントロール、画像はコントロール、アイコンはコントロール、スキャフォールディングもコントロール、そしてAPP全体もコントロールです。

研究シラバスの研究ノート:

1.アーキテクトが基盤を構築するための基本的なスキル:
2。Andlroidの高度なUIおよびFrameWorkソースコード:3。
すべての側面での360°パフォーマンスチューニング:
4。オープンソースフレームワーク設計アイデアの解釈:

5. NDKモジュールの開発:
6。実際の戦闘へのアーキテクトトレーニング

7. WeChatアプレット:
8。ハイブリッド開発とフラッター:
アーキテクトへの道で迷子になり、知識が拡大したと感じた場合は、おそらくあなたも学んだでしょう洗練されていませんが、完全な学習の概要が欠けています。この記事が役立つと思います。中小企業は建築家の概念を持っていないかもしれません、そして大企業で建築家の地位を得るのは簡単ではありません。しかし、いずれにせよ、新しい技術を学び続け、自分のレベルを向上させる必要があります。どの企業に所属していても、強力な技術レベルが必要です。
記事のすべての資料と完全な建築家研究の概要は、ここから無料で直接入手できます。

おすすめ

転載: blog.csdn.net/Android578/article/details/114080314