Android 開発に 3 年間携わった後、廃業して立場を失うしかありませんでした。再出発して、適切な「大工場攻撃戦略」を見つけることが非常に重要です。

画像

バックグラウンド

最近、ネットユーザーが面接の体験談を投稿しているのを見かけましたが、内定を獲得した人もいれば、面接に落ちた人もいます。次に、Android 開発を約 3 年間続けた後に面接で遭遇した挫折や戸惑いを見てみましょう。

1. Android開発、3年間勤めた小さなスタートアップ企業が突然消滅、自分の「ピットポジション」はどこにあるのか?

まずは自己紹介をさせてください。私は現在、小さな新興企業で働いており、勤続3年以上ですが、給与は平均的です。なぜなら、会社も近年変革を遂げているからです。実務経験は大きく3段階に分けられます。

受託でも自社の主力製品でも、入社してから Android アプリ開発を始めるのが第 1 段階です。

第 2 段階は ROM 開発ですが、会社の規模が小さいため、ハードウェアや基盤となるものは別として、基本的に 1 人が ROM 全体 (MTK をベースにした特定の ROM に、Android フレームワーク レベルでの「奇妙な」カスタマイズを行う) の修正、コンパイル、リリースを担当します。

第三段階は現在です。従来のROMに対応した携帯電話の販売が期待に及ばず、今後は追加投資の予定はなく、基本的には簡単なメンテナンスを行うとしている。そして、私に割り当てられた新しいタスクは、Tensorflow、画像処理用の OpenCV 、トレーニングなどの機械学習に関するいくつかのことを行うことでした。

私自身に対する評価:

Androidアプリの開発能力は平均的ですが、一般的なアプリ開発業務には十分です(会社の公式プロジェクトのアプリ開発をしばらくやっていなかったのは事実ですが、スキルを放棄したわけではありません);

Android フレームワークについては通常の開発者よりも詳しい。

問題を解決し、新しいテクノロジーを学び、実践する能力は優れています (初めての AOSP のコンパイルから、その後の ROM 全体の開発とリリースまで。または、機械学習にまったく慣れていない状態から、一般的な機械学習アルゴリズムを記述し、これらの要件の一部を達成するために Tensorflow を使用できるようになるまで)。

昨日の面接といえば、面接官は用意した Android の面接質問に沿って、ほぼ一つずつ質問をしていました。例: ビューのカスタマイズ、ハンドラー メカニズム、メモリ リークなど。私のパフォーマンスには非常に満足できず、彼の質問にはほとんど答えることができましたが、私の整理した言葉と説明の結果は満足のいくものではありませんでした。自分の表現力の問題が大きいですが、記述式の試験問題ならもっと冷静に答えられると思います。私がもっと楽しみにしているのは、私自身のプロジェクトの経験についての説明です。そこが他の候補者と違うところだからです。面接官は私の履歴書のプロジェクト経験については全く質問しませんでした。最終的には自分から話そうと主張しましたが、面接官は興味を示さず、私の話した内容は非常に無味乾燥なものでした。最終面接は以上です。

私自身の考え:私には、これらの「Android の標準面接の質問」にきちんと答える準備ができていませんでした少なくともこれらの基本的な質問は 1 ~ 2 文で明確に説明できる必要があります。私と他の応募者の違いはまったく反映されていませんでした。より早く、より安定して良い開発ができ、フレームワークやソースコードを深く勉強でき、難しい問題も解決できると思うのですが、面接官に同じように思わせるにはどうすればよいでしょうか?

2. Android で 3 年間働いてきましたが、会社は賃金を支払えなくなりました。どうすればよいですか?

座標は重慶にあり、私は 3 年以上 Android に取り組んでいます。卒業後に入社した会社で給料が払えなくなり(最近は3ヶ月前の給料が分割払いになった)、なんとか活路を探し始めました。

以前、グループ内のおじさんが「人を募集したい」と毎日言っていました。それから、いわゆる参考資料をお願いしました。

相手が aosp...グループを率いているか何か...にコードを貢献したと書いているのを見ました。

レンガ移動業者として、この経験はどこから来たのでしょうか?

