2017 android面接問題まとめ

6709 ワード

JAVA知識点:
1.mallocは関数で、newはオペレータです.オブジェクトを初期化できます
2.JAVAのメモリ構造は:スタック領域、スタック領域、静的領域(方法領域)スタック領域:スタックの読み取り速度が最も速いので、いくつかの局部変数と小型データを保存して、各スレッドはすべて自分の私有スタック領域があります:オブジェクト、スタック領域の保存するオブジェクトはスタック領域の中のアドレスで、JVMは1つのスタック領域だけあって、しかもすべてのスレッドに共有されて、オブジェクト自身と配列自身の静的領域を保存します:文字定数といくつかのメンバー変数、コード#コード#
3.Javaメモリモデルでは、すべての変数がメインメモリに格納されることが規定されています.各スレッドには独自のワークメモリがあります.スレッドのワークメモリには、そのスレッドが使用した変数をメインメモリのコピーにコピーして保存します.スレッドによる変数のすべての操作(読み取り、割り当て)は、メインメモリの変数を直接読み書きすることはできません.異なるスレッド間では、相手のワークメモリ内の変数に直接アクセスできません.スレッド間の変数値の転送は、メインメモリで行う必要があります.
4.JAVA運行メモリ:a.ヒープ:JVM管理の最大のメモリ領域であり、すべてのスレッド共有はGC管理の主要領域であり、現在主に世代別回収アルゴリズムを採用している.ヒープは若い世代と若い世代に分けることができ、若い世代はEden、From Survivor、To Survivor b.メソッド領域に細分化することができる.別名Non-Heap、JVMにロードされたクラス情報、静的変数と定数などの情報を記憶する.スレッド共有c.プログラムカウンタ:現在のスレッドで実行されているバイトコードのインジケータに相当する小さなメモリ領域であり、javaメソッドが現在実行されている場合、カウンタは実行中のJVMバイトコード命令のアドレスを記録し、nativeメソッドである場合、空であり、この領域はOutOfMemoryのない唯一の領域d.JVMスタックである:スレッドプライベート、ライフサイクル、スレッド同期、主にいくつかのローカル変数とオブジェクト参照など(javaメソッドサービスを実行するため)e.ローカルメソッドスタックを格納する:JVMスタックと似ており、Nativeメソッドサービスを実行するために異なる
5.JVMスタック、ローカルメソッドスタック、プログラムカウンタはランタイムスレッドのプライベートメモリ領域である
6.GC回収アルゴリズム:a.タグ-クリーンアップ:回収するメモリをマークし、統一的に回収する.欠点は(1)効率が低い(2)大量の不連続な破片が発生し、破片が多すぎてnewの大きなオブジェクトが必要な場合、十分な連続メモリb.複製アルゴリズムが見つからない.欠点は、生存期間が長いオブジェクトの効率が低下するc.タグ-整理(圧縮):タグプロセスはタグ-整理と同様に、整理プロセスは生存オブジェクトを一端に移動し、他端のメモリ(年老いた世代に適している)を整理するd.世代分け整理:年老いた世代と若い世代に積み上げ、若い世代の生存が短い特徴に対して複製アルゴリズムを選択し、年老いた世代の生存期間が長い特徴に対してタグ-整理アルゴリズムを使用する
7.ハッシュ・テーブル:キー値に基づいて直接マッピングされる連続メモリのデータ構造で、マッピング関数があり、ハッシュ・テーブルもハッシュ・リストと呼ばれます.異なる値で同じアドレスが得られる場合があります
8.直接挿入アルゴリズム:安定アルゴリズム;2番目の数から、現在の数字を保存し、前への比較を開始します.前より小さい場合は、前の方を下に1つずらし、大きい場合は飛び出し、最後に現在の数字を空の場所に挿入します.
9.ヒルソートアルゴリズム:不安定なアルゴリズム、配列を距離length/2のいくつかの配列に分けて、順番に直接挿入でソートして、1ラウンドの後でlength/2、lengthが1の時に循環を飛び出します
10.集計ソート:分治アルゴリズム;配列をNのグループに分けて、それぞれ並べ替えて更に2つ合併して、合併した配列は更に2つ並べ替えて合併して、1つの配列しか残っていないことを知っています
11.速排アルゴリズム:分治アルゴリズム;1つの軸の値を選んで、普通は中値で、それから2つに分けて、軸の値より小さいのは左側で、大きいのは右側で、分かれた配列に対して更にこのような操作を行って、配列の長さが2より小さいことを知っています
12.安定アルゴリズム:集計、直接挿入、泡立ち、基数ソート
13.不安定アルゴリズム:高速配列、ヒル、選択、スタックソート
Java基礎知識復習:抽象クラスabstractとinterfaceの違いと関連:(抽象クラスの主な役割は隠しタイプである)1.abstractにはデータメンバー変数があり、abstractを飛ぶメンバーメソッドもあり、データメンバーはインスタンス化することができ、interfaceにはstatic finalのデータメンバーしかなく、初期値2を与えなければならない.1つのクラスは1つのabstractしか実現できませんが、複数のinterfaceを実現できます.
JDK=JRE+JVM+クラスライブラリ
volleyはまず異なるrequest要求を作成し、onResponseでネットワーク要求操作を行い、最後にキューに追加するVolley.newRequestQueue(this).add(あなたのrequest);okhttp:square社オープンソースネットワークリクエストライブラリ、http、https、ファイルダウンロード、ピクチャロードをサポートします.欠点はcallbackがスレッドの中に戻ってきて、UIをリフレッシュできないので、手動で処理する必要があります.パッケージが面倒です.volley:グーグルが脱退したオープンソースネットワーク通信フレームワークは、httpのみをサポートし、インタフェース向けにプログラミングされています.データ量は大きくないが、頻繁な操作を要求するのに非常に適しており、メインスレッドでサービス側を直接呼び出し、戻り結果を処理することができ、キャンセルすることができ、拡張しやすい.欠点は、大きなファイルのダウンロードサポートが悪く、画像のロード性能も悪いことです.volleyパッケージはもっと良くて、簡単で速くて、okhttp性能は優越して、難易度はわりに大きいです;RetrofitはSquare社出品のデフォルトOkHttpパッケージに基づくRESTfulネットワーク要求フレームワークgetのセットであり、一般的にリソース情報の照会に用いられ、POSTは一般的にリソース情報get方式の更新に用いられるデータは最大1024バイトであり、POSTは理論的にサイズ制限がなく、理論的には存在しないが、異なるサーバには異なる制限がある
デッドロックの原因は主に,(1)システムリソース不足(2)プロセススケジューリングが不適切である.(3)資源配分が不適切である.システムリソースが十分であれば,プロセスのリソース要求が満たされ,デッドロックが発生する可能性は低く,限られたリソースを争うことでデッドロックに陥る.次に,プロセス実行の進行順序と速度が異なり,デッドロックが発生する可能性がある.デッドロックを生成する4つの必要条件:(1)反発条件:1つのリソースは一度に1つのプロセスでしか使用できません.(2)要求と保持条件:要求がブロックされた場合、プロセスが所有するリソースは解放されない.(3)条件を剥奪しない:プロセスが実行されない前に、資源を強制的に剥奪することはできない.(4)ループ待ち条件:複数のプロセスの間に1つのヘッダとテールが接続されたループ待ちリソース関係を形成する.この4つの条件はデッドロックの必要条件であり、システムがデッドロックを発生すれば、これらの条件は必然的に成立し、上記の条件の1つが満たさなければ、デッドロックは発生しない.デッドロックの解除と予防:デッドロックの原因、特にデッドロックが発生する4つの必要条件を理解すれば、デッドロックを最大限に回避、予防、解除することができる.だから、システム設計、プロセススケジューリングなどの面でどのようにこの4つの必要条件を成立させないかに注意し、どのように資源の合理的な分配アルゴリズムを確定し、プロセスが永久にシステム資源を占有することを避けるか.また、プロセスが待機状態でリソースを占有することを防止します.そのため、資源の分配に対して合理的な計画を与えなければならない.
volleyは2つのキューに分けられ、1つはCacheで、1つはnetworkです.Cacheチームに参加するにはshouldcacheプロパティを設定する必要があります.そうしないと、デフォルトはnetworkです.
Androidの知識ポイントのまとめ:
Activity    
    1.  Activity:      onCreate  ,    onStart  ,    onResume,Activity      。
    2.  Activity   Activity        :     onPause  ,    Activity   。
    3.  Activity              :     onResume  ,        。
    4.  Activity    Activity    Home     ,      :      onPause  ,    onStop  ,      。
    5.       Activity:      onRestart  ,    onStart  ,    onResume  ,        。
    6.  Activity                ,  2   4 ,      ,    Activity,        Activity:    onCreate  、onStart  、onResume  ,      。
    7.      Activity:     onPause  ,    onStop  ,    onDestory  ,    Activity。

