ホームページ  >  記事  >  ウェブフロントエンド  >  Android に関するホットな技術面接の質問のまとめ

Android に関するホットな技術面接の質問のまとめ

藏色散人
藏色散人転載
2020-07-31 14:01:433159ブラウズ

おすすめ: 「2020 Android 面接質問まとめ [集]

##はじめに

多くの人は、面接を受けるまでインターネット企業で働いたことがない、またはインターネット企業で短期間働いたことがあるかもしれません。インターネット企業の面接は?また、私の準備が十分ではなかったのか、数回の面接で面接官の質問に戸惑い、惨めな不合格に終わりました。

以下は、私がまとめた Android の面接の質問の概要です。スペースの都合上、注目のテクノロジー部分の質問のみをリストします。他の面接の質問の内容は後で更新されます。知識ポイントを更新しましたが、このインタビュー集を編集するのにも多くの時間がかかりました。

1. コンポーネント化

(1) 概念:

コンポーネント化: APP を複数のモジュールに分割し、各モジュールはコンポーネントであるか、コンポーネントである可能性があります 基本的なライブラリが提供されます依存するコンポーネント。開発中、一部のコンポーネントは個別にデバッグできます。コンポーネントは相互に依存する必要はありませんが、相互に呼び出すことができます。最終的にリリースされると、すべてのコンポーネントは、メイン APP プロジェクトの依存関係。

(2) 起源:

    アプリのバージョンが繰り返され、新しい機能が常に追加され、ビジネスが複雑になり、保守コストが高くなります
  1. ビジネスの結合が高く、コードが肥大化しているため、チーム内で複数人で共同開発することが困難です
  2. Android のコンパイル コードがスタックしており、単一プロジェクト内のコード結合が深刻です。一部の変更には再コンパイルと再コンパイルが必要です。梱包には時間と労力がかかります。
  3. 単体テストに便利で、他のモジュールに注目することなく 1 つのビジネス モジュールだけを変更できます。
(3) 利点:

    コンポーネント化により、共通モジュールを分離して均一に管理することで再利用性が向上し、ページをより細かい粒度のコンポーネントに分割できます。コンポーネントには UI 実装が含まれており、また、データ層とロジック層を含めることもできます。
  1. 各コンポーネントは個別にコンパイルできるため、コンパイルが高速化され、個別にパッケージ化できます。
  2. 各プロジェクト内の変更は他のプロジェクトには影響しません。
  3. ビジネス ライブラリ プロジェクトは、すぐに分離して他のアプリに統合できます。
  4. 頻繁に反復されるビジネス モジュールはコンポーネント アプローチを採用しており、ビジネス ラインの研究開発が相互に干渉することがなく、コラボレーションの効率が向上し、製品の品質が管理され、安定性が向上します。
  5. 並行開発では、チーム メンバーは自分たちで開発した小さなモジュールのみに集中するため、結合が減り、後のメンテナンスが容易になります。
(4) 検討課題:

モード切り替え: APP で個別デバッグと全体デバッグを自由に切り替える方法
部品化後の各業務モジュールで可能別の APP である必要があります (isModuleRun=false)。パッケージをリリースするとき、各ビジネス モジュールは lib 依存関係として使用されます。これは変数によって完全に制御されます。ルート プロジェクト gradle.properties では、isModuleRun=true。 isModuleRunステータスが異なり、独立したAPKかライブラリかを区別するためにロードするアプリケーションとAndroidManifestが異なります。

build.grade での設定:

リソースの競合
複数のモジュールを作成するときに同じリソースを解決する方法 ファイル名の競合ビジネス モジュールと BaseModule のリソース ファイルの名前が重複すると、競合が発生します。解決策は次のとおりです:

各モジュールには app_name があります。リソース名の重複を防ぐために、各コンポーネントのビルドに resourcePrefix "xxx_ を追加します。 Gradleのリソース名の接頭辞を強制的に確認する 各コンポーネントのリソース接頭辞を修正する ただし、resourcePrefix値で制限できるのはxml内のリソースのみであり、画像リソースを制限することはできません。複数のモジュール間で共通のライブラリとツール クラスを参照するには

コンポーネント通信
コンポーネント化後、モジュールは相互に分離され、UI ジャンプとメソッドの呼び出しを実行する方法、ルーティング フレームワークを使用できます。 Alibaba ARouter や Meituan の WMRouter など

各ビジネス モジュールは事前の依存関係を必要とせず、ルーティングを介してジャンプできるため、ビジネス間の結合を完全に解決できます。 #コンポーネントが関連していることはわかっているので、単独でデバッグする場合に他のモジュールから渡されるパラメータを取得する方法
Application

コンポーネントが単独の場合実行時、各モジュールは独自の APK を形成します。これは、複数のアプリケーションが存在することを意味します。明らかに、あまり多くのコードを繰り返し書きたくないので、BaseApplication を 1 つ定義するだけでよく、他のアプリケーションはこの BaseApplication を直接継承します。それで問題ありません。BaseApplication でパブリック パラメーターを定義することもできます。

2. プラグイン化

(1) 概要

プラグイン化というとメソッド数が65535を超えるという問題がありますが、これは解決できます。 Dex の外注を通じて、同時にプラグイン開発を使用することでこれを解決できます。プラグインの概念は、ホスト APP がプラグイン APP をロードして実行するというものです。

(2 つの利点)

大規模なプロジェクトでは、明確な分業を行うために、異なるチームが異なるプラグイン APP を担当することがよくあります。より明確に。各モジュールは異なるプラグイン APK にカプセル化されており、異なるモジュールを個別にコンパイルできるため、開発効率が向上します。上記のメソッド数が制限を超える問題を解決しました。オンラインのバグは、新しいプラグインを起動して「ホットフィックス」効果を実現することで解決できます。ホスト APK のサイズを削減しました。

(3 つのデメリット)

プラグインとして開発されたアプリは Google Play で公開できないため、海外市場が存在しません。

以上がAndroid に関するホットな技術面接の質問のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。