そこで皆さんにお聞きしたいのですが、履歴書はどうやって書いていますか?

画像

次に、私の個人的な意見をお話しさせていただきます

最初のネチズンの最後の文について、「開発作業をより速く、より安定して行うことができ、フレームワークやソースコードを深く研究し、いくつかの難しい問題を解決することができます。どうすれば面接官にそう思わせることができますか?」

彼の悩みは、自分の欠点(面接の質問に対する準備不足)を補うために、どのように見せ場を見せるかということにあります。これは知識であり、あなたの暗記的な質問の意味をはるかに超えていると思います。

1. フロントエンド/バックエンド/フレームワーク/基盤となるハードウェア/アルゴリズムのいずれを行っているかに関係なく、私たちが提供するものは最終的にはモバイル アプリです。したがって、(デモではなく) 表示用に完成したアプリが必要です。これは、面接官を混乱させるナンセンスよりも、彼に好印象を与えます(相手のレベルが低いほど、これはより効果的です)。競合製品を同時に比較し、利点を強調することが最善です (もちろん、競合製品を選択するのは自分自身です)。相手が、どうやってそれを達成したのかを尋ね始めたら。ここは私たちのホームフィールドです。

2. アプリ開発以外の専門知識も必要です。上記のネチズンは、使用できるTFについて言及しました

3. 面接のリハーサルも必要です。質問して答える人がいないなら、誰かが私たちの言葉に協力してくれる方が良いです。目的ははっきりと話すことです。言うのは簡単ですが、初対面の面接官はうまく話せない人も多いです。これは人の第一印象に直接影響します。技術面接では、言葉の使い方にさらに注意を払う必要があります。1と合わせて使うと良いでしょう

面接の質問を磨きたい/覚えておきたいですか? それは必要だと思います。(上記は準備不足の場合です)

1. 面接はより実践的であり、一時的な対応の予備としても使用できます 2. 態度を示します。「質問の暗記に多くの時間を費やす」こと自体は面接で重視されることであり、その効果はまた別の話です。3. 自分が持っている知識を確認し、不足しているものを埋め、定着し、深めます。どう見てもいいことだ。あなたが質問をブラッシュアップしているのを面接官が見て、質問をブラッシュアップすることが悪い点であると考える場合、それは彼の領域が狭すぎることを意味します。

アンドロイド技術の開発。人材市場の観点から見ると、実際にはトップヘビー (フロントエンド) とライトフット (バックエンド) が存在しており、この種の当惑を抱くのは正常なことです。そして、上記のネチズンの 3 年間の技術経験を考えると、視野は Android だけに限定されるべきではないと思います。

履歴書について

基本情報部分:

1. 履歴書の冒頭には、名前、連絡先、メールアドレスを記入できます。(目を引くので、他の人があなたに連絡したいときに一目でわかります)。2. 目標とするポジション: 明確で、曖昧にしないでください。会社が発行する採用ポジションに記入するのが最善です (Haitou の一般的な効果は良くありません)。 3. キャリアの意図: ビジネス機能モジュールの開発、アーキテクチャ設計など。4. 目標給与: 対面でのディスカッションを書くことも、目標月給 (できれば範囲に基づいて) を書くこともできます。

職歴、学歴:

985機関と211機関であれば、基礎紹介の後、実務経験の前に書くことができます。一般の学部や短大であれば後からでも大丈夫です。

職歴: 職歴に基づいて、できるだけ多くの内容を記載します。あなたが具体的に責任を負っていること、または関与していることを書き留めてください。通常、プロジェクトには次のモジュールが含まれます。

1. システムの分析と設計に参加 2. 機能モジュールの開発(ここでどのような機能を指定できるか) 3. 機能上の欠陥の修正 4. システムの保守(システムの問題の処理、システムのアップグレード)(すべてのプロジェクトが使用されます)

専門的なスキル:

1~2年の実務経験(または1~2年のライター経験)があれば、基本的なスキルは導入できるでしょう。

企業が募集するポジションの要件に合わせて、優れたスキルを重点的にアピールするのがベストですし、得意な技術をアピールすることも可能です。他の人がトレーニング クラスを受講したことがわかるよう、技術的な名前を多く書くことは避けてください。

