Androidの高度な学習方法の概要(Ali P7の高度な学習に関する完全な情報を含む)

バックグラウンド

2013年にAndroid開発のためにJavaに切り替えました。小さな工場にいました。HuaweiやOPPOなどの大きな工場にも行きました。2018年4月にAlibabaに入社し、現在に至っています。

最近、バックグラウンドでクラスメートからプライベートメッセージを受け取ることがよくあります。「もうすぐ卒業するか、1、2年卒業して、Android開発関連の仕事に従事しているので、何を学ぶべきかわかりません。つまり、私も模索して学んでいるのですが、学習ルートが正しいかどうかわからないので、とても戸惑い、提案をお願いします。

実際、ほとんどの開発者は同じような経験をしています(私もそうです)。プロジェクトが完了してメンテナンス段階にあるとき、彼らは仕事で忙しくなく、自分で学びたいと思っていますが、何を学ぶべきかわかりませんか?どこから始めますか?東にハンマー1つ、西にスティック1つで、最終的には収穫がほとんどありません。それから私は自分自身を疑うようになり、学ぶことにうんざりし、それから落ちて立ち止まりました。

では、Android開発者として、独自の学習ルートをどのように計画し、中級および上級レベルに段階的に進むのでしょうか。この記事は私自身の意見のいくつかを整理します。

学習知識のまとめ

1. Javaseの基本

1.1 Javaの基本的なデータタイプと式、分岐とループ。
1.2 StringおよびStringBuffer、正規式の使用。
1.3オブジェクト指向の抽象化、カプセル化、継承、多態性、クラスとオブジェクト、オブジェクトの初期化と回復、コンストラクター、このキーワード、メソッドとメソッドのパラメーター受け渡しプロセス、静的キーワード、内部クラス。
1.4オブジェクトのインスタンス化プロセス、メソッドカバレッジ、最終キーワード、抽象クラス、インターフェイス、および継承の長所と短所の分析;オブジェクト多態性:サブクラスと親クラス間の変換、抽象クラスと多態性のインターフェイスアプリケーションと多形性の利点。
1.5 Java例外処理、例外のメカニズム。
1.6一般的に使用される設計パターン:シングルトン、テンプレート、戦略パターン。
1.7 JavaAPIの概要:基本データタイプのパッケージ化クラス、システムクラスとランタイムクラス、DateクラスとDateFomatクラスなど。
1.8 Javaコレクションの概要:Collection、Set、List、ArrayList、LinkedList、Hashset、Map、HashMap、Iterator、およびその他の一般的に使用されるコレクションAPI。
1.9 JavaI / O入力および出力ストリーム:FileおよびFileRandomAccessクラス、バイトストリームInputStreamおよびOutputStream、文字ストリームReaderおよびWriter、および対応する実装クラス、IOパフォーマンス分析、バイトおよび文字変換ストリーム、パッケージングストリームの概念、および一般的に使用されるパッケージング、コンピューターコーディング。
1.10 Javaの高度な機能:リフレクションとジェネリック。
1.11マルチスレッドの原則:プログラムでマルチスレッド(スレッド、実行可能)を作成する方法、スレッドの安全性の問題、スレッドの同期、スレッド間の通信、デッドロック。

2. AndroidUIプログラミング

2.1 Android開発環境の構築:Androidの紹介、Android開発環境の構築、最初のAndroidアプリケーション、Androidアプリケーションのディレクトリ構造。

2.2 Androidプライマリコントロールの使用:

TextViewコントロールの使用方法
Buttonコントロールの使用方法
EditTextコントロールの使用
方法ImageViewの使用
方法RadioButtonの使用
方法チェックボックスの使用方法
メニューの使用方法

2.3 Androidの高度なコントロールの使用:

使用するリストビュー方法を使用する方法
に使用するGridViewの方法を
使用するアダプタ方法を
使用するようにスピナー方法を
使用するGALLARY方法を
ScrollView
RecyclerViewを

2.4ダイアログボックスとメニューの使用:

