2021年のAndroidインタビューの概要:オファーを収集してから5年の開発経験と10回のインタビューがあります。これらのインタビューの質問によって、昼夜を問わず数え切れないほどの努力が失われることはありません。

毎年恒例のゴールド、3、4回のインタビューのピークシーズンが再びやってくる!

面接決定

12月上旬、友人の内省を頼りに、陳景東兵衛に面接しました。面接は行き詰まりましたが、技術力には自信がありました。2020年12月22日に辞任を提案し、7日間を利用しました。面接に専念する年次有給休暇。ついに、思い通りの申し出がありました。

履歴書を提出するときは、会社の規模だけを考慮し、約10社に投票しました。面接のプロセスは紆余曲折に満ちていました。技術面接では問題ありませんでしたが、人事と承認の問題がいくつかありました。気が狂って表現の仕方がわからなかった当時の気分、苦しんでいる心は微笑むしかありません。

大変な努力が報われ、いつもジャンプする人もいます。ついに、ニューオリエンタルオンラインのピットに入りました。最初に受け取ったオファーは、1月18日の誕生日の前にようやく少し快適になりました。

インタビュー統計

私の面接の状況から判断すると、技術面接後は安定するとは思わないでください。人事部はカードの人(Jingdong)とカードの人(huolala)を承認できるようになります。したがって、面接中にもう少し面接する必要があります。 1つの代わりに会社。木は絞首刑にされました。

(1)技術面接、9社が合格:

Qianxihe(2面)、Guangzhou Star(3面)、Baowo(2面)、Jingdongbeichen(4面)、JD Logistics(3面)、Songguo Travel(2面)、New Oriental Online(4面))、Huo Lala (3面)、APUS(2面)

(2)3回の技術面接の失敗

タンタン(片面)、小紅書(片面)、今日頭条(両面)

(3)時間または承認、3失敗

Jingdongbeichen(商業詳細グループ):4面すべてを通過し、5面を時間単位で拒否しました。非学術的背景の理由は、時間面接が穴を踏んだためです。これは残念です。

APUS:両面技術に問題はありませんが、hrは拒否します(当時の給与が高く、会社の経歴が良ければ、おそらく合格するでしょう。悲しいことではありません。hrは経歴によって異なります。それを理解している)

Huolala: 3面の技術面接+ hrの面接問題ありませんが、承認は拒否されます。非常に簡単です。複数の候補者がいる場合、私は考慮されません(給与段階をクリックすると、より気の合う家族が間違った)

(4)承認後の個人的な拒否、2 +

1月16日現在、申し出を受けて就職したとのことで(ニューオリエンタルオンライン、給料は比較的満足のいくもので、近くに一緒に遊べる学生が何人かいます)、新しい申し出があればやりますそれを考慮しないでください。現在、売上高と予想給与が提出されており、3社(JD Logistics、Songguo Travel、Beijing Borgward Automobile)がまだ承認されていますが、おそらく拒否するか、拒否させます。

Qian Xihe、個人的に拒否しました(12月6日土曜日にインタビューに駆けつけました。テクノロジーの第2面が通過し、hrとリーダーは無関心すぎたため、拒否しました)

広州スターコントロール、個人的に拒否されました(12月25日、オンサイトの技術的側面、給与要件を約束しました。2Kを削減して入場できると言って、断固として拒否しました)

面接の質問の要約

個人面接の状況を話し合った後、メイントピックを入力します。これらの企業に対して面接した質問はすべて以下のとおりです。繰り返し面接の質問の要約が多いため、会社ごとに並べ替えることはしません。

失敗したときのいくつかの面接の質問

JD、Toutiao、Tantan、Xiaohongshuを含むいくつかの質問に答えませんでした

Jingdong:

(1)モジュール、コンポーネント、SDKの設計方法、検討方法
(2)プロジェクトのアーキテクチャについて話し、なぜこのように設計するのか、またはこのように検討するのか
(3)メモリリークについて話すほど良い
( 4)技術的な問題、解決方法、考え方
(5)apkセキュリティ、どのように考えますか
(6)行為+フラグメントの完全なライフサイクル(単一ではない)
(7)Jingdongbei Chen:RecyclerViewソースコード、確かに、キャッシュの実装方法、各キャッシュ、操作プロセスなど、再描画がトリガーされるさまざまなnotifyXXの原則、移動しないアイテムの下部と上部の実現方法を含むアイテムの高さの変更?