プロジェクトセクション:

1. まず環境を紹介します: Jetpack + glide + OKHTTP の使用など) 2. プロジェクトの説明部分: シンプルにして 2 ~ 3 行にまとめます。面接官は基本的にプロジェクト名を知っており、一般的には詳しく見ません。3. 焦点: 責任の説明は詳細であればあるほど良いです。

技術的な説明:

使用されている技術的なハイライトを示します。スキルに自信がない場合は注意して使用してください。この部分については面接官が直接質問するのが一般的です。しかし、実務経験がある場合は、仕事で使用されている新しくて難しいテクノロジーをいくつか要約することができます。これはおまけの質問です。

画像

Android開発の方向性

多くの人は、Android テクノロジーの奥深さは深くなく、テクノロジースタックはそれほど大きくなく、Android でのキャリア開発には限界があると考えていますが、これは大きな誤解です。

まずテクノロジーについて話しますが、Android テクノロジー スタックは時間の経過とともにますます大きくなり、主に Android アプリケーション開発、リバース セキュリティ、オーディオとビデオ、車両のインターネット、モノのインターネット、携帯電話開発、SDK 開発など、細分化された分野が増えています。

また、Androidアプリ開発はキャリア的にもCTOへの昇進が難しいのも事実で、一般的なCTOはバックエンドが中心ですが、その理由は主に以下の2つです。

1. バックエンド技術スタックは非常に早く成熟しました。私が 8 年前に Android 開発に切り替えたとき、30 代の Java 開発者はすでに非常に優秀でした。時が経つにつれて、バックエンド技術専門家の数は Android 専門家よりもはるかに多くなっています。彼らはまた、より強力です。彼らが技術マネージャーだったとき、私たちはまだレンガを動かしていました。2. バックエンドは確かに全体的な状況を調整することができ、これは会社のビジネスにおいて重要な位置です。

しかし、最も重要な点を見落としていました。バックエンドにいるのに CTO になれるでしょうか? それも大変だと思いますので、高いところばかりに目を向けるのではなく、まずはどこまで行けるかを考えてください、山の中腹に立って下の景色が開けないというのは無理があります。

自分自身の競争力を高める方法

セグメントを選択する

Android にはアプリケーション開発、リバースセキュリティ、オーディオ&ビデオ、IoT、IoT、携帯電話開発、SDK 開発、スマート TV ボックス開発など、さまざまな分野が細分化されており、いずれかの分野を選択して深化していきます。たとえば、オーディオとビデオですが、私が Android を始めた 8 年前は、オーディオとビデオは (PC 側で) 非常に儲かり、給料もバカ高かったのですが、今ではモバイル側では、オーディオとビデオは以前ほど儲かっておらず、フレームワーク開発が良い選択となっています。
半減期の長い知識を学ぼうとする

知識の半減期とは、知識の更新サイクルが短くなると、知識の分裂速度が加速し、知識が陳腐化するサイクルを指します。英語教師や外科医など、知識の半減期が長い職業は、年齢を重ねるにつれて価値が高まり、知識の更新が遅く、ほとんど陳腐化することがありません。私たちプログラマーは、この点では全く比較にならないのですが、知識の半減期は比較的短く、フレームワークも数年で消滅してしまうことが多く、プログラマーは常に新しい知識を学習する必要があり、一人一人の時間とエネルギーには限りがあるため、知識の半減期に合わせて戦略的に学習することが特に重要です。

画像

上記の半減期図は完全に正確ではありませんが、参考にはなり、他の技術分野の場合にもこの半減期図を参照してください。この絵は、RN や小さなプログラムを学ばないで、自分の研究に基づいて半減期の長い知識をできるだけ学べということを示しています。

引き算をして、一つの技術に特化してみる

