Androidクライアント開発!ByteDance Androidエンジニアのインタビューの準備をするにはどうすればよいですか?Androidギャング

Androidの習得はとても簡単で、アプリとして使い始めることができると多くの人が聞いています。就職の機会が多く、卒業後は就職しやすいです。この見方は、多くのAndroid開発者がキャリアをスタートさせた理由の1つかもしれません。

作業開始時の作業は、主にビジネスニーズに応じたアプリページの機能を実現し、デザイナーのデザインドラフトに応じてページの効果を実現することです。

実現の過程で、次の要件が常に言及されます。

この言葉をもっと大きくしたり、もっと目立たせたりすることはできますか?
デザインドラフトと色が違う気がしますが、再度調整できますか?
なぜあなたはクラッシュし続けるのですか

したがって、1年間働いた後、さまざまなコンポーネントやフレームワークを見つけ、ドラッグアンドドロップし、スタイルを変更することに重点が置かれていることがわかります。**極端な状況(一部のモデルでのクラッシュや画像の読み込みが遅いなど)で問題が発生した後、解決方法がわかりません。私は技術者だと言って恥ずかしいです。

対面共有

向こうの友達に助けを求められ、履歴書が承認された後、面接を呼びかけました。

面接時間は10時30分に予定されていて、20分ほど早く会社の階下に到着しました。会社のフロアは少し複雑で、目的地(食堂について)まで約10分かかりました。

最初のラウンドでは、2人のインタビュアーが交代で質問をします。11時40分に最初の側が集まるのに約1時間かかり、夕食の時間になりました。面接後、出発の準備が整いました。2人の面接官から会議を待つように言われた後、直接エルミアンの面接官に電話をかけ、カフェテリアでみんなが食べるのを見守っていました。

約10分待った後、2人目のインタビュアーが31階に電話をかけてきました。

交代で約1時間尋ねる2人のインタビュアーもいました。エルミアンの後、午後1時近くになり、面接官が私を食堂に連れて行って食事をした後、午後2時にHRヌードルの予約を手伝ってくれました。

全体のプロセスは非常にクールです。3ラウンドの面接、2ラウンドの技術面接(両方とも2人の面接官)、および1ラウンドの人事があります。

技術面

  1. 一般的なアクティビティの種類と説明アクティビティのライフサイクル
    アクティビティには、作成から破棄までさまざまな状態があり、ある状態から別の状態に対応するコールバックメソッドがトリガーされます。これらのコールバックメソッドには次のものがあります。onCreateonStartonResume onPause onStop onDestroy実際、これらのメソッドはすべてonCreateの作成とonDestroyの破棄、onStartの表示とonStopの非表示、onResumeの編集可能(つまりフォーカス)とonPauseのペアで相互に対応します。

  2. 2つのアクティビティ間をジャンプするときに必然的に実行されるメソッドはどれですか?
    たとえば、通常の状況では、それぞれAとBという2つのアクティビティがあります。コンポーネントBがAでアクティブ化されると、AはonPause()メソッドを呼び出し、次にBはonCreate()、onStart()、onResume( )。このとき、Bがフォームをカバーし、AがonStop()メソッドを呼び出します。Bが透過スタイルまたはダイアログボックススタイルの場合、AのonStop()メソッドは呼び出されません。

  3. システムはデスクトップアプリケーションを起動して見つけるのにどのように役立ちますか?
    私はインテントを通して言いました、彼はどのインテントを見つける方法を言いましたか?私はPMSがすべてのapkのAndroidManifest.xmlを解析すると言いました、それが解析されるならば、それは保存されますpackage.xmlにあり、繰り返し解析されることはありません。PMSはそれとともに見つけることができます。

  4. 水平画面と垂直画面を切り替えるときのアクティビティのライフサイクルは
    、マニフェストファイルの構成に関連しています。
    android:configChanges of Activityが設定されていない場合、ライフサイクルごとに画面が再度呼び出されます。デフォルトでは、現在のアクティビティが最初に破棄されてから再読み込みされます。
    Activity android:configChanges = "orientation | keyboardHidden | screenSize"が設定されている場合、画面が切り取られたときに各ライフサイクルが再度呼び出されることはなく、onConfigurationChangedメソッドのみが実行されます。通常、ゲーム開発では、画面の向きがハードコーディングされています。

  5. 画面適応の処理技術は何ですか?
    携帯電話適応は主に2つの状況に分けられます:水平画面と垂直画面の切り替え、および解像度の違い。

  6. ネットワーク最適化の問題
    同じIPと同じポートが接続を多重化する可能性があります。後で、http 2.0の多重化について質問しました。tcpは複数の要求を持つことができると言いました。原則はどうですか?わからないと言った。httpsについては後で話させてください。

  7. 高速な並べ替えと再帰

  8. 配列とリンクリストの違い