ダイアログの基本概念
BlockquoteAlertDialogの使用
方法DatePickerDialogの使用
方法メニューの使用方法
メニューのカスタマイズ方法

2.5コントロールのレイアウト方法:

線形レイアウトの使用方法
相対レイアウトの使用方法

2.6マルチアクティビティ管理:

AndroidManifest.xmlファイルの役割インテント

使用する方法インテント使用してデータを送信する方法
アクティビティ開始する方法インテント
フィルターを使用する方法
アクティビティグループを使用する方法

2.7カスタム制御の実装方法:

カスタムListViewを実装する
方法折りたたみ可能なListView使用する方法
カスタムアダプタを使用する方法
カスタムビューを実装する方法
動的制御レイアウトを実装する方法
プルアップリフレッシュプルダウンロード詳細

3.Androidネットワークプログラミングとデータストレージ

3.1 Androidプラットフォームに基づくHTTP通信:

Httpプロトコルのレビュー
Getメソッドを使用
してサーバーにデータを送信する方法POSTメソッドを
使用してサーバーにデータを送信する方法Httpプロトコルを使用してマルチスレッドダウンロード
を実現するHttpプロトコルを使用して再開可能な送信を実現する

3.2 Androidデータストレージテクノロジー:

SQLite3データベースの概要
SQLステートメントのレビュー
SQLite3プログラミングインターフェイスの概要
SQLite3トランザクション管理
SQLite3カーソルの使用法SDCardアクセスするための
SQLite3パフォーマンス分析
メソッド
SharedPreferencesアクセスするためのメソッド

第三に、進歩への道(初級->中級->上級)

1.ジュニアエンジニア

Xiao Mingは、これまでAndroid開発に携わったことがありませんでした。彼は新卒で、給与は13kでした。その後、Xiao Mingは学校のリクルーターとしてBaiduに入学しました。それでは、Xiao Mingはどのようにしてジュニアエンジニアになることを学ぶ必要がありますか?現時点では、Xiao Mingはプログラミングの基本、データ構造、C言語に一定の基盤を持っており、Java構文などすべてを十分に理解しています。AndroidにはJava言語があります。無力なのは、XiaoMingがAndroidに関与していないことです。

現時点では、Xiao Mingは、本の内容を研究するための入門書を用意し、1年かけてAndroidの公式ドキュメントのトレーニングとガイドを読み、ブログやメモをとって要約する必要があります。自分で作成することをお勧めします。すべてのブログにはより多くの価値があります。1年間の勉強で、誰もが中級エンジニアのレベルに到達できると思います。

スキル要件:


  • 4つの主要コンポーネントの使用方法、サービスの作成方法、レイアウト方法、シンプルなカスタムビュー、アニメーション、その他の一般的なテクノロジーなどの基本的な知識ポイント

  • おすすめの本
    「CrazyAndroid」

2.中級エンジニア

1年間の懸命な努力の末、Xiao MingはついにAndroidの中間エンジニアになり、彼の月給は17kになりました。中級エンジニアとして、彼はすでに社内で多くの物理的な仕事をすることができますが、いくつかの非常に重要なタスクはシャオミンだけでは実行できません。現時点では、シャオミンは以下に示すように多くを学ぶ必要があります。

  • AIDL: AIDLに泊まったが、その動作原理を理解するTransactとonTransactの違いを理解します。

  • バインダー: Javaレイヤーからバインダーの動作原理を理解し、Parcelオブジェクトの使用法を理解します。

  • マルチプロセス:マルチプロセスの操作メカニズムを習得し、メッセンジャー、ソケットなどを理解します。

  • イベントの分布:弾性スライディング、スライディングコンフリクトなど。

  • ビューで遊ぶ:ビューの描画原理、さまざまなカスタムビュー。

  • アニメーションシリーズ:ビューアニメーションと属性アニメーションの違いに精通し、属性アニメーションの動作原理を理解している。

  • パフォーマンスの最適化を理解する:マットなどのツールに精通している

  • いくつかの一般的なデザインパターンを知っている

