エクストラ!エクストラ!「ゴールデンナインとシルバーテン」のAndroidクライアント体験を最初に見たとき、アリのインタビュアーは私に少し必死でした...

バックグラウンド

著者は修士号とコンピューターサイエンスを専攻して卒業しました。17年で卒業後、両親から国営企業にアレンジされました。国営企業で3年間働いています。毎日、生活はとてもフラットで、変動はほとんどありません。過去3年間の仕事で、毎日通勤しているのですが、ある日は無理だと気づき、一目で人生の終わりが見えて欲しいと思いました。

贅沢はあまりありませんが、一目で人生の終わりを見るのは本当につまらないし、未知の感覚もありません!初めて大手インターネット企業への期待に火をつけ、両親と話し合って合意に達した後、5月に辞任し、自宅の**アリテクノロジーブロガーから集めた823ページのAndroidコアナレッジノートをレビューしました。

多くの場合、中断のないレビューが最も効率的です。3か月のレビューと通関手続きの後、私はLishuiからHangzhouに来ました。1か月以上後、 Alibaba、NetEase、Mushroomを含む10社近くのインターネット企業がインタビューを受けました。 Street、Youzan、Straight Flush、Dingxiangyuan、Fun Shootなど。最後に、Huangtianは成果を上げており、 4つのオファーもあります。インターネット10社の中で、Netease、Ali、Mogujieが最高のインタビュー品質を持っており、質問の深さは非常に深いです...

 

2.提案:テクニカルリザーブ/インタビューレビュー

基礎

AndroidやJavaの基本や一般的なデータ構造関係なく、これらは原則がなく、特にコンピューター以外の専攻の場合は習得する必要があります。インタビュアーは間違いなく基本について質問します。基本的なパフォーマンスが良くない場合は簡単です。しっかりした土台の帽子をかぶっていました。

最も一般的なものは、あなたがそれについて考えている限り、インタビューに大きな問題はないものです。

アルゴリズム

基本的にすべての企業にアルゴリズムの質問があります。配列とリンクされたリストに焦点を当てたZuoChengyunの「ProgrammerCodeInterview Guide」を読みました。バイナリツリーはアルゴリズムの質問をブラッシングしませんでした。バイナリツリーの習得は、3つの基本にあります。ソートアルゴリズムのヒープソートで使用されるトラバースとバイナリヒープ、次に各アルゴリズムの問​​題を自分で実装し、最初にアイデアを書き、次に自分で実装し、次に答えを見て、最初に答えのアイデアを覚えてください次の2日間で、答えのアイデアに従って再実装しました。この効果は非常に優れています。多くの質問には行きませんでしたが、この方法で一般的なアルゴリズムの質問を分析したかったので、アルゴリズムの質問をブラッシングすることはお勧めしません。

まず、クライアント開発として、関係するアルゴリズムは多くありません。

第二に、インタビューでテストされたアルゴリズムのほとんどは、非常に基本的な配列グループとリンクされたリストで構成されています。結局、アルゴリズムは底なしの穴です。個人的には、質問をする必要はないと感じています。中小企業には役立つかもしれませんが、大企業はもっと問題を解決する能力を大切にします。

仮想マシン

  • JVM

Javaの場合、クラスファイルが読み込まれます。通常、Javaランタイム中に、メモリ割り当て、クラス読み込みメカニズム、およびGCについて質問されます。実際、後者の2つ、特に4つのタイプの参照を組み合わせることが多いGC関連についてはさらに質問があります。最後に、これを使用して、メモリリークに関連するいくつかの問題を引き起こします。

  • DVM&ART

Androidの仮想DVMとARTは、JVMにいくつかの最適化を行いました。dexファイルがロードされ、クラスバイトコードが最適化されます。これは実際には非常に複雑です。私はいくつかの基本的な概念しか知りません。

  • ClassLoader

これについて質問すると、実際には多くのことがあります。Java関連の場合は問題ありません。クラスの読み込みメカニズムについて質問されます。ただし、Androidでは、Javaのクラスの読み込みメカニズムに加えて、プラグインとホットフィックス導入されます。

JNI

基本的に少し大きい会社が尋ねますが、私の答えはいつも同じです:私はCコードしか理解できません、私はプロジェクトでJNIを使​​用していません、もちろんこれはボーナスアイテムです、当時の私の選択は私を使用することでしためったに触れないことを少し知るのではなく、身近なもので挽いたメロンを研究しましょう。

バインダー

さまざまなAMS、WMS、PWSであるバインダーシリーズは、APPの開始プロセスと、2つのアクティビティが互いにジャンプするときのライフサイクル、つまりアクティビティのライフサイクルについてよく尋ねられました

メンタリティ