技術的な両面

1.データを保存するいくつかの方法:SharePreference、データベース、ファイル

2. Androidデータベースを使用する場合、どのライフサイクルメソッドがありますか:onCreate、onUpgrade

3.データベースにフィールドを追加する場合、何をする必要がありますか?

  • 方法1:テーブル追加列を変更して実行します

  • 方法2:最初に古いテーブルの名前を変更し、次に新しいフィールドを含む新しいテーブルを作成し、次に古いテーブルデータを移行し、最後に古いテーブルを削除します

4.データベースはスレッドセーフですか?

  • 読み取り操作はスレッドセーフです。複数のスレッドまたはプロセスが同じデータベースの内容を読み取る可能性があります。

  • 複数のスレッド操作は書き込み操作の例外をスローします(SqlLiteにはロックメカニズムがあるため、ここではスレッドが安全ではないと思います):複数のプロセスまたはスレッドでsqliteを使用し、同じデータベースを同時に操作すると、例外がスローされます。異なるスレッドまたは複数のSqliteOpenhelperをインスタンス化して同じデータベースを操作することも、同じ問題を引き起こす可能性があります。ただし、異なるスレッドが同じsqliteopenhelperを使用して、操作用のSqliteDatabaseを取得することは可能です。

5. SharePreferenceの実現原則、それはスレッドセーフですか、applyとcommitの違いは何ですか?

commitメソッドにはブール値の戻り値があります。データの変更が保存されると、それはアトミック操作になります。2つのエディターオブジェクトが共有設定パラメーターを同時に操作する場合、commitメソッドを呼び出す最後のエディターになります。最後のデータ値。

applyメソッドには戻り値がありません。2人のエディターが同時に設定オブジェクトを編集する場合、applyメソッドを呼び出してデータを編集する最後のオブジェクトでもあります。applyの送信操作もアトミックですが、メモリにのみ送信されるため、より高速です。

6.ハンドラーメカニズム

7. HashMap、HashTable、ConcurrentHashMapの原則

8.コンピュータネットワークの5層モデル

9.httpステータスコード

10.あなたが遭遇した最も難しい問題は?
私たちの会社のプロジェクトは動的ロードフレームワークを使用していませんが、後で統合されたU3Dプロジェクトは動的にロードする必要がありますが、必要なのはリソースの動的ロードだけです.3番目のライブラリは機能的に私たちのニーズをサポートしていないので、私は各メジャーバージョンのソースコードがサポートされ、動的な修復と交換のロードがサポートされ、アセットリソースの動的な修復とロードがサポートされた後、具体的な詳細が再度説明されます。

やっと

多くの技術リーダーが、面接中に混乱している、面接官よりも年上の年配のプログラマーに会うのを見てきました。これらの人々にはいくつかの共通の特徴があります:おそらく彼らは5年か6年働いているか、毎日繰り返しビジネス部門にコードを書いています。仕事の繰り返しの内容は比較的高く、技術的な内容はありません。彼らのキャリアプランについて尋ねられたとき、彼らは多くのアイデアを持っていませんでした。

実際、30〜40歳は、人のキャリア開発の黄金期です。ビジネスの拡大、技術の幅と深さの向上について独自の計画を立てる必要があります。これにより、キャリア開発の持続可能な開発パスを得ることができます。ドンじっと立っていません。

走り続けると、学ぶことの意味がわかります!

「Androidシニアアーキテクトインタビューガイダンス+2021ビッグファクトリーインタビュー質問」を無料で受け取る

5%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**

[外部リンク画像転送...(img-IAKU1UqC-1614153161066)]

おすすめ

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