Android開発ビデオチュートリアル!雇用を求めているAndroid開発者向けに編集および作成された、12を超える主要メーカーからの実際のAndroidインタビューの質問のコレクション

序文

最近、2つのドラマが爆発しました。30と20だけが混同されていません。実際、私はこれら2つのテレビドラマを見始めたばかりですが、逆かと思います。29であるべきではありませんか、30は混乱していませんか?後で考えてみると、彼は実際にこの残酷な現実を私たちに伝えたいと思うはずです!20歳のこの時代、私たちは成熟し、世界の残酷さを受け入れなければなりません。混乱しないように時間を与える時間はありません。世界は常に私たちをこのように成長させます。そして、30は将来への良い願いよりも優れています!30歳の子供が朝食をどこで食べるかを決めます。過去10年間の苦闘の痕跡、マニーの道端の屋台、シャオキンの温かい幸せ、グジアの豪華な朝食。
私は東芝、オリエンタルグループ、アリ、サニーヘビーインダストリーで働いてきました。15年のプロジェクト開発経験があります。アセンブリ、Java、c / c ++開発言語に精通しています。基盤となるシステム、Webについて詳細に研究しています。開発とモバイル開発。主にアプリケーションレベルのミス、ERPプロジェクト、さまざまな組み込みデバイスソフトウェア(携帯電話、タブレット、スイッチ、多機能マシン、ドローン、テレビ、スマートホームなど)が含まれます。
最近、このドラマは感情に満ちているので、本当にまた始めましょう、私の人生はまた違うのでしょうか!