タンタンへの良い面接の質問:

(1)ビューを手でドラッグし、手を離してバブルバーストアニメーション効果を完成させます(本質は、ビューイベントの配布メカニズム+アニメーションの選択、配布メカニズムのどの方法がどのパラメーターを処理するか、およびアニメーション効果をトリガーする方法ですその後など、質問は灰色であることが多い特定の、吐き出される)
(2)カスタムビュー関連、無効化、postInvalidate、requestLayout、フレームワーク層のプロセス原理についての詳細な話
(3)の深い原理を実現する方法Kotlinコルーチン
(4)dclスレッドは安全ですか?どの部分が間違っているか、命令の再配置を防ぐためにvolatileを実装できる理由、命令レベルの実装方法、オブジェクト作成プロセスなど(多くの質問、非常に詳細)

今日頭条の両面失敗:

(1)パーミッションラベルとuses-permissionラベルの違いパーミッションラベルを設定し、他のプロセスアプリがactインターフェイスにアクセスしないようにするにはどうすればよいですか?
(2)マルチジェスチャの具体的な実現
(3)トランジションアニメーションの具体的な実現
(4)ピクチャーインピクチャーの具体的な実現、フローティングウィンドウ
具体的な実現(5)エイドルバインダー非同期呼び出しの具体的な実現
(6)タイミングタスクをどのように実現するかは、
すべて具体的な実現です。

リトルレッドブック:

(1)concurrentHashMapをロックする方法
(2)詳細な測定パラメーター、ビュー設定のラップが機能しない
(3)バインドサービス、存続する方法
(4)2つのプロセスが動作し、起動を高速化する方法
(5)パフォーマンスの最適化(インタビュー古いものと公式の中断、私は何も言うことができません)
(6)Eventbusはスレッドの切り替えをどのように実現しますか
(7)Jetpackのナビゲーションのxml参照はいつ呼び出されますか?
(8)Inflater.inflateはどのようにxmlをjava(フレームワーク)に実装し、メソッドの各パラメーターの意味を示します。

面接の質問に合格し、個人ごとに分類され、リストされています

基本的な問題

  • パラダイム:<super>と<extends>の具体的な違い; Javaコンパイルプロセスの実現原理(パラダイム消去);反変共分散(パラダイムサブクラスの変換)
  • パフォーマンスの最適化(多くの質問、大きな技術トピック、自分で要約)、個人的なメモは7つの部分を要約しました:

起動速度の最適化
レイアウトの最適化
コードの最適化
メモリの最適化(oom anr)
アプリのスリム化
ネットワークの最適化
バッテリー使用量の最適化
セキュリティの最適化
ストレージの最適化

  • ANR:標準的な回答プロセスを示します:anrのいくつかの理由(ソースコードを深く掘り下げて、AMS.appNotResponding()のプロセスについて話します、退​​屈します)、分析ツールによって特定の理由を分析して見つける方法。
  • メモリ不足(OOM)+メモリリーク、分析ツールまたはオープンソースリークカナリア、最適化ソリューションの違いは、ハンドラーがどのようにoomを引き起こすか、最適化する方法などを尋ねる場合があります。
  • イベント分散メカニズム+ネストされたスライディングメカニズムの原理、違い
  • ハンドラー関連(すべて指定)

プロセス;
threadLocal +内部原則(threadLocalMapの実装方法、キーと値、弱い参照、メモリリークが発生するかどうかなど);
loop()がメインスレッドをブロックしない理由;
同期バリア(バリアメッセージ) );
アイドルメカニズム(IdleHandler)+関数とは;
メッセージキューのメッセージソート順(遅延の実装方法);
Message.obtain原則(デザインパターン:Flyweightを使用);
サブスレッドのハンドラープロセスを実装します;
ハンドラーのメモリリークと解決策;
ハンドラールーパーとMessageQueueとの関係(複数のハンドラー、複数のルーパー、ハンドラーのメッセージは他のハンドラーのhandleMessageメソッドで処理できます);
拡張:子スレッドとの間の通信の解決策は何ですかメインスレッド?

  • 関連するカスタムビュー:

フレームワークプロセス;
mesureSpecの役割;
カスタムがViewを拡張する場合、手動でwrap_contentピットを処理します:Viewを直接継承するコントロールはonMeasureメソッドを書き直し、wrap_content時に独自のサイズを設定する必要があります。それ以外の場合、レイアウトでwrap_contentを使用することはmatch_parentを使用することと同じです。
postInvalidate()とinvalidate()およびrequestLayout()の違い(自分で要約すると、覚えておくべき多くのポイントがあります);
アクティビティのonCreateメソッドでコントロールの幅と高さを取得するいくつかの方法;
ビューの描画(キャンバスキャンバス)描画プロセス;

  • Jingdongファミリーは、ioストリーム(文字ストリーム、バイトストリーム、ファイル、その他のストリームの違い)、ストリームの処理方法(catch、stream closeなどを試してください)を尋ねました。
  • アプリケーションでダイアログを作成できない理由、基本原則(ウィンドウトークン)
  • サービスインタビュー、ライフサイクル、バインドと開始の違い、キープアライブなど。
  • デザインパターンの概念、デザイン原則(SOLID)、プロジェクトで使用されるデザインパターン、オープンソースプロジェクトxxxで使用されるデザインパターン、プロキシモード、動的プロキシの実装方法 シングルトンモードでは、静的内部クラスのシングルトンはファイナライズされていますか?
  • スレッドプール、パラメーターの確認、キープアライブパラメーターの機能の確認、ソースコードはコアスレッドの動作をどのように実現しますか?絶対戦略?
  • httpsパケットキャプチャを実現する方法;ネットワークリクエストセキュリティを実現する方法?他の人がパケットをキャプチャまたは要求するのを防ぎます。
  • クラスローディングメカニズムの原理
  • Jetpack、ライブデータの粘着性の原則、ソースコードはどのように人生の認識を実現するのか、古いデータのバグを修正する方法は?
  • Jetpack、navigation xml、どのステップがロードされ実行されましたか?(それは難しい)
  • バインダー関連、援助実装の原則、コールバックの実装方法、バインダー非同期呼び出しの実装方法(見出し)
  • コンテンツプロバイダーを使用してプロセス間通信を実現するにはどうすればよいですか?処理する?
  • mvc、mvp、mvvm
  • Jni開発:動的登録プロセス
  • 例外のキャプチャ(アプリのuncaughtExceptionを確認)
  • 行動の4つの開始モード
  • フラグメントとアクトのトランジションアニメーション、android.appとv4パッケージの違い(見出し)

Javaの基本的な問題/アルゴリズム/数値構造/ jvm

  • 静的変更、最終変更、機能
  • Javaオブジェクト指向機能(カプセル化、継承、ポリモーフィズム)、それを実装する方法
  • Hashmap、linkedhashmap、concurrenthashmap、set、すべてが尋ねられます。1.7/ 1.8の間のさまざまな違い、非常に詳細、非常に詳細、非常に詳細、具体的ではありません
  • 同期、揮発性、reenterLock、AQS、さまざまな違い、静的変更と同期メソッドの違い
  • バイトコードの観点から、同期の基本原則(オブジェクトヘッダー、ロックアップグレードプロセス、スピンロック)
  • リフレクション、最終変更のパラメーターを変更する方法(クラスリフレクション)
  • Javaメモリモデル、Java実行メモリモデルと機能、G1リサイクルメカニズム、VMスタック実行プロセス、および命令はおなじみですか?
  • 4つの参照の違い
  • スレッドのステータスはどうなっていますか?
  • セット内のequelsとハッシュコードの違いをどのように実現しますか?効率の問題?なぜ書き直すのかなど。
  • https / httpの違い、tcp / ipとudpの違い、3ウェイハンドシェイクと4ウェーブ、Huolalaは、tcpの基本原則+ tcp伝送の信頼性を確保する方法(並べ替えとリフロー)を尋ねました。
  • kステップのリンクリストの反転
  • 二分木の順序トラバーサルの2つの実現
  • 数の平方根
  • 配列では、ペアで表示され、1つだけが単独で表示されますか?2つが別々に表示された場合はどうなりますか?
  • リンクリスト反転の実装はいくつありますか?(スタック、アレイなど)
  • ABスレッド印刷

サードパーティのフレームワークに関する質問

履歴書に書かれているサードパーティのフレームワークは精通している必要があり、ソースコードに依存することを説明します。

  • 改造(それぞれを要求する必要があります)、ソースコードと詳細な要約を見てください
  • Okhttp(それぞれを尋ねる必要があります)、ソースコードと詳細な要約を見てください
  • Rxjava(高頻度)は、アップストリームスレッドのスケジューリングとダウンストリームスレッドの切り替え、バックプレッシャなどを要求します。
  • LeakCanary(高周波):OOMで尋ね、原則を尋ねる
  • グライド(高頻度):キャッシュ実装の原則とプロセス(linkedHashMap)
  • ORMデータベース:ROOM、DBFlow、DaoGreen:
    データベースの使用とファイルキャッシュの使用の違い
  • MMKV(10社が1社に質問)

