成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Android面試中重要的面試題有哪些-創(chuàng)新互聯(lián)

今天小編給大家分享一下Android面試中重要的面試題有哪些的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

成都創(chuàng)新互聯(lián)公司是一家專注于網站建設、成都網站建設與策劃設計,大祥網站建設哪家好?成都創(chuàng)新互聯(lián)公司做網站,專注于網站建設十載,網設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:大祥等地區(qū)。大祥做網站價格咨詢:18980820575
說一下java多態(tài)的理解,以及接繼承,和接口的理解

對于多態(tài)的定義
不同類的對象對統(tǒng)一函數(shù)做出不同對的響應或者動作。
作用
主要是消除類之間的耦合性,靈活性比較強,利于代碼的編寫和修改。尤其在處理大量的運算和操作時,可以靈活地簡化,替換或者是修改代碼!

三個必要條件
1、一個凳子(繼承extends)
2、重寫
3、父類引用指向子類對象

for example

Android面試中重要的面試題有哪些

Android面試中重要的面試題有哪些

Android面試中重要的面試題有哪些

Android面試中重要的面試題有哪些

Android面試中重要的面試題有哪些

Android面試中重要的面試題有哪些

**測試結果:

Android面試中重要的面試題有哪些

oKhttp的 原理

1.同步和異步:

  • 1.異步使用了Dispatcher來將存儲在 Deque 中的請求分派給線程池中各個線程執(zhí)行。

  • 2.當任務執(zhí)行完成后,無論是否有異常,finally代碼段總會被執(zhí)行,也就是會調用Dispatcher的finished函數(shù),它將正在運行的任務Call從隊列runningAsyncCalls中移除后,主動的把緩存隊列向前走了一步。

2.連接池:

  • 1.一個Connection封裝了一個socket,ConnectionPool中儲存s著所有的Connection,StreamAllocation是引用計數(shù)的一個單位

  • 2.當一個請求獲取一個Connection的時候要傳入一個StreamAllocation,Connection中存著一個弱引用的StreamAllocation列表,每當上層應用引用一次Connection,StreamAllocation就會加一個。反之如果上層應用不使用了,就會刪除一個。

  • 3.ConnectionPool中會有一個后臺任務定時清理StreamAllocation列表為空的Connection。5分鐘時間,維持5個socket

3.選擇路線與建立連接

  • 1.選擇路線有兩種方式:

  • 3.代理好處:HTTP代理會幫你在遠程服務器進行DNS查詢,可以減少DNS劫持。

  • 1.無代理,那么在本地使用DNS查找到ip,注意結果是數(shù)組,即一個域名有多個IP,這就是自動重連的來源

  • 2.有代理HTTP:設置socket的ip為代理地址的ip,設置socket的端口為代理地址的端口

  • 2.建立連接

  • 1.連接池中已經存在連接,就從中取出(get)RealConnection,如果沒有命中就進入下一步

  • 2.根據選擇的路線(Route),調用Platform.get().connectSocket選擇當前平臺Runtime下最好的socket庫進行握手

  • 3.將建立成功的RealConnection放入(put)連接池緩存

  • 4.如果存在TLS,就根據SSL版本與證書進行安全握手

  • 5.構造HttpStream并維護剛剛的socket連接,管道建立完成

4.職責鏈模式:緩存、重試、建立連接等功能存在于攔截器中網絡請求相關,主要是網絡請求優(yōu)化。網絡請求的時候遇到的問題

線程同步的問題,常用的線程同步