研究方法

高度な本を読んだり、Androidのソースコードを読んだり、公式文書を読んだり、関連する技術記事を自分で書こうとしたりするには、ある程度の技術的な深さと自己思考が必要です。この段階の学習プロセスでは、誰にとっても厄介な2つのポイントがあります。1つはソースコードの読み取りであり、もう1つはカスタムビューとスライドの競合です。

ソースコードの読み方は?これは頭​​痛の種ですが、ソースコードを読む必要があります。ソースコードを読むときは、コードの詳細に深く入り込まないでください。コードフローに注意を払い、アプリケーションレイヤーの開発に役立つ結論を見つけるようにしてください。また、ソースコードのクラスやメソッドのコメントをよく読んでください。ソースコードがわからないときは、ソースコードのコメントがソースコードの動作原理をよく理解するのに役立ちます。このプロセスは難しいですが、他に方法はありません。

カスタムビューで遊ぶ方法は?私の提案は、カスタムビューを学習することによってカスタムビューを学習することではありません。なんでそんなこと言うの?カスタムビューの種類が多すぎるため、あらゆる種類のゴージャスなカスタムエフェクト、学習方法とプレイ方法!現象を通して本質を見て、カスタムビューに必要な知識ポイントにもっと注意を払う必要があります。要約は次のとおりです。

  • ビューのスライド原理を理解する

  • 弾性スライドを実現する方法を理解する

  • ビューのスライドの競合を理解する

  • 測度、レイアウト、およびビューの描画を理解する

  • 次に、既存のカスタムビューのいくつかの例を学びます

  • 最後に、カスタムビュー、いわゆる一定の変更を取得できます

シニアエンジニアの技術レベルに達するには、さらに1〜2年かかります。個人的には、「Android DevelopmentArtExploration」や「AndroidHeroes」を通じて、このプロセスを0。5〜1年に短縮できると思います。シニアエンジニアの技術レベルに到達したからといって、すぐにシニアエンジニアになることができるわけではありませんが(転職するかどうかにかかわらず、機会の影響を受けます)、テクノロジーに到達したときにシニアエンジニアになるのは簡単なことです。

スキル要件:

  • やや詳細な知識ポイント
    AIDL、メッセンジャー、バインダー、マルチプロセス、アニメーション、スライディングコンフリクト、カスタムビュー、メッセージキューなど。

  • おすすめの本
    「AndroidDevelopmentArtExploration」

3.シニアエンジニア

Xiao Mingは、月給2万ドル、在庫数が多く、切望されているシニアエンジニアになりました。現時点では、Xiao MingのAndroidレベルはすでに良好ですが、Xiao Mingの目標はシニアエンジニアです。XiaoMingは、シニアエンジニアの月給が3万人以上に達する可能性があると聞きました。

以下に示すように、Androidのシニアエンジニアになるためには、学ぶべきことがもっとありますが、それほど具体的ではないものもあります。

  • 「やや深い知識のポイント」で定義されている内容の理解を深め続ける

  • システムのコアメカニズムを理解します。

  • SystemServerの起動プロセスを理解する

  • メインスレッドのメッセージループモデルを理解する

  • AMSおよびPMSの動作原理を理解する

  • 「アプリケーションにはいくつのウィンドウが存在しますか?」という質問に答えることができますか?

  • 4つの主要コンポーネントの一般的なワークフローを理解する

  1. 基本的な知識ポイントの詳細

  2. アクティビティの起動モードと異常な状態でのさまざまなアクティビティのパフォーマンス

  3. サービスのonBindとonReBindの関連付け

  4. onServiceDisconnected(ComponentName className)とbinderDied()の違い

  5. さまざまなバージョンでのAsyncTaskパフォーマンスの詳細

  6. スレッドプールの詳細とパラメータ設定

  • デザインパターンに精通し、建築意識の学習方法を持っている