フレームワーク/プロジェクト/フレームワーク/ディレクターレベルの問題

  • 設計するプロセスであるコールドスタートプロセス、
  • Act、window、Viewの違い、ソースコードが紹介されています
  • AMSの役割
  • SDKデザイン、どのようにそれを達成しますか
  • SDKを
    埋め込む方法、それをどのように実現しますか:埋め込み方法、ストレージ、アップロード、スレッドプール、例外など。
  • コンポーネント化、モジュール化、どのようにそれを達成するか、どのようにコンポーネント通信を達成するか
  • プラグイン化(いいえ、私はTencentの影しか見ませんでした)、原則
  • プロジェクトの紹介、リファクタリング、反復など。プロジェクトで何をしたか、どのような問題が発生したか、そしてそれらをどのように解決するかを尋ねます。この領域は非常に重要です。担当するモジュールの効果、リファクタリング、解決できる問題点、解決できる問題、会社にもたらすメリットなど、明るい点が必要です。 、等、私はこれに従います3つのカテゴリーが言った、効果は良いです)
  • プロジェクトでは、パフォーマンスの最適化を実現する方法、代表的な例、異常を監視する方法など。
  • 通常、テクノロジーをどのように学びますか?他の人と比べて、あなたの強みは何ですか?(ハイライトを強調するための学習能力、製品センス、要約習慣など、私のハイライトはプロジェクトの緊急能力、要約習慣とオープンソースの貢献を学習すること、またはあなたの答えも、あなたのハイライトを強調して、この領域にディレクターを導きます)
  • 履歴書は、優れたコーディングスキルと独立した思考能力を持ち、コード仕様と構造再構築に注意を払っていますが、プロジェクトにどのように反映されていますか?
  • 技術的な質問:大丈夫です、何か質問はありますか。
    片面と両面が何もないように感じたら、それのために戦って、個人の技術的能力と利点について話すことができます。

上司/ディレクター/グループリーダーのレベルが最終的な場合は、テクノロジースタック、テクノロジー、その他の質問を適切に行うことができます。

人事面接の質問

  • 卒業、仕事の経験、プロジェクトの経験など、前の会社の職場の雰囲気、退職の理由、あなたの長所と短所について尋ねてください(あなたの性格について話さないでください、あなたは陽気になることはできません、ただ話してください技術的な弱点)、準備するのが最善ですレトリックの良いセット、すべてがスキルを持っています、落とし穴を避けるように注意してください
  • 期待される給与を尋ねる:

個人的には一番言いたいのですが、会社の株主の方からは昇給はないとのことで、2年以上昇給していないので、高い給料をもらえるのは大変です。技術面接が通過し、ついに時間は行き詰まりました。Shou to YunkaiはMingyueを見て、さらにいくつかの会社にインタビューします、チャンスは常に来るでしょう。私は個人的な期待を妥協しないことを主張し、最終的に会社は私の個人的な技術的能力と性格に夢中になりました(5年の経験、私の期待される73%の増加に変換)。個人的な機会を与えてくれたニューオリエンタルにとても感謝しています。ウラ!

  • ディレクターはまた尋ねます/時間はまた尋ねます:あなたの個人的な短期的な目標と長期的な目標
  • 他に質問はありますか?
    この質問は時間によって尋ねられます。人事、給与、給与、チームビルディングなど、彼女が得意なことを彼女に尋ねるのが最善です。

その他の面接の質問(やや雑多)

  • kotlin:シンタックスシュガーなど。
  • Javaよりも優れているkotlinを使用する理由 パフォーマンス上の利点は?
  • フラッターは基本を尋ねました

非被験者の画期的なコースと経験

ワイルドプログラマーの成長経験:

私は山東省の普通の学生で、機械工学と電気工学を専攻しており、15年間Androidの開発に転職しました。ワイルドプログラマーとして、成長過程は比較的でこぼこです。私はトレーニング機関や個人の自習に頼り始めました。初期段階でインターネット開発に参加することは非常に困難でした。初期のエントリー段階では、多くの学生が訓練機関からの排除が可能でした。変化に気づいたのは幸運でした。クラスメートと初めてのマネージャーが信頼を得るのを手伝ってくれてとても感謝しています。2年以上の継続的な学習と蓄積に依存して、私は初心者から資格のあるツールパーソンに成長し、個人の給与を2倍にする転職の仕事も完了しました。

