おすすめ: 「2020 Android 面接質問まとめ [集]」
1、# Android dvm プロセスと #Linux プロセス ##、 アプリケーション プロセスが同じ概念を持っているかどうか
DVM
仮想マシンを指しますdalivkの。各 Android アプリケーションは独自のプロセスで実行され、独立した Dalvik Virtual があります。マシンインスタンス。そして、それぞれの DVM は Linux のプロセスであるため、次のように考えることができます。同じコンセプトとして。 2##、sim カードの EF カードの機能は何ですか? ##sim カードのファイル システムには、主に携帯電話との通信を目的とした独自の仕様があります。sim 独自のオペレーティング システムを使用できます。EF はストレージと携帯電話との通信に使用されます3 #、組み込みオペレーティング システムのメモリ管理の種類とその特徴は何ですか ?ページ タイプ、セグメント タイプ、セグメント ページ、 MMU を使用、仮想空間とその他のテクノロジー4 、組み込みリアルタイム オペレーティング システムとは#、Android ##オペレーティング システムはリアルタイム オペレーティング システムですか? #?、 組み込みリアルタイム オペレーティング システムは、外部イベントやデータが生成されると、それらを十分な速度で受け入れて処理し、処理結果によって指定された時間内に生産を制御できることを意味します。処理システムに迅速に応答し、すべてのリアルタイム タスクが調整された方法で実行されるように制御する、プロセスまたは組み込みオペレーティング システム。主に産業用制御、軍事機器、 #5##、最長の短いメッセージはいくらですか? byte? 70( 句読点を含む) )、英語 160 バイト 、 android# 種類とは何ですか## のアニメーションの特徴と違いは何ですか? 2 種類、1 つは Tween アニメーション、もう 1 つは種類は #Frame アニメーションです。 #トゥイーン##アニメーション、この実装では、ビュー コンポーネントを移動、拡大、縮小し、透明度を変更できます。別の#Frame 伝統的なアニメーション手法であるアニメーションは、映画のように、配置された画像を順番に再生することで実現されます。 7、ハンドラー仕組みの原理 andriod は ハンドラー と ルーパー を提供しますスレッド間の通信に対応するため。 ハンドラー 先入れ先出しの原則。 #Looper クラスは、特定のスレッド内のオブジェクト間のメッセージ交換を管理するために使用されます。 #(メッセージ交換)。 1 8、mvc について話します#パターンの原理とその応用#android ################################## MVC(Model_view_controller)」 モデル__View _#########コントローラ#########"#########。 MVCアプリケーションは常に次の 3 つの部分で構成されます。 イベント(イベント)結果は コントローラー変更 モデル または 表示 、または両方を同時に変更します。 コントローラー # が モデル # のデータまたはプロパティを変更する限り、すべて依存しますView は自動的に更新されます。同様に、Controller が View を変更する限り、View は、基礎となる Model からデータを取得して、自身を更新します。 View再描画とメモリ リークは、面接でよく聞かれる質問のようです , ハンドルを更新する必要がある場合は、 を使用します。 sendmessage#メッセージを送信##,## し、##ハンドル #getmessage は invaliate または # を実行します##postinvaliate. 2. GCメモリ リーク 一 アクティビティのライフサイクル プラットフォーム アプリケーションは #Android## と同じです # アプリケーションのライフサイクルは均一に制御されます。つまり、アプリケーションの運命は私たちが作成したアプリケーションは他人 (システム) の手に渡っており、それを変更することはできず、学習して適応することしかできません。 これが当てはまる理由を簡単に説明しましょう。携帯電話でアプリケーション , が実行されている場合、次のことが考えられます。テキスト メッセージが電話機に送信されるか、バッテリーが切れた場合、プログラムはこの時点で中断され、電話機の基本機能の提供が優先されます。システムでは、あまりにも多くのリソースを占有することはできません。少なくとも電話機能は確保する必要があります,したがって、リソースが不足すると強制終了される可能性があります。もっと身近に言うと、Activity の基本的なライフサイクルは次のとおりです: Java コード 自分で作成したアクティビティは必要に応じて繰り返されます これらのメソッドを含む、onCreate は、Activity # に含まれます。 ##通常の起動時、呼び出される順序は onCreate ->onStart ->onResume, in Activity殺されるときの順序は onPause -> onStop -> onDestroy 、これは完了ですライフサイクルが終了しましたが、プログラムの実行中に電話がかかってきました。このプログラムをどうすればよいですか? と誰かが尋ねました。新しい Activity が中止されたときに全画面表示になっている場合: onPause->onStop 、復元時、onStart->onResume 、このアプリケーションを中断した人が テーマ は 半透明 または ダイアログ アクティビティその後、## を復元するときは #onPause、##再開#。システムが何をしているのか、そしてこれらのメソッドで何をすべきなのかを詳しく紹介します。 onCreate: をウィンドウにします: アクティビティプロパティ設定 もう少しリラックスして話しましょう,一部の人々は、 シンプルなので、Activity# のテーマを設定するだけです。 ##AndroidManifest.xml で Activity が定義されている文は次のとおりです。 :Xml 。 #####################三つ############### ############# ##バックグラウンドアクティビティ## がシステムによってリサイクルされた場合はどうすればよいですか: onSaveInstanceState プログラム内の アクティビティ A が実行時にアクティブまたはパッシブに別の新しいアクティビティを実行する場合 アクティビティ B この時点で A は #Java# を実行します##コードpublic void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putLong(" id", 1234567890); }public void onSaveInstanceState(Bundle outState) { 呼ぶ側と呼ばれる側: 私たちのメッセンジャー ##意図 発言意図、Intentこれは、この意図です、Intent 電話です。電話がかかってきたら、 再对照一下Intent的一些set方法,就知道怎么调用咯,希望你喜欢:) 1、リストビューどのように最適化しましたか? 。 #################################二、###############ビューの更新 (前述したとおり) 1.View更新するにはどうすればよいですか?
#、航空宇宙、その他の分野で使用されており、システムの応答時間には厳しい要件があり、実際のシステムを使用する必要があります。 -時間システム。ソフトリアルタイムとハードリアルタイムに分けられ、android は linux## をベースにしています。 # カーネルなので、ソフトリアルタイムです。
)ルーパー: スレッドは ## を生成できます#Looper オブジェクト。Message Queue(このスレッドのメッセージ キュー ##) を管理します。 #)。 2)ハンドラー: Handler を構築できます。 新しいメッセージが到着するように Looper と通信するオブジェクトメッセージ キュー; または Looper を # から受信します##Message Queue) によって送信されたメッセージを取得します。 # 3) メッセージ キュー(
メッセージ キュー): は、スレッドによって書き込まれたメッセージを保存するために使用されます。 4) スレッド: UI スレッド
は通常 ですメインスレッド、およびAndroidは、起動時に#を作成しますプログラム##メッセージキュー##。
1. ビューを更新##:
オカレンス:
1.データベースのカーソル #未閉店2.
建設アダプター、キャッシュを使用しない場合コンテンツビュー
派生 listview-----作成の削減の最適化の問題viewオブジェクト,contentview,##を最大限に活用する#静的クラスを使用して、getview/ のプロセスを最適化できます。 3. ビットマップ
オブジェクトが使用されていないときは、recycle()メモリを解放します 4. アクティビティ
# のオブジェクトのライフ サイクルは activity
よりも大きいですデバッグ方法: DDMS==>HEAPSZIE==>dataobject==>[合計サイズ]
#Activity をウィンドウにします: アクティビティプロパティ設定
##三 あなたの背景アクティビティはシステムによってブロックされています
リサイクルをどうするか: onSaveInstanceState
四 呼び出し元: メッセンジャー - 目的
一ライフサイクルアクティビティおよびその他の携帯電話の数 public class MyActivity extends Activity{
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}
ここでインターフェイスを作成し、データの初期化を行います。仕事############onStart:このステップでは、ユーザーに表示され、非対話型になります。
onResume: になります。ユーザーと対話型 (アクティビティ では、スタック システムはスタック アクティビティ # を通じてこれらの個人を管理します) # の先頭で、スタックを実行してポップした後、前の Activity)
onPause: から # に戻ります。 ##このステップは表示されますが、インタラクティブではありません。システムは、CPU を消費するアニメーションやその他の処理を停止します 上記の説明より データの一部をここに保存する必要があることはすでにわかっています,現時点ではプログラムの優先度が低くなり、保存される可能性があるためです。システムによって取り戻されます。ここで保存したデータは onResume で読み出す必要があります。 注: 次の が実行されるため、この方法にかかる時間は短くなります。 activity は、startingonstop:
が非表示になり、上書きされる前に、このメソッドが完了するまで待機しません。次の #アクティビティまでに #onDestroy: これは、activity が強制終了される前に呼び出される最後のメソッドです。外部クラスによって呼び出される可能性があります finish メソッドを使用するか、システムがスペースを節約するために一時的にメソッドを強制終了する場合は、 isFinishing() # を使用できます。 ## それを判断するには、進行状況ダイアログ がスレッドに提出されている場合は、onDestroy# で確認してください。 ##Cancel、そうでない場合は、スレッドが終了したときに Dialog# を呼び出します。 cancel## メソッドは例外をスローします。 onPause,onstop,onDestroy 、3 つの状態では、 activity がシステムによって強制終了される可能性があります。プログラムの正確性を保証するには、# を行う必要があります。 ##onPause () ユーザーが編集したコンテンツをストレージ メディア (通常は ) に保存するための永続化レイヤー操作のコードを作成します。 はすべてデータベースです)。実際の作業では、ライフサイクルの変化によって引き起こされる問題が数多くあります。たとえば、アプリケーションが新しいスレッドを開始し、その時点で中断された場合でも、スレッドを一時停止するか強制終了するかによって、そのスレッドを維持する必要があります。 データをロールバックする必要がありますね。 Activity は強制終了される可能性があるため、スレッドで使用される変数と一部のインターフェイス要素に注意する必要があります。通常、私は ## を使用します。 #Android のメッセージ メカニズム # [Handler,Message] マルチスレッドとインターフェイスの対話に関する質問を処理するための。これについては後ほど、最近こういうことが流行っているので、頭の中を整理してからお話します。 #####################二############### ############# ##Activity
コードandroid:theme="@android:style/Theme.Dialog"
android:theme="@android:style/Theme.Dialog"
##これにより、アプリケーションがダイアログ ボックスの形式でポップアップ表示されます。または Xmlコードandroid:theme="@android:style/Theme.Translucent"android:theme="@ android:style/Theme.Translucent"
は 半透明になります、[フレンドリーリマインダー#-.-]#これと同様 # のプロパティactivity は android.R.styleable #AndroidManifestActivity にあります。 メソッドでは、AndroidManifest.xml 内のすべての要素の属性の導入により、このクラスを参照できます android.R.styleable#上記は属性名です。具体的な値は android.R.style ## にあります。
#たとえば、次のようになります。"@android:style/Theme.Dialog"android.R.style.Theme_Dialog 、#('_'# # に対応) #' に置き換えます。' <--注: これは記事の内容であり、スマイリーフェイスではありません) を説明ファイルで使用できます。
B
完了後に戻ってきます
A , 現時点では 2 つの状況があり、1 つは #A がリサイクルされること、もう 1 つはリサイクルされずに返却されることです#Received#A を再度呼び出す必要があります#onCreate( ) メソッド、直接起動とは異なり、今回は onCreate() にパラメータがあります。 ##savedInstanceState、回復されていない場合は、引き続き onResume になります。 SavedInstanceState
Javaコード
if(savedInstanceState !=null){
long id =savedInstanceState .getLong("id");
}
if(savedInstanceState !=null){
公式の Notepad# と同じ##tutorial
の状況では、特定の note を編集しています。 、突然中断された場合は、この note## の ID を入力してください もう一度起きたら、この id を使用して note# を変更できることを覚えておいてください。 ## これを取り出すと、プログラムがさらに完成します。これは、アプリケーションが何かを保存する必要があるかどうかにも依存します。たとえば、インターフェイスがリストを読み取る場合、特に何も覚えておく必要はありません。 ##スクロール バーの位置を覚えておく必要があるかもしれません...
四
インテントが送信されます。 #これは
#Android
## アーキテクチャの疎結合の本質が大幅に改善されますコンポーネントの再利用性。たとえば、アプリケーション内のボタンをクリックして誰かに電話をかけたい場合、それは非常に簡単です。まずコードを見てください:
Javaコード
:Intentインテント = new Intent();intent.setAction(Intent.ACTION_CALL) ;intent.setData(Uri. parse("tel:" number));startActivity(intent); コードをコピー
このような意図を投げると、システムはあなたの意図を見て電話ダイヤラーを起動し、電話をかけます。連絡先を読んだり、テキスト メッセージや電子メールを送信するには、intent をスローするだけで済みます。この部分は非常にうまく設計されています。 #次に #意図
#誰が必要かをシステムに伝える方法それを受け入れてください 彼はどうですか? Intent
を使用する方法は通常 2 つあります。1 つ目は、次のようにコードを受け取るために必要なクラスを直接指定する方法です。 ##:
Java
コードインテント インテント = 新しい Intent(this,MyActivity.class);
intent.getExtras() .putString( "id","1");###startActivity(intent);###Intent インテント = new Intent(this,MyActivity.class);intent.getExtras().putString("id","1 "); TartActivity(intent);#########コードをコピー############最初の方法は明白で、受信者として MyActivity を直接指定します。 # , そして、MyActivity の MyActivity にデータを渡しました。 getIntent() を使用して、この intent を取得できます。データ。
2 番目のオプションは、AndroidMenifest # を確認することです。 intentfilter# は ##Xml#code
で構成されています<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:value="android.intent.action.EDIT" />
<action android:value="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="vnd.android.cursor.dir/vnd.google.note" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<action android:value="android.intent.action.EDIT" />
<action android:value="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.dir/vnd.google.note" />
</intent-filter><p style="text-indent:21pt;"><span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';">这里面配置用到了</span></span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us">action, data, category</span><span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';">这些东西,那么聪明的你一定想到</span></span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us">intent</span><span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';">里也会有这些东西,然后一匹配不就找到接收者了吗?</span></span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us">action</span><span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';">其实就是一个意图的字符串名称。</span></span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us"><br></span><span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';">上</span></span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;"> </span><span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';">このセクション</span></span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us">インテントフィルター</span><span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';">構成ファイルは、この </span></span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us">Activity</span><span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';"> が別の </span></span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us"> Action</span><span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';"> を受け入れることができることを示しています。もちろん、対応するプログラム ロジックも異なります</span></span>#,<span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us"></span><span style="color:#000000;font-size:10.5pt;">mimeType,<span style="font-family:'宋体';"></span></span>It について言及してください<span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us"></span>#ContentProvider<span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';"></span> で定義されています。自分で実装する場合は、</span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us"></span>ContentProvider<span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';"></span>ご存知のように、他のユーザーによるデータの使用を許可するには、</span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us"></span> mimeType<span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';"></span> を指定する必要があります。原理が明確かどうかはわかりませんが、要約すると、他のインターフェイスを直接呼び出すのではなく、## をスローすることでそのインターフェイスを呼び出します。 </span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us">#intent</span><span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';">、システムがそのインターフェイスを呼び出すのを支援します。これは非常に疎結合であり、ライフサイクルがシステムによって管理されるという原則に準拠しています。 </span></span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us">category</span><span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';"> が何であるかを知りたい場合は、</span></span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us">Android</span><span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';"> が事前にカスタマイズされています</span></span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us">アクション</span><span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';">何であれ、直接公式リンクにアクセスしてください</span></span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us">Intentps:</span><span style="color:#000000;font-size:10.5pt;"> <span style="font-family:'宋体';"> システム アプリケーションを呼び出す方法を知りたい学生は、</span></span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us">logcat</span><span style="color:#000000;font-size:10.5pt;"><span style="font-family:'宋体';"> を詳しく見て、実行するたびに何らかの情報があるかどうかを確認してください。 </span></span><span style="font-family:Verdana, 'sans-serif';color:#000000;font-size:10.5pt;" lang="en-us" xml:lang="en-us">:</span><span style="color:#000000;font-size:10.5pt;"> などのプログラム<pre class="brush:php;toolbar:false">Starting activity: Intent {action=android.intent.action.MAINcategories={android.intent.category.LAUNCHER}flags=0x10200000comp={com.android.camera/com.android.camera.GalleryPicker} }
三、IPC##および原則
##4、##Android マルチスレッド
5、 Androidデザインする理由4
大きなコンポーネント、それらの間の接続は、設計なしで実行できますか (主に MVC パターンを実現するためですが、最も難しいのはjava のモードもこれです。このモードをうまく実行できる製品はほとんどありません [ Technicolor のインタビュアー はこれを質問しました])
#これはあなたのプロジェクトの経験であり、遭遇した困難とそれをどのように解決したかを強調しています。それぞれの技術的なポイントを強調するように努めてください。もちろん、面接官は、実際にそれを実行したかどうかを示すために、このアプリケーションでどのモジュールを使用したか、何クラス使用したかなどの質問をすることがあります。時々、面接官によっては、Android に付属する単体テストを使用したことがありますか、またどのように使用するのかと尋ねられることがあります。もちろん、私は多くの企業にインタビューしましたが、その中にはタブレット、携帯電話、デジタル TV を製造している企業もあれば、erp のようなクライアントを製造している企業もあります。最初の 3 つは、基本的に Android をすべて変更することです。本当にやりたい場合は、 Android、誰もがまだ学ぶべきことがたくさんあります。まとめ 一言で言えば、さまざまなタイプの面接官がいます。面接に臨むときは、技術的なことでも基本的なことでも、心の準備ができていなければなりません。 。 固体。人の会話能力も非常に重要です。つまり、標準中国語ではありません。 少なくともあなたの言うことは他の人に理解されなければなりません。面接に行かなければなりません 担当者が非常に丁寧に説明してくれたので、オファーを獲得できる可能性が高くなります。また、給与交渉でも有利になります。 #~~ もちろん、ある企業の面接官が私にそのテクノロジーについて教えてくれたことがあります。 能力がある限り、どんなにお金を惜しまない、彼は彼ら全員を招待しました。
2. DDMS と TraceView の違いは何ですか? #3. 私のアクティビティ
# がリサイクルされた場合はどうすればよいですか? 4.
#Java に # を導入する方法##C 言語は何ですか? #参考回答
:1.View
invalidate() と #postInvalidate()これら 2 つのメソッドは更新##と呼ばれます#2.DDMS は、スレッドやスタックなどの情報を確認できるプログラム実行ビューアです。
TraceView はプログラム パフォーマンス アナライザーです。3. activity がリサイクルされると、を開始する以外に選択肢はありません。新しいもの
4.java
C言語プログラムを呼び出すには、 JNI#インターフェースを使用して実装できます##上記の答えは次のとおりです。私の個人的な能力には限界があるので、まあ、答えが間違っているのは仕方のないことですが、笑...
回答:
1. View はシステム更新の対象です (システム内に監視するループがあります)イベントやビジネスの処理、描画 UI)、postInvalidate()# を使用できます。 ## システムに更新を求めるプロンプトを表示します。 2.
(本当にわかりません)3.
Activity ライフサイクルを参照してください。destroy# の場合は、 システムによる、言い換えれば、リサイクルする唯一の方法は #start 4.
#JNI 経由で電話します。 sun の英語版「The Java Native InterfaceProgrammer's Guide and Supplement」を読むことをお勧めします。 Web サイトをダウンロードします。
以上がBaidu Android 面接の質問の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。