面接部+役職:商品化​​-シニアAndroid開発エンジニア
面接感:顔全体が比較的疲れており、基本顔、クロス顔、ボス顔、6人の面接官(最初に言った3面から+ HR顔が見える少し悪化します(¬_¬)。アルゴリズムはまだ上司に書かれていますが、幸いインタビュアーは私を当惑させませんでした(私はアルゴリズムがあまり準備していなかったと正直に説明しました、ねえ...)、アルゴリズムはそれほど難しくありません。プロジェクト全体には、基本よりも多くの質問があります。
面接の提案:アルゴリズムと基盤は足がかりであり、プロジェクトは試金石であり、優れた面接画像はボーナスアイテムです。
履歴書に記載されている項目について考えてみてください。なぜこのプロジェクトを行ったのですか?このプロジェクトの目標は何ですか?私の計画は何ですか?他のプログラムに対する私の利点は何ですか?プロジェクトのメリットは何ですか?プロジェクトのアーキテクチャ図を描くことはできますか?プロジェクトで使用される主なフレームワークの原則は、前後で明確ですか?(私はおそらくプロジェクトから身を守ったでしょう、そして基本的な準備は少し急いでT ^ Tです)。
オンサイトまたはビデオインタビューの場合は、優れたインタビュー画像がさらに必要です。TL面接では、他の多くの面接官よりも、人全体のイメージが良く、疲れを感じさせないというのがいいとおっしゃいました。

[片面-基本面]

  1. Androidを開発したとき、UIドラフトのピクセルをどのように適応させましたか?
  • dpi:画面のピクセル密度。システムソフトウェアで指定された単位サイズあたりのピクセル数を指します。多くの場合、システムの工場出荷時の構成ファイルに書き込まれる固定値です。
  • ppi:これは画面のピクセル密度でもありますが、これは物理的な概念であり、客観的に存在し、変化することはありません。dpiは、物理ピクセル密度を参照した後にソフトウェアによって手動で指定された値です。これにより、特定の間隔の物理ピクセル密度がソフトウェアで同じ値を使用するようになります。
  • dpと適応レイアウトおよび重み比例レイアウトは、適応問題の90%を解決できますたとえば、すべての1080P携帯電話のdpiが480であるとは限らないため、GoogleのPixel2(1920 * 1080)のdpiは420です。
  • 幅と高さの修飾子の適応:市場に出回っているすべてのAndroidスマートフォンの幅と高さのピクセル値を使い果たし、参照解像度を設定し、他の解像度はこの参照解像度に基づいて計算されます。さまざまなサイズのフォルダーで、対応する寸法を書き込むこのサイズのファイル。ただし、致命的な欠陥があります。つまり、フィットするように正確にヒットする必要があり、アプリパッケージのサイズも大きくなります。
  1. 等しい値を持つ2つの整数オブジェクト==それらが等しいかどうかを判断するために比較しますか?

  2. アクティビティAはアクティビティBにジャンプし、アクティビティBは戻るキーを押して、2つのプロセスのライフサイクルに戻ります。

  • ActivityAがActivityBにジャンプするプロセスでは、それぞれのライフサイクルの実行順序。例:A.onCreate A.onStart A.onPause A.onStop B.onCreate B.onStart B.onPause B.onStop B.onDestroy?
    ActivityAおよびActivityBのライフサイクルの実行順序は次のとおりです。A.onPause-> B.onCreate -> B .onStart-> B.onResume-> A.onStop
  • ActivityB戻るボタンを押しますか?
    戻るキーを押した後:B.onPause-> A.onRestart-> A.onStart-> A.onResume-> B.onStop-> B.onDestory
  • ActivityBがウィンドウアクティビティである場合、1と2の結論はどうですか?
    ActivityBがウィンドウの場合、ActivityAがActivityBにジャンプすると、フォーカスを失ったActivityAの部分が表示されるため、onStopは呼び出されません。このとき、ライフサイクルシーケンス:A.onPause-> B.onCreate-> B。 onStart-> B.onResumeが
    押された後戻るキー:B.onPause-> A.onResume-> B.onStop-> B.onDestory
  • 水平画面と垂直画面を切り替えるときにonCreateが呼び出されますか?数回?
    プログラムの実行中、水平画面と垂直画面の切り替え、キーボードの可用性、言語の切り替えなど、一部のデバイスの構成が変更される場合があります。この時点で、アクティビティが再開されます。プロセスは次のとおりです。破棄する前に、onSaveInstancestate()を呼び出してアプリケーションにデータを保存し、次にonDestory()を呼び出し、最後にonCreate()またはonRestoreInstanceStateを呼び出してActiviyを再起動します。画面を切り替えると、各ライフサイクルが再度呼び出されます。水平画面に切り替えるとOnCreateが1回実行され、垂直画面に切り替えるとonCreateが2回実行されます。
  1. 子スレッドをcontext.startActivity()(ApplicationContextなど)にすることはできますか?問題はありますか?

デモを書いて試すことができます。しかし、何が問題になるのかはまだわかっていません...

  1. ハンドラメカニズムの全体的なプロセス; Looper.loop()がメインスレッドをブロックしない理由; IdHandler(アイドル時間メカニズム); postDelay(()の特定の実装); post()とsendMessage()の違い;どのような問題ハンドラーを使用するときとそれを解決する方法に注意を払う必要がありますか?

質問は非常に詳細なので、できる限り準備することができます。メモリリークを回避するために、一連のハンドラーをカプセル化しました。

  1. ネイティブ、H5、およびRNページが混在してジャンプする場合、ページクリアリングブリッジはどのように機能しますか?

自分で作ったプロジェクトの場合は、原則を明確に説明し、明確に説明していない場合は絵を描いてください。

  1. 画面上のビューの表示部分のパーセンテージを計算するにはどうすればよいですか?

  2. ClassLoaderの親委任メカニズム

  3. Httpsの原則を簡単に紹介します

  4. メモリリークの原因とその修正方法を教えてください。

  5. どうすれば、大きな画像をoomなしでダウンロードできるようになりますか?

  6. UIの最適化を行いましたか?また、何をしましたか?

  • GPUオーバードローをデバッグし、オーバードローを適切な範囲に減らします。
  • ネストレベルとコントロールの数を減らし、ビューのツリー構造をできるだけフラットに保ち(見やすいように階層ビューアーを使用)、レンダリングする必要のないすべてのビューを削除します。
  • GPUを使用してレンダリングツールを構成し、問題が発生した特定のステップを特定し、TraceViewを使用してコードを正確に特定します。
  • タグの使用、ネストレベルを下げるためのマージ、viewStubの遅延初期化、インクルードレイアウトの再利用(マージで使用)
  1. WebViewとJSの相互作用の違いは何ですか、shouldOverrideUrlLoadingとonJsPromptの使用

  2. FlutterとKotlinと連絡を取りましたか?

  3. その他のプロジェクト関連の問題

  4. アルゴリズム-二分木はk番目のレベルのノード要素を出力します

2面-プロジェクトスペシャル

  1. ネイティブページ、H5ページ、およびRNページが混在してジャンプする場合、ページクリアリングブリッジが実装されます。

  2. ページハイブリッドフレームワークの設計と難しさ

  3. RNユニバーサルコンテナの設計

  4. ユーザー行動監視プログラムの設計

  5. JSエラー管理プログラム

  6. RNページは、ユーザーの行動とJSエラー管理を監視します。問題発見の利点と最適化ポイントは何ですか?

  7. ネイティブRNに対するMeituanRNの利点は何ですか

3面深みのあるファンデーション

  1. あなたの会社でピカソを使ったことがありますか?紹介させてください

  2. ピカソ単一エンジン、複数のバンドルの場合にデータ分離を確実にする方法は?

  3. 美団RNとピカソの違い

4.プロジェクト関連の問題をいくつか省略します。

  1. RNのページ追跡の実装方法

  2. MeituanホームページはRNページですか?MTFlexBoxの原則

  3. 同期された変更された静的メソッド、通常のメソッド、クラス、メソッドブロックの違い

  4. 同期された基本的な実装原則

  5. 揮発性の役割と原理

  6. int変数は、i ++を操作するために揮発性でマルチスレッドで装飾されています。スレッドセーフですか?i ++スレッドセーフを確保する方法は?AtomicIntegerの根底にある実現原理?

AtomicIntegerを使用してi ++スレッドセーフにします

  1. スレッドプールの理解、およびスレッドプールを作成するためのいくつかの重要なパラメーターについて話します

  2. ハンドラーメカニズムが再度要求します...

  3. バインダーメカニズムとメモリ共有メカニズムの違いは何ですか?

  4. Javaコレクション、ArrayListとHashMapの使用シナリオ、および基礎となる実装原則を紹介します

  5. ArrayListとLinkedListの違い

  6. アルゴリズム-2つの順序付けられたリンクリストのマージ

  7. アルゴリズム-文字列(*と。を除く)、通常(文字、*と。の任意の組み合わせ)を入力し、文字列が有効かどうかを判断します

  8. プロジェクトで遭遇したいくつかの技術的な問題を簡単に紹介します

4面-交差面

  1. 次のコードでは、strの最終的な値は何ですか?整数の値は何ですか?変更されますか?
  • テストサイト:Java値の転送(質問2でも同じ)。コードテストを記述し、changeValue()メソッドの入力パラメーターを変更すると、前の値は変更されません
  • 原則:メソッドはすべてのパラメーター値のコピーを取得します。つまり、メソッド渡されたパラメーター変数の内容を変更できません基本型パラメーターにはパラメーターのコピーが渡され、オブジェクト型パラメーターはオブジェクトアドレスのコピーです。
  • 解決策:changeValue()で、オブジェクトタイプパラメーターの場合オブジェクトアドレスコピーのを直接変更するため、変数のアドレスは以前に変更されていません。オブジェクトインスタンスの値を変更すると、前の変数が変更されます
public void test() {
    String str = "123";
    changeValue(str); 
    System.out.println("str值为: " + str);  // str未被改变,str = "123"
}

public changeValue(String str) {
    str = "abc";
}

  1. 次のコードでは、オブジェクトstudentを再度使用するときにnullにする必要がありますか?

Javaでのメソッドパラメータの使用法の概要:

  • メソッドは、基本データ型(つまり、数値またはブール値)のパラメーターを変更できません。
  • メソッドは、オブジェクトパラメータの状態を変更できます。
  • メソッドは、オブジェクトパラメータに新しいオブジェクトを参照させることはできません
public void test()  {
    Student student = new Student("Bobo", 15);
    changeValue1(student);   // student值未改变,不为null! 输出结果 student值为 name:Bobo、age:15
    // changeValue2(student);  // student值被改变,输出结果 student值为 name:Lily、age:20
    System.out.println("student值为 name: " + student.name + "、age:" + student.age);
}

public changeValue1(Student student) {
    student = null;
}

public static void changeValue2(Student student)  {    
     student.name = "Lily";    
     student.age = 20;
}

  1. Javaでのいくつかのタイプの参照、および弱い参照の使用シナリオ?

  2. スレッドプールの分類、いくつかのコアパラメータを説明しますか?

  3. APKのパッケージングプロセスは何ですか?

  • aaptツールはリソースファイルをパックし、R.javaファイルを生成します
  • aidlツールはAIDLファイルを処理し、対応する.javaファイルを生成します
  • javacツールはJavaファイルをコンパイルし、対応する.classファイルを生成します
  • .classファイルをDavikVMでサポートされている.dexファイルに変換します
  • apkbuilderツールは、署名されていない.apkファイルを生成するためにパッケージ化されています
  • jarsignerは署名されていない.apkファイルに署名します
  • zipalignツールは署名された.apkファイルを整列します
  1. APKに署名する必要があるのはなぜですか?特定の署名メカニズムについて学びましたか?

apk開発者の身元を確認し、コンテンツの改ざんを防ぐために、Androidはapkのセキュリティを確保するために、一連のapk署名スキームを設計しました。つまり、開発者はパッケージ化時にapkに署名し、Androidシステムはapkのインストール時に対応する開発がありますユーザーのIDとコンテンツの正確さを検証するために、apkは検証に合格した後にのみインストールできます。署名プロセスと検証の設計は、非対称暗号化の概念に基づいています。
7.0より前のAndroidで使用されていた一連の署名スキーム:apkのルートディレクトリのMETA-INF /フォルダーに署名ファイルを生成し、インストール中にシステムのPackageManagerServiceで署名ファイルを確認します。
7.0以降、Androidは新しいV2署名スキームを提供します。apk(zip)圧縮ファイル形式を使用して、署名情報を保存するためのデータ領域が元のコンテンツ領域に追加され、インストール中にシステムに同じものが追加されます。署名の検証はPackageManagerServiceで実行されます。V2ソリューションはより安全になり、検証のインストールがますます速くなります。
もちろん、V2署名スキームには下位互換性があります。V2署名が使用されていない場合、デフォルトでV1署名スキームの検証プロセスになります。

  1. なぜdexを分割するのですか?SDK 21はdexを分割しませんが、すべてを直接ロードすることに問題はありますか?

通りすがりの神々から正しい答えを求めてください...

  1. 一般的なデザインパターンは何ですか?提供したJSエラー管理ソリューションにはどのようなデザインパターンを使用しましたか?

  2. アルゴリズム-二分木層の次数トラバーサル、ノードの奇数層逆次トラバーサル、偶数層正次トラバーサル

  3. 今後3〜5年の計画は?

  4. あなたの強みは何だと思いますか?欠点は何ですか?

  5. 現在のランクと最近のパフォーマンスは何ですか

5面-部門TL

  1. 商品化部門に関連する事業紹介(商品化部門は障壁が高く、人材育成のコストが高いことが核となる。他の事業よりも価値があり、事業戦略の知識を豊富に蓄積できる)、それから彼に質問をするように頼む

  2. 今後数年間の計画はありますか?人生の計画は何ですか?

  3. あなたの強みは何だと思いますか?欠点は何ですか?

  4. 現在のランクと最近のパフォーマンスは何ですか

  5. なぜあなたにそのような良いパフォーマンスを与えるのですか?

  6. 他に機会はありますか?アリインタビューの状況

6面-ビッグボス

  1. アルゴリズム-配列の挿入、拡張を検討

  2. プロジェクトで遭遇するより困難なことは何ですか?

  3. 美団でのあなたのビジネスは何ですか?

  4. 今後数年間の計画は?

  5. あなたの強みは何だと思いますか?欠点は何ですか?

  6. 現在のランクと最近のパフォーマンスは何ですか

【HR面】

  1. 学部と大学院の専攻はどちらもハードウェアに偏っていますが、関連するソフトウェアの経験はありますか?

  2. 大学院生は学部生ですか、それとも自分で試験を受けますか?

  3. Meituanに行く前にAndroid開発の経験はありますか?

  4. なぜ美団に行くことにしたのですか?なぜ北京に来ることを選ぶのですか?

  5. なぜ転職するのですか?今後の仕事に期待することは何ですか?

ゴールデンセンテンス:今、私はテクノロジーの成長のボトルネックに遭遇しました、そして私はいつもあなたの会社を賞賛してきました。

  1. あなたの現在のランクの最近のパフォーマンスは何ですか?

  2. こんなに良いパフォーマンスで、機会を見るために部門を変えるために美団を選んでみませんか?

  3. いくつかのプロモーションでのパフォーマンスのハイライトは何でしたか?

  4. 家はどこにありますか?家に帰ってそこで開発する計画はありますか?

  5. 快手のような就職の機会をもう一度見たいですか?

  6. アリの現在の面接の進捗状況と状況について質問する

  7. 希望給与

学習ルート+知識コーミング

知識ルートのこの詳細な脳機能マップを整理するのに長い時間がかかりました。もちろん、時間と能力が限られているため、結局のところ、組み込みシステム全体が大きすぎます。私の組み込みクラスメートを含めて、すべてを理解することは不可能です。いくつかのことがカバーされていない可能性があり、欠点はまだ小さいです。パートナーはコミュニケーションを取り、一緒に補足し、一緒に改善し、進歩します。

img

この記事はオープンソースプロジェクトにあります:Android開発はどうですか?面接で高給を得る方法が含まれており、さまざまな方向での自己学習プログラミングルート、面接の質問収集/対面、一連の技術記事などが含まれています。リソースは継続的に更新されています。 。

この記事はオープンソースプロジェクトにあります:Android開発はどうですか?面接で高給を得る方法が含まれており、さまざまな方向での自己学習プログラミングルート、面接の質問収集/対面、一連の技術記事などが含まれています。リソースは継続的に更新されています。 。

今回はここで共有してください次の記事で会いしましょう

おすすめ

転載: blog.csdn.net/a132445/article/details/112950875