1.sycn:保證了原子性、可見性、有序性
2.鎖:保證了原子性、可見性、有序性

  • 1.自旋鎖:可以使線程在沒有取得鎖的時候,不被掛起,而轉去執(zhí)行一個空循環(huán)。

  • 1.優(yōu)點:線程被掛起的幾率減少,線程執(zhí)行的連貫性加強。用于對于鎖競爭不是很激烈,鎖占用時間很短的并發(fā)線程。

  • 2.缺點:過多浪費CPU時間,有一個線程連續(xù)兩次試圖獲得自旋鎖引起死鎖

  • 2.阻塞鎖:沒得到鎖的線程等待或者掛起,Sycn、Lock

  • 3.可重入鎖:一個線程可多次獲取該鎖,Sycn、Lock

  • 4.悲觀鎖:每次去拿數(shù)據的時候都認為別人會修改,所以會阻塞全部其他線程 Sycn、Lock

  • 5.樂觀鎖:每次去拿數(shù)據的時候都認為別人不會修改,所以不會上鎖,但是在更新的時候會判斷一下在此期間別人有沒有去更新這個數(shù)據,可以使用版本號等機制。cas

  • 6.顯示鎖和內置鎖:顯示鎖用Lock來定義、內置鎖用synchronized。

  • 7.讀-寫鎖:為了提高性能,Java提供了讀

3.volatile

  • 1.只能保證可見性,不能保證原子性

  • 2.自增操作有三步,此時多線程寫會出現(xiàn)問題

4.cas

  • 1.操作:內存值V、舊的預期值A、要修改的值B,當且僅當預期值A和內存值V相同時,將內存值修改為B并返回true,否則什么都不做并返回false。

  • 2.解釋:本地副本為A,共享內存為V,線程A要把V修改成B。某個時刻線程A要把V修改成B,如果A和V不同那么就表示有其他線程在修改V,此時就表示修改失敗,否則表示沒有其他線程修改,那么把V改成B。

  • 3.局限:如果V被修改成V1然后又被改成V,此時cas識別不出變化,還是認為沒有其他線程在修改V,此時就會有問題

  • 4.局限解決:將V帶上版本。

5.線程不安全到底是怎么回事:

  • 1.一個線程寫,多個線程讀的時候,會造成寫了一半就去讀

  • 2.多線程寫,會造成臟數(shù)據

    Asynctask和線程池,GC相關(怎么判斷哪些內存該GC,GC算法)

1.Asynctask:異步任務類,單線程線程池+Handler
2.線程池:

  • 1.ThreadPoolExecutor:通過Executors可以構造單線程池、固定數(shù)目線程池、不固定數(shù)目線程池。

  • 2.ScheduledThreadPoolExecutor:可以延時調用線程或者延時重復調度線程。 3.GC相關:重要

  • 1.搜索算法: 1.引用計數(shù)
    2.圖搜索,可達性分析

  • 2.回收算法: 1.標記清除復制:用于青年代
    2.標記整理:用于老年代

  • 3.堆分區(qū): 1.青年區(qū)eden 80%、survivor1 10%、survivor2 10%
    2.老年區(qū)

  • 4.虛擬機棧分區(qū):
    1.局部變量表
    2.操作數(shù)棧
    3.動態(tài)鏈接
    4.方法返回地址

  • 5.GC Roots:
    1.虛擬機棧(棧楨中的本地變量表)中的引用的對象
    2.方法區(qū)中的類靜態(tài)屬性引用的對象
    3.方法區(qū)中的常量引用的對象
    4.本地方法棧中JNI的引用的對象

java類加載過程:
  • 1.加載時機:創(chuàng)建實例、訪問靜態(tài)變量或方法、反射、加載子類之前

  • 2.驗證:驗證文件格式、元數(shù)據、字節(jié)碼、符號引用的正確性

  • 3.加載:根據全類名獲取文件字節(jié)流、將字節(jié)流轉化為靜態(tài)儲存結構放入方法區(qū)、生成class對象

  • 4.準備:在堆上為靜態(tài)變量劃分內存

  • 5.解析:將常量池中的符號引用轉換為直接引用

  • 6.初始化:初始化靜態(tài)變量

