Kotlinのインタビューの質問!2週間と8000語のAndroidインタビューの長いエッセイがかかりました。この記事をチェックしてください!

序文

現実には、99%の職業は年をとると未来がありません。ほとんどの普通の人々の運命は未来ではなく、有望な人々は年をとるまで待つ必要はありません。未来があるかどうかはもはや重要ではありません。どのラインを選んだとしても、常に健康的な態度が第一です。

私の個人的な観点から、30代のコーダーの気持ちについて書いてください。彼らが増え始めたのは確かに年齢のプレッシャーのためです。たとえば、20代の若者はすべてを理解し、グループ内の事柄に精通している場合があります。IQが足りないのか、自己学習能力が低いのか、基本的なスキルが足りないのか、他の人が一生懸命働いて残業しているのか、30代の人々の危機を知っているのではないかと思うことがあります。

感動した質問ですが、もちろん初めてでしたが、その時、韓国のサムスンで就職の面接をする会社(とりあえずT社)に行きました。T社のインタビュアーはBelyという名前の建築家でした。明らかに、当時のAndroid開発は希少なリソースでした。サービスを知ることはひどいことでした。もちろん、Belyは私を当惑させるつもりはありませんでした。(北京は以上の仕事をしてきました。 4年、彼はよさそうだ。)、私は簡単に答えた:

サービスは、バックグラウンドでの長期タスクの処理に特化したAndroidコンポーネントであり、UIはありません。startServiceとbindServiceの2つの起動メソッドがあります。

あなたはそれを正しく推測しました、それからBelyは私に尋ねました:これらの2つのスタートアップ方法の違い。

startServiceはサービスを開始するだけで、サービスを開始するコンポーネント(Activityなど)とサービスは関連付けられていません。サービスは、サービスがstopSelfを呼び出すか、他のコンポーネントがstopServiceを呼び出す場合にのみ終了します。
bindServiceメソッドはサービスを開始し、他のコンポーネントはサービスのプロキシオブジェクトを取得し、コールバックを介してサービスと対話でき、2つのパーティもバインドされます。イニシエーターが破棄されると、サービスは自動的にバインド解除操作を実行します。すべてのバインディングが見つかりましたサービスは、unBindがアクティブ化された場合にのみ破棄されます。

これが重要な違いです。インタビューの前に、私はSerivceを使用して音楽プレーヤーを作成しました。数年後、深圳の多くの人にインタビューしましたが、その60〜70%はサービスの使用経験がなく、深圳市はAndroid開発にかなり衝動的であると感じました。ここには仕事の機会が多すぎるため、ジュニア開発者は迅速な成功と即座の利益をより望んでおり、彼らは自分であまり努力することなく仕事を見つけることができます(もちろんこれは一方的な理解です)。

もちろん、2種類の通話がサービスのライフサイクル機能に与える影響など、他にも違いがあります。インタビュアーはこの問題について詳しく説明することもできます。

Serviceの使用方法を知っているインタビュアーに会い、何年も前にstartServiceとbindServiceの違いに簡単に答えることができるとき、私は通常もう1つの質問をします。

サービスのonCreateコールバック関数は時間のかかる操作になる可能性がありますか?

多くの人が言うでしょう:はい。

真実が明らかになり、彼の以前の答えは、インタビュー前のインタビューの質問のプレビューにすぎませんでした。サービスのonCreateがメインスレッド(ActivityThread)で呼び出されることがわかっている場合、時間のかかる操作によってUIがブロックされます。通常、もう一度質問します。

時間のかかる操作が必要な場合はどうしますか?

このように、人がその原理を本当に理解し、柔軟に使えるかどうかが一目でわかります。インタビュアーがスレッドとハンドラーメソッドに答えたら、もう一度相手に尋ねます。

IntentServiceと、どのようなシナリオでIntentServiceを使用するかを知っていますか?

これはインタビュアーが見なければならないことでもあります。実際のプロジェクトでは、開発者が特定の問題について特定の深さを持っている必要があり、Android全体に関する特定の幅広い知識も必要です。深さは、その人が問題に真剣であり、それを掘り下げる精神を持っていることを意味し、幅は、人が同じ問題に直面したときに、さまざまな実行可能な解決策から最も適切なものを選択するのが簡単になることを意味します。

サービスの実際のプロジェクトは多くの人に無視されてきました。なぜサービスが非常に重要であると繰り返し強調したのですか。サービスを完全に知らない場合、作業でどのような問題が発生するかを見てみましょう。

シナリオ:アプリケーションがインターネットからMP3ファイルをダウンロードし、アクティビティにプログレスバーを表示する場合、アクティビティでは画面を回転できる必要があります。その後、画面が切り替わるとActvitiyが再起動します。ダウンロードの進行状況バーに進行状況が正しく表示されるようにするにはどうすればよいですか?

サービスの概念を持たない人は、一般的に次の解決策を考え出します。

  1. 進行状況は、画面が切り替わる前にキャッシュされ、画面が切り替わった後に読み取られます。
  2. 画面が切り替えられたときにアクティビティが破棄および再構築されないように、android:configChanges設定を使用します。

最初の計画では、進捗値がどこに保存されているかを引き続き尋ねます。画面を変更する過程で、アクティビティの再構築には比較的時間がかかり、数百ミリ秒以上かかる場合があることがわかっています。その後、ダウンロードスレッドはこの時点でまだ機能しており、進行状況は一貫していない必要があります。保存中の進捗状況この問題に対処するには??

2番目のソリューションでは、自分で考え始めることができます。実際のプロジェクトでは、ContentViewの水平および垂直レイアウトを処理するためにいくつかの追加の作業が必要になる場合があります。

この問題を解決するためにサービスを使用する場合、それは完璧に見えますが、アクティビティ(UI)とサービスの間の相互作用が含まれます。これについては後で説明します。

終わり

優れたAndroid開発者になりたい場合は、基本事項と重要事項に集中して詳細な調査を行ってください。

多くのジュニアおよびミドルレベルのAndroidエンジニアにとって、スキルを向上させたい場合、彼らはしばしば自分で成長します。断片化されたシステムの学習効果は非効率的で、長く、無力です。これらのアーキテクチャテクノロジーはコンパイルされており、Android開発の友人を参照し、迂回を回避することを望んでいます。この記事の焦点は、あなたが成長したかどうかであり、残りは重要ではありません。読者がこれを覚えておいてください。

ここでは、著者が建築哲学の観点から分析したビデオと情報を共有しています。私は過去6か月の建築経験を整理し、最新のレコーディングを準備しました。このビデオは、さまざまなインスピレーションをもたらすことができると信じています。報酬。

Android Advanced Learning Database

Android Advanced、Android Advanced Video、Flutter、Java Basics、kotlin、NDKモジュール、コンピューターネットワーク、データ構造とアルゴリズム、WeChatアプレット、インタビュー質問分析、フレームワークソースコードのすべての学習資料を含む、合計10のトピック!

大廠インタビューの質問

PS:秋の募集と私自身のAndroidレビューノート(Androidの基本的な知識ポイントとAndroidの拡張機能を含む)によって収集された、第1層および第2層のインターネット企業(BAT、Xiaomi、Huawei、Meituan、およびDidiを含む)に対する20セットの実際のAndroidインタビュー質問ナレッジポイント)、Androidソースコード分析、デザインパターンの概要、Gradleナレッジポイント、一般的なアルゴリズムの質問の概要。)

「2019-2021バイトビートAndroidインタビューの長年にわたる実際の質問分析」

%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81 .md)】。**

おすすめ

転載: blog.csdn.net/Sunbuyi/article/details/113930557