非現実的なものになるとは考えないでください。たとえば、Iバインダーのメカニズムとホットフィックス、この子のプラグインは比較的単純で明白なことを本当に理解していますが、賞賛するためにこのトピックや他のインタビュアーについてフラッシュトークします。サブアイテムは最終的なインタビュー結果に影響しません。アルゴリズムもあります。インタビューでは最大で1つまたは2つのアルゴリズムをテストできるため、この領域で一般的な配列やリンクリスト、バイナリツリー/ヒープを習得するために多くの時間を費やす必要はありません。一度、それで十分です。会社が評価しているのは、問題を解決する能力です。原則をよく理解していれば、基本的に共通の問題はありません。

基本的な知識があれば、何を使ったかを深く理解し、問題を解決する能力もあります。インタビュアーがあなたを求めている場合は、あなたの長所を探します。そうでない場合は、あなたの短所を探します。

したがって、特定の会社に参加したい場合は、その要件に従います。表示されなくても、それは何もありません。不適切であるとしか言えません。次に、ギャップを確認して、インタビューを続けます。1つまたは複数の問題が原因ではありません。自分を否定するだけです。

3. Androidクライアントの顔の記録(すでにオファーがあります)

Netease(オファーがあります)

 

  • 片側:
  1. プロジェクトの紹介
  2. 複数のプロセスを開始する方法?アプリケーションはN個のプロセスを開始できますか?
  3. アクティビティの起動モード、タスクスタック、および使用シナリオ?
  4. ボレーは、1億枚の写真を読み込むなど、大量のデータをリクエストできますか?
  5. 手書きクイックソート
  6. ボレーの長所と短所
  7. Finalは、オブジェクトのプロパティを変更するメソッドを呼び出すことができるかどうかに関係なく、オブジェクトを変更します
  8. 子スレッドでハンドラーを使用する方法
  9. ユニットテストを実行する方法とAPPの安定性を確認する方法。
  • 両面:
  1. TabLayoutは、コンテンツをラップするためにインジケーターの幅をどのように設定しますか?
  2. 許容誤差1で算術シーケンスの合計を最適化する方法
  3. あなたの利点はどこにありますか
  4. 注釈を取得する方法、なぜリフレクションはパフォーマンスを犠牲にするのですか?
  5. JavaのGCメカニズム、世代別収集戦略
  6. バインダーメカニズム:ServiceManagerはいつ登録されましたか?
  7. int、long、BigDecimalの値の範囲が範囲外の場合はどうすればよいですか?
  8. ConcurrentHashMapの原則、セグメントの数はいくつですか?
  9. APPはどのように適応されますか?
  10. Androidでオブジェクトのリサイクルを確認するにはどうすればよいですか?
  11. 最大のオンラインバグ処理手段
  • 3つの側面:
  1. APKサイズを圧縮する方法
  2. アプリのクラッシュ率、マルチチャネルパッケージ
  3. 私が行ったAPPユーザーの数
  4. 残業を受け入れることができますか

アリババ(オファーがあります)

 

  • 片側
  1. プロジェクトの経験
  2. バインダー機構
  3. ClassLoaderの理解
  4. Arouterの原則
  5. コンポーネント化の原則、コンポーネント化におけるルーティングの実現
  6. ホットリペアとプラグインの原理
  7. スレッドプールのいくつかのパラメーター、4つのスレッドプールの使用シナリオの理解
  8. 一般的に使用されるデザインパターン、手書きのDCLシングルトンパターン
  9. プロセス間で直接通信できないのはなぜですか
  10. アプリケーションとシステム間の通信にソケットとバインダーを使用する場合
  • 両面
  1. データベースのアップグレード、テーブル構造の変更
  2. 一般的な並べ替えアルゴリズム、手書きのバイナリ検索、バイナリ検索の複雑さの分析
  3. アプリアイコンをクリックしてアプリを起動します
  4. MainActivityのパラメーターはSplashActivityで初期化されます。Splashは初期化されず、AMSはMainActivityを直接開始します。どうすればよいですか?
  5. 同時に読み取ることができ、読み取るときに書き込むことができず、書き込むときに読み取ることができないマルチスレッドを設計します(読み取り/書き込みロック)
  6. 再開可能な送信の設計、サーバーが再開可能な送信をサポートしているかどうかを判断する方法
  7. バインダーメカニズム:バインダーカーネルがクライアントと通信するサーバーを見つけるプロセスはどのように行われますか
  8. JNIを知っていますか
  9. コンポーネント化の原則、コンポーネント間の通信
  • 三面
  1. ホイールを再発明し、いくつかのフレームを自分で設計する理由
  2. オンラインプロジェクトの安定性を確保する方法
  3. 以前に行ったプロジェクトの規模
  4. 彼らの現在のプロジェクトについておしゃべり