mvc、mvp、mvvm:
  • 1.mvc:數(shù)據、View、Activity,View將操作反饋給Activity,Activitiy去獲取數(shù)據,數(shù)據通過觀察者模式刷新給View。循環(huán)依賴

  • 1.Activity重,很難單元測試

  • 2.View和Model耦合嚴重

  • 2.mvp:數(shù)據、View、Presenter,View將操作給Presenter,Presenter去獲取數(shù)據,數(shù)據獲取好了返回給Presenter,Presenter去刷新View。PV,PM雙向依賴

  • 1.接口爆炸

  • 2.Presenter很重

  • 3.mvvm:數(shù)據、View、ViewModel,View將操作給ViewModel,ViewModel去獲取數(shù)據,數(shù)據和界面綁定了,數(shù)據更新界面更新。

  • 1.viewModel的業(yè)務邏輯可以單獨拿來測試

  • 2.一個view 對應一個 viewModel 業(yè)務邏輯可以分離,不會出現(xiàn)全能類

  • 3.數(shù)據和界面綁定了,不用寫垃圾代碼,但是復用起來不舒服

ANR的形成,各個組件上出現(xiàn)ARN的時間限制是多少

1.只要是主線程耗時的操作就會ARN 如io
2.broadcast超時時間為10秒 按鍵無響應的超時時間為5秒 前臺service無響應的超時時間為20秒,后臺service為200秒

Serializable和Parcelable 的區(qū)別

1.P 消耗內存小
2.網絡傳輸用S 程序內使用P
3.S將數(shù)據持久化方便
4.S使用了反射 容易觸發(fā)垃圾回收 比較慢

Sharedpreferences源碼簡述

1.儲存于硬盤上的xml鍵值對,數(shù)據多了會有性能問題
2.ContextImpl記錄著SharedPreferences的重要數(shù)據,文件路徑和實例的鍵值對
3.在xml文件全部內加載到內存中之前,讀取操作是阻塞的,在xml文件全部內加載到內存中之后,是直接讀取內存中的數(shù)據
4.apply因為是異步的沒有返回值, commit是同步的有返回值能知道修改是否提交成功
5.多并發(fā)的提交commit時,需等待正在處理的commit數(shù)據更新到磁盤文件后才會繼續(xù)往下執(zhí)行,從而降低效率; 而apply只是原子更新到內存,后調用apply函數(shù)會直接覆蓋前面內存數(shù)據,從一定程度上提高很多效率。 3.edit()每次都是創(chuàng)建新的EditorImpl對象.

ANR的形成,各個組件上出現(xiàn)ARN的時間限制是多少

1.只要是主線程耗時的操作就會ARN 如io
2.broadcast超時時間為10秒 按鍵無響應的超時時間為5秒 前臺service無響應的超時時間為20秒,后臺service為200秒

apk瘦身:

1.classes.dex:通過代碼混淆,刪掉不必要的jar包和代碼實現(xiàn)該文件的優(yōu)化
2.資源文件:通過Lint工具掃描代碼中沒有使用到的靜態(tài)資源
3.圖片資源:使用tinypng和webP,下面詳細介紹圖片資源優(yōu)化的方案,矢量圖
4.SO文件將不用的去掉,目前主流app一般只放一個arm的so包

以上就是“Android面試中重要的面試題有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注創(chuàng)新互聯(lián)-成都網站建設公司行業(yè)資訊頻道。

本文名稱:Android面試中重要的面試題有哪些-創(chuàng)新互聯(lián)
文章位置:http://jinyejixie.com/article10/jjddo.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供品牌網站設計、響應式網站、服務器托管網站設計、關鍵詞優(yōu)化、手機網站建設

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網站建設
武夷山市| 鲜城| 永寿县| 阿拉善右旗| 武隆县| 清镇市| 女性| 新密市| 台南县| 右玉县| 阜南县| 萨迦县| 杭锦后旗| 射洪县| 奉节县| 景洪市| 阿坝县| 奉节县| 万安县| 卢氏县| 新郑市| 襄汾县| 桃园县| 蓝山县| 常山县| 玉树县| 郴州市| 凤山市| 镇平县| 巩留县| 南京市| 子洲县| 五台县| 醴陵市| 无极县| 金乡县| 安康市| 游戏| 苍南县| 江津市| 洱源县|