2社目では、技術ビジョンや拡張の深さを徐々に拡大し、開発や様々な問題に冷静に対応することができました。同社は昇給制度がないため、転職計画を立てる計画があるが、意外と2年かかる。まとめと積み上げに頼って、転職は当然のことだ。運のボーナスはあまりありません。

したがって、私は成長するのに最も愚かな人です。私の最初の成長は遅いですが、私はスタミナを持っています、そして私は自分自身ではるかに成長し、少しインスピレーションを与えるチキンスープを植え付け、他の人の強みから学び、そして他の人の経験と学習習慣を謙虚に尋ねます。また非常に良い。速い。

成長経験:

ナンセンスな話をするのではなく、重要なポイントについて話してください。

(1)技術的な要約が必要です。技術的なポイントの要約、遭遇した落とし穴の要約、および主要な技術的なポイントのトピックの要約(メモ+コード例)、メモに整理され、しばしばめくられます(ブログを書くときに最初に要約するためにメモを使用する必要があります)
(2)持っているメモを取る習慣記録技術、異常、新技術、レビュー要約、日報要約、研究計画、良いアイデアなど。要約できるすべての技術的ポイントはメモにされます。後でレビューするとき、あなたはあなた自身の思考の視点を増やして、将来のあなたのコアポジションに備えることができます。私はこの習慣を2年以上維持しており、今では転職を完了することができます。この習慣は私に最大のサポートを与えてくれ、当然のことです。
(3)ソースコードを見て学習します。より多くの好奇心、楽しみとして、長い間、あなたは自然に良くなるでしょう。
(4)会社に期待している場合は責任を持って行動し、リーダーが困難や過酷な場合は現実的に対応することを学ぶ必要があります。上司をサポートするための試練かもしれません。

インタビューレビューデータ共有

情報はあまりありませんが、細かさにあります。以下に、私を大いに助けてくれたいくつかの面接レビュー資料を簡単に共有します。

余計な言葉はお話ししませんが、次に面接のレビュールートをご紹介します。面接の準備もしているのに効率よくレビューする方法がわからない場合は、私のレビュールートを参考にしてください。ご不明な点がございましたら、お気軽にお問い合わせください。

履歴書+ソーシャルリクルートソリューション+従来の人事面接分析

上記は、Androidの中間および上級の面接で遭遇した実際の質問の要約です。これがすべての人に役立つことを願っています。同時に、多くの人が履歴書の作成、キャリアの混乱、およびHRクラシック面接に関する多くの面接の質問に遭遇することがよくあります。質問。同様に、履歴書の作成、ゴールデンスリークラブとシルバーフォークラブによる採用のパズル、人事面接のフルセットも収集してまとめました。ご不明な点がございましたら、専門的な回答を提供いたします。

次はシステムのレビュールートです、あなたはそれを参照することができます:

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.ソースコードを読み、実際の戦闘ノートを見て、神の考えを学びます

「プログラミング言語はプログラマーが表現する方法であり、アーキテクチャーはプログラマーの世界の認識です」。したがって、プログラマーがアーキテクチャーをすばやく理解して学習したい場合は、ソースコードを読むことが不可欠です。ソースコードを読むことは、問題を解決し、物事を理解することであり、さらに重要なことは、ソースコードの背後にあるアイデアを確認することです。プログラマーは、1万行のソースコードを読み、1万種類の練習をします。

主にWeChatMMKVソースコード、AsyncTaskソースコード、Volleyソースコード、Retrofitソースコード、OkHttpソースコードなどが含まれています。

4.面接の前夜に、質問をスプリントします

面接前1週間以内に全力疾走を開始できます。質問をブラッシングするときは、テクノロジーが最優先であり、アルゴリズムは並べ替えなどの基本であり、知的質問は通常、学校の新入生でない限り質問されないことに注意してください。

面接の質問に関して、私はあなたがお互いから学ぶのを助けるために一連の体系的な面接の質問を個人的に準備しました:

上記のコンテンツは、フルバージョンが必要なすべての人、友人と無料で共有できますすべてのコンテンツを表示するにはここをクリックしてください

おすすめ

転載: blog.csdn.net/weixin_44339238/article/details/114268439