もぐじえ(申し出あり)

 

  • 片側
  1. ディープコピーシャローコピー
  2. セット{A、B、C、D}のすべてのサブセットを出力します
  3. カスタムビューと注意が必要な事項
  4. 展開プロセスを自動化する方法
  5. JNIについてご存知ですか
  6. 記憶の再生
  7. クラスローダー
  8. ホットリペアとプラグインについてどのくらい知っていますか
  9. WeChat Alipayを呼び出すときに、上位層はAIDLをどのようにカプセル化しますか
  10. アプリをスリム化する方法
  • 両面
  1. プッシュの実装方法、ジグアンプッシュの原理
  2. HttpプロトコルとTcp / Udpについて話します
  3. 一般的な設計パターン、オブザーバーパターンの実装方法、オブザーバーに順番に通知する必要がある場合、操作方法
  4. 画像読み込みフレームワークを実装する際に考慮すべきこと
  5. スレッドプールのパラメータと設計方法は何ですか
  6. パフォーマンスの最適化の方法
  7. JavaがHashMapを導入する理由と、ハッシュの競合を解決する方法
  8. JVMメモリ割り当て、コーディング時にメモリリークに注意する方法
  9. バインダーメカニズムの原理

楽しい撮影(オファーがあります)

  • 片側
  1. 自己紹介
  2. 自己紹介をしたとき、EventBusのソースコードを読んだと言ってから、イベントバスの理解について話させていただきました。
  3. EventBusに問題はありますか?
  4. EventBus、インターフェイスコールバック、およびオブザーバーモードの使用シナリオについて説明しましょう。
  5. プロジェクトがデータ永続性を使用する場所について説明します。
  6. アクティビティのライフサイクル、ポップアップダイアログ、およびアクティビティのダイアログのライフサイクルの違いは何ですか?
  7. アクティビティの起動モード、アプリケーションシナリオ、そして多くのWeChatシナリオで、使用する起動モードを選択し、その理由を説明します。
  8. アクティビティプロセスの優先度。
  9. WeChatがシステムによって強制終了されるのを防ぐ方法は?
  10. 2つの起動モードにサービスを提供します。違いは
  11. 2つの起動モード。アクティビティを終了するときにサービスを終了しないとどうなりますか。
  12. 画像ブラウジングフレームワークを設計します(スレッドプール、lruキャッシュ、ブラブラはたくさん言いました)。
  13. 非常に大きな画像がメモリにロードされていますが、解像度を下げることができず、画像が圧縮されている場合、どうすれば解決できますか?(部分的に表示するように促しますか?わかりません)
  14. ブララは、さまざまなメーカーの携帯電話に適応する方法、次にパターンを設計する方法について多くのことを話し、最後にジェットキンの自動展開について話しました。
  15. AsyncTaskソースコード分析。各メソッドが実行されるスレッド
  • 両面
  1. アクティビティ読み込みモード?singleTaskはいつ使用されますか?
  2. ハンドラーメカニズム?
  3. スレッドごとにルーパーは1つだけですか?
  4. スレッドにルーパーが1つしかないことを確認するにはどうすればよいですか?
  5. マルチスレッドの方法は何ですか?
  6. ANR異常の条件は何ですか?ANRを分析する方法は?
  7. カスタムビューとViewGroup
  8. イベント処理
  9. GCアルゴリズム
  10. 4つの引用
  11. アニメーション
  12. DalvikとArtの違いは何ですか?(ジャストインタイムとアヘッドオブタイム)

あとがき

実際、プログラマーにとっては、知識の内容やコアテクノロジーが多すぎて学ぶことができません面接で排除されたくない場合は、事前にレビュー計画を立てて、学習を継続的に改善することしかできません。私たちに適応する環境ではなく、環境に適応してください!

ある添付学習改良材や書籍ことを私はアリババ技術的なブロガーから得られた。その中で、私はコアAndroidの技術コンパイル私がいることに学ばなければならないPDFへのインタビュー823ページの合計を含む、(予想より実際には多くのエネルギーを)知識の文脈+スペースが限られているため、多くの詳細が写真の形でいくつかあります。メモに含まれているすべてのAndroidナレッジポイントが私の[ Github ]にアップロードされています。読んでダウンロードする必要がある場合は、私の[ Github ]にアクセスして読んでダウンロードできます。役立つ場合は、スターに来ることを忘れないでください。

Androidビデオインタビュー調査

総括する

レビューと学習の重要性を強調したくありません。今では、少し規模が大きい企業の場合、ソーシャルリクルートのインタビューでAndroidの基本的なテクノロジースタックに疑問を呈する必要はありません。実際、プログラマーにとっては、知識の内容や技術に習得するのが非常に多く、困難が多すぎます。面接で排除されたくない場合は、事前にレビュー計画を立て、慎重に質問を磨き、研究を継続的に改善することしかできません。

「Androidコアナレッジノート」は、空席を見つけて埋め、レベルを熟練にアップグレードし、実際の戦闘をすばやく開始するのに役立ちます。

あなたは大きな工場との面接の成功に一歩近づいていると思います!

注:①「Androidコアナレッジノート」+②「Androidインタビューラーニングビデオ」は無料で記事で共有されています。———— my [ Github ]にアクセスして読んでダウンロードするか、アバターをクリックして非公開でメッセージを送って[666]無料で入手できます。無料ダウンロードアドレス。

 

 

 

おすすめ

転載: blog.csdn.net/qq_39477770/article/details/108752965
おすすめ