大手3社(JD.com、Sina、Didi)からオファーをもらうまでに1ヶ月半かかりました。皆様のお役に立てれば幸いです。
一般的に、面接は一般的に履歴書に基づいています。一般的に、最初に基本を調べ、次に知識システムの完全性を調べ、次に限界を調べ、最後に学習能力、コラボレーション能力などのいくつかのソフトスキルを調べます。コミュニケーション能力、未知の問題を分析して解決する能力、圧力に抵抗する能力など。
個人的体験
事前に警告されているのは、無駄を先取りすることなく、事前に警告されています。
準備期間
面接の前に、基本的な知識を体系的に確認してから、自分のプロジェクトの経験を確認してハイライトを見つけるのが最善です。レビューサイクルの個人的な推奨事項は3か月から6か月です。時間は長すぎないようにしてください。長い時間が経過すると、たるんだり、密室で作業したりするのは簡単です。外に出て水をテストするのが最善です。あなた自身の学習効果をテストするために3ヶ月後。
レビュー計画の策定や進捗状況の管理も非常に重要です。他の人の学習計画を参考にして、実際の状況に応じて適切に調整することができます。
レビュースキル
私はいつも学習への近道はないと思います。私は「良い記憶は悪い文章ほど良くない」と信じており、「本を百回読んで何が正しいかを知る」ことも信じています。
必ず練習してください。プログラマーにとって、それは単なる暗記ではありません。検証するデモを書くなど、より良い学習方法があります。たとえば、ソースコードを学習する過程で、自分でソースコードを調べて、それを数回読む必要があります。もう一度言ってください。
勉強のメモは、メモを取るだけでなく、経験、テキストメモ、絵を描く、要約などを書くためにも非常に重要だと思います。さまざまな方法がありますが、真剣に受け止めなければなりません。自分の記憶も信用しないでください。多くの場合、理解を深めるために記憶を繰り返すだけです。
知識ポイントを学習する過程で、What、How、Whyの3つの軸に従うことができます。これは何?それはどのように行われますか?なぜそれがこれを行うのですか、原則は何ですか、そしてより良い方法はありますか?
レビューの過程で、小さな知識のポイントから学び始めます。レビューの特定の段階で、これらのことをポイントから表面へとつなげようとすることができます。
さらに、レビュープロセスでは、プロジェクトをフィードバックできるように、時間内に行ったプロジェクトと組み合わせる必要があります。面接中に話す方法を理解し、一部のプロジェクトでは知識のポイントについて話します。接続あなたの知識システムが確立されるように、別の知識ポイントに。
履歴書を準備する
履歴書はあなたの足がかりです。特定の履歴書テンプレートは提供しません。参考のためにオンラインで多くの優れたテンプレートがあります。最も重要なことは、履歴書の内容を完全に理解し、深く掘り下げて、このプログラムを選んだ理由、プログラムの長所と短所、より良いものがあるかどうかなど、いくつかの理由を尋ねる必要があると思います。仕方。
面接官は通常、履歴書に基づいて総合力をチェックするので、履歴書を書くときに怠惰になってはいけません。論文を書く態度を使って、慎重に修正して再試行し、数人の大物に助けを求めてください。改訂して提案を行います。
回答スキル
一般的に、面接とは、あなたと面接官が知り合い、コミュニケーションをとるプロセスです。大規模な工場の面接官はたいていいいです。知らない問題に遭遇した場合は、他の人に聞いてみてください。時間。顔を失うことを恐れないでください。面接はお互いを学び、コミュニケーションするプロセスです。オファーは目標ではなく、プロセスです。
また、特定の技術や知識のポイントの詳細がわからない場合もありますが、一般的な設計のアイデアは知っているので、可能な限り理解に答えることができ、水平方向の同様の技術を使用してこのスキルポイントを説明できます。
ある知識のポイントがしばらく思い出せない場合は、迂回することができます。再帰式のように、得意な知識のポイントに応じて段階的に推測することができます。大胆な仮定をしてから、慎重に導出プロセスを確認します。いくつかの問題を説明します。
もう一つ注意すべき点があります。不可能なことについては、原則の観点から答えることはできますが、間違えないようにしてください。不完全な答えと間違った方向性は2つの概念です。
共通知識ポイント
1、Java
- イコールとハッシュコードと言えば、なぜそれらを一緒に書き直さなければならないのですか?ハッシュコードメソッドの書き換えルール。
- HashMap関連
- 実行時のデータ領域パーティション。どのスレッドがプライベートで、どのスレッドが共有されています。スタックフレームのデータ構造。メソッド領域に保存されるデータ。
- Person person = new Person()のインスタンス化プロセスについて簡単に説明します。クラスの読み込みプロセスを用意するのが最善です。
- たとえば、GCRootのタイプ
- LRUの実装。自分で実装しましょう、どうしますか
- スレッドのいくつかの状態
- スレッドプール
- T1、T2、T3の3つのスレッドが順番に実行されるようにするにはどうすればよいですか?つまり、非同期から同期への方法です。
- Javaでの待機とスリープの違いは?(待機するとロックが解除され、スリープではロックが解除されません)
- スレッドセーフ関連
- ロック。同期、揮発性、ロック。ロックのいくつかの状態。CASの原則。
- Javaの親の代表団について話す
- ジェネリック
- 反射
- 注釈
- メソッド内の匿名内部クラスがメソッドのローカル変数を使用する場合、なぜ最終変更を使用するのですか?
2、Android
- スタートモード、および一般的な使用法。
- 活動のライフサイクル。
- ビットマップメモリの最適化。
- xhdpiの画像はそれぞれhdpiとxxhdpiの携帯電話に表示されます。表示サイズとメモリはどのくらいですか?
- リソースファイルの読み込みルール。たとえば、画像がdrawable-hdpiとdrawable-xxhdpiに保存されている場合、どちらがxhdpi携帯電話に読み込まれますか?drawable-xxhdpiの下の画像が削除された場合はどうなりますか?
- Androidのプロセス間通信方式。
- Androidのコンテキストについてのあなたの理解について話しますか?4つの主要なコンポーネントのコンテキストはどこから来ていますか?
- アプリケーションがプロセスを開始します。
- startActivityの特定のプロセス。
- Activity#setContentViewの特定のプロセス。
- Surfaceの役割は何ですか?初期化されたのはいつですか?ビューによって描画されたデータは画面にどのように表示されますか?
- ハンドラーメカニズム
- ThreadLocalMapの実装。
- 描画プロセスを表示する
- ビューをカスタマイズする方法は何ですか?予防。カスタム属性をどのように理解しますか?
- イベントの配布。スライドの競合を解決する方法と方法は?スライド方向の判断方法は?
- アニメーション
- APKパッケージングプロセス。Rファイルは最終的にどのファイルを生成しますか?aaptの役割は何ですか?
- LocalBroadcastReceiver、LocalBroadcastReceiverの実現であるBroadCastReceiverよりも速いのはなぜですか。
- RecyclerViewキャッシュ。RecyclerViewの利点は何ですか?どんな機能に使ったことがありますか?
- LeakCanaryの原理について話します。ファントム参照を使用してみませんか?参照キューには何が保存されていますか?メモリデータはどのようにダンプされますか?
- OkHttpの実現について話します。インターセプターの順序、ネットワークインターセプターと通常のインターセプターの違いは何ですか?そのスレッドプールは何ですか?それはどのように管理されていますか?
- グライドの3レベルキャッシュはどのように機能しますか?
- rxjavaの原則。rxjavaスレッドスイッチングを実現する方法は?マップ演算子とフラットマップ演算子の違い、zip演算子とマージ演算子の違い。
- ArrayMapとSparseArrayの役割と実装の詳細。
- コンポーネント化とモジュール化の違い。
- mvp、mvvm。
- ジェットパックコンポーネント。
- Gradleでのタスクのライフサイクル。
- プラグインの原則。
- ホットリペアの原則。
3.Androidのパフォーマンスの最適化
- 速度の最適化を開始します。コールドスタート、ウォームスタート、ホットスタートはどうですか?
- メモリの最適化
- Catonの最適化
- ネットワークの最適化
- データベースの最適化
- メモリリークの最適化
- パッケージサイズの最適化
4.http関連
- 完全なネットワーク要求プロセスについて説明してください。
- TCPとUDPの違い、スリーウェイハンドシェイクと4つのウェーブハンドの詳細。リンクの確立に3回かかるのに、リンクの切断に4回かかる理由。
- httpとhttpsの違い。httpsリンクプロセス?
- 切断後の再開可能な送信を実現する方法。大きな画像を部分的にアップロードする方法。キーステップ
- セグメント化されたダウンロードを実現する方法。
- リクエストの再試行メカニズムを実装する方法。
5.デザインパターン
- どのデザインパターンに精通していますか?例を挙げてください。なぜこのデザインパターンを選ぶのか。
- ストラテジーモードとブリッジモードの違い
6、kotlin
- kotlinの長所と短所について話します。letとwithの違い
- 拡張機能
- kotlinのlateinitとlazyによる違い
- どんなコンストラクタがありますか
- コルーチン
7、フラッター
- フラッター的分離
- フラッターの長所と短所
- フラッターのチャネル通信方法は何ですか?
- フラッターパッケージサイズの最適化
- didUpdateWidgetメソッドが呼び出されたときの状態のライフサイクル
8.プロジェクト関連
- 説明するのに最も精通しているプロジェクトを選択してください。
- テクノロジースタックについて教えてください
- あなたが最も誇りに思っているプロジェクトまたはクリップ
- 何が得意ですか
- あなたの最後の仕事の経験からの最大の利益は何でしたか?
- あなたのキャリアプラン
大廠インタビューレビュールート
余計な言葉はお話ししませんが、次に面接のレビュールートをご紹介します。面接の準備もしているのに効率よくレビューする方法がわからない場合は、私のレビュールートを参考にしてください。ご不明な点がございましたら、お気軽にお問い合わせください。
誰もが体系的に学ぶための方向性は次のとおりです。
1.体系的な学習のためのビデオを見る
過去数年間のCrudの経験から、私は本当に新人の戦闘機であることがわかりました。また、Crudのおかげで、私の技術は比較的断片化されており、体系化するのに十分な深さではないため、もう一度勉強する必要があります。 。私に欠けているのは、システムの知識、貧弱な構造フレームワークとアイデアです。そのため、ビデオを通じて学ぶことは、より良く、より包括的です。ビデオ学習に関しては、個人がステーションBでの学習を推奨できます。ステーションBには多くの学習ビデオがあります。唯一の欠点は、無料で簡単に古くなることです。
また、私は自分でいくつかのビデオを集めました。必要に応じてそれらをあなたと共有することができます。
2.知識を体系的に整理し、準備金を改善する
クライアント開発には非常に多くの知識ポイントがあり、インタビューにはまだほとんど何もありません。したがって、これらの知識ポイントにどれだけ準備しているかを確認するためだけに、面接のための他のトリックはありません。したがって、面接に出かけるときは、レビューでどの段階に到達したかを確認することをお勧めします。
システム学習の方向性:
-
アーキテクトに不可欠なスキル:詳細なJavaジェネリック+単純な言語でのアノテーション+並行プログラミング+データ送信とシリアル化+ Java仮想マシンの原則+リフレクションとクラスローディング+動的プロキシ+効率的なIO
-
Androidの高度なUIとFrameWorkのソースコード:高度なUIプロモーション+フレームワークカーネル分析+ Androidコンポーネントカーネル+データの永続性
-
360°の全体的なパフォーマンスチューニング:設計アイデアとコード品質の最適化+プログラムパフォーマンスの最適化+開発効率の最適化
-
オープンソースフレームワーク設計アイデアの解釈:ホットリペア設計+プラグインフレームワーク解釈+コンポーネントフレームワーク設計+画像読み込みフレームワーク+ネットワークアクセスフレームワーク設計+ RXJavaレスポンシブプログラミングフレームワーク設計+ IOCアーキテクチャ設計+ AndroidアーキテクチャコンポーネントJetpack
-
NDKモジュール開発: NDK基本知識システム+基礎となる画像処理+オーディオおよびビデオ開発
-
WeChatミニプログラム:ミニプログラムの紹介+ UI開発+ API操作+ WeChatドッキング
-
ハイブリッド開発とFlutter: Html5プロジェクトの戦闘+ Flutter Advanced
知識を整理した後、不足している点を確認する必要があるので、これらの知識点については、手元にたくさんの電子書籍やメモを用意しました。これらのメモは、各知識点の完全な要約を提供します。
3.ソースコードを読み、実際の戦闘ノートを読み、神の考えを学びます
「プログラミング言語はプログラマーが表現する方法であり、アーキテクチャーはプログラマーの世界に対する認識です。」したがって、プログラマーがアーキテクチャーをすばやく理解して学習したい場合は、ソースコードを読むことが不可欠です。ソースコードを読むことは、問題を解決し、物事を理解することであり、さらに重要なことは、ソースコードの背後にあるアイデアを参照することです。プログラマーは、何千行ものソースコードを読み、何千もの方法を練習します。
主にWeChatMMKVソースコード、AsyncTaskソースコード、Volleyソースコード、Retrofitソースコード、OkHttpソースコードなどが含まれます。
4.インタビューの前夜に、スプリントの質問
面接前1週間以内に全力疾走を開始できます。質問をブラッシングするときは、テクノロジーが最優先であり、アルゴリズムは並べ替えなどの基本であり、知的質問は、学校の新入生でない限り、通常は質問されないことに注意してください。
面接の質問に関して、私はあなたがお互いから学ぶのを助けるために一連の体系的な面接の質問を個人的に準備しました:
5.履歴書+ソーシャルリクルートソリューション+従来の人事面接分析
上記は、Androidの中間および上級の面接で遭遇した実際の質問の要約です。これがすべての人に役立つことを願っています。同時に、多くの人が履歴書の作成、キャリアの混乱、およびHRクラシック面接に関する多くの面接の質問に遭遇することがよくあります。質問。また、履歴書制作、ゴールデンスリーシルバーフォークラブによる採用パズル、人事面接のフルセットを集めてまとめました。ご不明な点がございましたら、専門的な回答を提供いたします。
Android開発の友人にとっては、最も包括的で完全なインタビュー情報である必要があります。各モジュールをより適切に整理するために、インターネット上の多くの高品質のブログ投稿やプロジェクトを参照し、すべての知識ポイントを見逃さないように努めています。多くの友人がこれらのコンテンツを利用してレビューし、BATJなどの主要メーカーからオファーを受けました。この情報は多くのAndroid開発者にも役立ちました。また、あなたにも役立つことを願っています。
最後に、上記の完全な「2020 Android BATインタビューコレクション」を入手したい場合は、ここをクリックして完全なコンテンツを表示してください。