今日の社会では、技術分業がますます細分化されており、分業が細分化されるということは、ほとんどの企業(小規模工場を除く)が専門的な人材(できれば1つの分野および複数の分野に精通している)を必要とすることを意味します。あなたの周りで目立っている技術者のほとんどが 1 つのテクノロジーに依存していることがわかりますが、熟練していないテクノロジーが多数存在することはほとんどありません。例えば、武道の世界では、決闘の際に達人が同時に自分の武術を披露するが、家政婦が武術が苦手で刻一刻と罵倒されれば、残った武術をバカにする必要はない。現実版を思い出して、大手企業に Android の面接に行った結果、Android の技術についてはあまり詳しくなく、面接官は残りのフロントエンド技術、バックエンド技術、Python などを理解することに興味がなく、色々と罵倒されました。なので、知っているスキルが多ければ多いほど良いというわけではなく、引き算を上手にやって、まずは一つのスキルに特化して、それから他のスキルを学ぶ必要があります。

Android の注目のテクノロジーについて語る

最近ではAndroid関連のホットな技術も頻繁に登場しており、何もすることがないときはつい画面を更新してしまうのですが、これらのホットな技術について私の見解をお話しさせていただきます。

  • Kotlin は、知識の半減期から判断すると、学習する価値のある言語ですが、Kotlin が使用しなければならない競争力をまだ示しておらず、多くの企業での使用コストが比較的高いため、普及させるのはまだ非常に困難です。
  • Flutter、知識の半減期の観点から見ると、このフレームワークは長くは存在しません。現在、技術的余力のある一部の企業が実験を試みていますが、企業の技術的余力が十分でない場合、軽率にモルモットとして行動するのは明らかに賢明ではありません。

これらのテクノロジーはどちらもすべての人に習得することをお勧めしますが、過度の競争力を期待しないでください。Li Si は 1 週間で習得でき、Zhang San も同様に習得できます。

  • Android 開発では最初から最後まで Framewrok が第一の選択肢であり、かつてはアプリケーション開発が普及しすぎて習得が難しいため、この業界に参入する人は多くありませんでしたが、現在ではアプリケーション開発市場は飽和しています

現在、大企業は、より安定した効率的なアプリケーションを開発できるように、開発者が Android システムをより深く理解することを必要としています。そのため、就職活動においては Android Framework の開発経験がますます重要になってきます。

終わり

最後に、学習資料を共有します。

記事の内容が多く、スペースが限られているため、情報は PDF ドキュメントにまとめられていますが、完全なドキュメントが必要な場合は、WeChat を追加すると無料で入手できます。

「Androidフレームワークソースコード開発の秘密」

この学習マニュアルは、Android システムのソース コードを深く分析し、Android フレームワークの初期化プロセスと主要コンポーネントの動作原理を詳細に説明し、開発者が Android アプリケーションの設計と開発をよりよく理解できるように、例と事例を通じて Android フレームワークの中心となる概念とテクノロジを紹介することを目的としています。
このマニュアルは、Android アプリケーション開発の一定の経験を持つプログラマーに適しており、開発者が Android フレームワークの詳細な学習を通じてこのテクノロジーをよりよく理解し、習得できるようにすることを目的としています。

ここに画像の説明を挿入

第1章 システム起動プロセスの分析

Android システムの完全な起動プロセスは、システム レベルの観点から Linux システム レイヤー、Android システム サービス レイヤー、Zygote プロセス モデルの 3 つの段階に分けることができます。知識ポイント: 最初のセクション Android 起動の概要、2 番目のセクション init.rc 分析、3 番目のセクション Zygote、および 4 番目

セクション
インタビュー

質問

ここに画像の説明を挿入

「史上最も詳細な Android バージョンの kotlin コルーチン エントリの高度な戦闘」

目次

ここに画像の説明を挿入

第 1 章 Kotlin コルーチンの基本の概要

  • 1.1 コルーチンとは
  • 1.2 Job、Deferred、およびコルーチンのスコープとは
  • 1.3 Kotlin コルーチンの基本的な使用法

ここに画像の説明を挿入

「フラッターのテクニカル分析と実戦、ファミリーバケット学習教材」

目次

ここに画像の説明を挿入

第 1 章 なぜ Flutter がクロスプラットフォーム開発の究極の選択肢であるのか

  • 01 どうしてそうなるの?
  • 02 クロスプラットフォーム開発
  • 03 フラッターとは
  • 04 フラッター機能

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/Gaga246/article/details/131680567