現時点では、具体的な学習方法はなく、本を読んだり、ソースコードを読んだり、プロジェクトを行ったりするだけで、いろいろなことをまとめて、知識を統合して体系的な感覚を形成しようとしています。同時に、この段階でのアーキテクチャには一定の要件があります。アーキテクチャは抽象的ですが、設計パターンは特定であるため、設計パターンの学習を強化する必要があります。デザインパターンの研究については、最近、新刊「Androidソースコードデザインパターンの分析と実際の戦い」をお勧めします。デザインパターンを学ぶだけでなく、Androidソースコードでデザインのアイデアを体験することもできます。最近、この本も読んでいます。

スキル要件:

  • もう少し深い知識

  • システムコアメカニズム

  • 基本的な知識ポイントの詳細

  • デザインパターンとアーキテクチャ

  • おすすめの本:
    「Android開発アートの探求」、「Androidソースコードデザインパターンの分析と実際の戦い」、「Androidカーネルの分析」

学習ルートと情報共有

学習ルート、何を学ぶべきか、そして将来の進め方を知っているとき、理論が多すぎる場合は練習する必要があります。ここに約40Gの学習資料とビデオをまとめました。それを必要とする友人はそれを好きになることができます+注意を払った後、プライベートメッセージで[888]に返信して、入手方法を入手してください。

ディレクトリ編成:

1. [AliP7高度な学習教材のフルセット+ビデオ]

2. [Android Core Advanced TechnologyPDFドキュメント]

3. [2020年のBATTMDインタビューの実際の質問の分析]

AliP7高度な学習教材のフルセット+ビデオ

私は、Alibaba P7レベルのAndroidアーキテクト向けの学習資料一式をまとめました。これは、中高レベルに進みたい小規模パートナーの詳細な学習と改善に特に適しています。

主にBytedanceと、Tencent、Ali、Huawei、Xiaomiなどの第一線のインターネット企業の主流のアーキテクチャテクノロジーが含まれます。必要な場合は、それを取り除いてください。

AliP7高度な学習教材のフルセット+ビデオ

Androidコアナレッジノート

NDKモジュール開発、Androidフレームワークアーキテクチャ、フラッター、コトリンなど、合計8つのモジュール学習資料。

Androidコアナレッジノート

体系的で方向性のある学習だけが、一定期間内にスキルをすばやく向上させることができます。

このナレッジシステムは、すべてのAndroidプログラマーが学習するのに適しています。上記のカタログには、ナレッジポイントに関する詳細な説明と紹介があります。このナレッジポイントのすべてのコンテンツを習得すると、質が向上します。また、多くのインタビュープロセスが要約されています。遭遇した質問と対応する回答の要約。

2020 BATTMDインタビュー質問分析

これらの質問は、ByteDanceだけでなく、Tencent、Ali、Baidu、Xiaomi、LeTV、Meituan、58、Cheetah、360、Sina、Sohu、およびその他のトップインターネット企業がインタビューするときに友人から尋ねられる質問です。そして、それらのほとんどは答えを整理しました。これらの知識ポイントに精通していると、技術面接の最初の2ラウンドに合格する可能性が大幅に高まります。

2020 BATTMDインタビューの質問

やっと

世界は変化し、テクノロジーは進化しています。学び続けることによってのみ、私たちは夢に近づくことができます。この停車地は私の最後の停車地になりますか?「意志があれば、すべてが実現し、2番目の青雲は最終的にチューに属します。丹念に空に生き、勇気を払い、さらに3000人がウーを飲み込むことができます。」準備ができている人のために機会が予約されていることを主題に言いたいのですが、あなたが少し自分自身をプッシュしなければ、あなたはあなたがどれほど良いかわかりません。時間は短く、プレッシャーは高いとは言わないでください。プレッシャーに抵抗する限り、将来最も疲れてストレスの多い時間は、人生で最も急速に成長する段階でもあることがわかります。

上記の情報が必要な友達は、いいね+フォローして、プライベートメッセージ[888]で返信して、情報を入手することができます。

おすすめ

転載: blog.csdn.net/star_nwe/article/details/109354701