Activity     ,    ? 
    Standard:    activity     activity  ,     (android      )
    SingleTop:              ,       activity     ,       
    SingleTask:                    ,          pop  ,        
    SingleInstance:        activity  ,      ,  (       )      ,     ,        activity

ListView RecyclerView   ?     RecyclerView,    ? 
    RecyclerView ListView   GridView        ,      、          ,               ,        ”   ”     。   RecyclerView API      。          ?     LayoutManager    !         ?      ItemAnimator    ,      。
    
   BroadcastReceive Service    
    
   (  ,  )
        (1NF):         ,            。 
        (2NF):    1NF,         ,          ;                     ,             。 
        (3NF):    2NF,               ,        。
    
    
        :
        ,           ,           . 
               ,            。
      ,                 ,         ,               。
                     。                 、            。           ,          ,               。
           ,               ,             。                      ,                 。             。

                                  ,                     .
              , CPU          ,                  .              ,                (      ,       ),                             .
                    ;                   .
    
Override   :    、    ,  ,  ,                 。         
Overload   :      ,          。         ,      ,           



android    :
    1.       file,cursor          close()   )
    2.Bitmap         recycle()    
    3.handler                 activity  , activity                 ,       Messege   handler  ,
        activity            
            (      Handler   ,   Handler          ,           Handler     。 Activity Destroy Stop           ,mHandler.removeCallbacksAndMessages(null);                Runnable。)
        
    4.           ,   handler   ,        
    5.   activity context    ,   activity,          ,                  

Rxjava

         ,  ,   ? 
Layout      
          ,        
service     
    Json
Handle          ?(     Handle          ) 
           
static   static  
    :            ,      ,          
             ,      。
Volley    
AsyncTask    
ListView