2017年面試問題總結(jié)

第一家公司

  • 1:如果最快的獲取控件的寬高宣谈?
    答:三種方法
    1) 方法一 (此方法會加載onMeasure三次)
       int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);  
        int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);  
        imageView.measure(w, h);  
        int height =imageView.getMeasuredHeight();  
        int width =imageView.getMeasuredWidth();  
        textView.append("\n"+height+","+width);  
       ```
2)    方法二(此方法會加載onMeasure二次展辞,但是回調(diào)函數(shù)會回調(diào)很多次  )

ViewTreeObserver vto = imageView.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
int height = imageView.getMeasuredHeight();
int width = imageView.getMeasuredWidth();
textView.append("\n"+height+","+width);
return true;
}
});

3)    方法三(此方法會加載onMeasure二次蕉朵,但是回調(diào)函數(shù)只回調(diào)一次)

ViewTreeObserver vto2 = imageView.getViewTreeObserver();
vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
textView.append("\n\n"+imageView.getHeight()+","+imageView.getWidth());
}
});

- 2:View的分發(fā)機(jī)制?
具體請查看[Android View相關(guān)知識總結(jié)](http://www.reibang.com/p/91fa8faa6925)

- 3: invalidate()和postInvalidate()的使用與區(qū)別关顷?
  Android中實(shí)現(xiàn)view的刷新有兩組方法糊秆,一組是invalidate,另一組是postInvalidate议双,其中前者是在UI線程自身中使用痘番,而后者在非UI線程中使用。
   Android提供了Invalidate方法實(shí)現(xiàn)界面刷新平痰,但是Invalidate不能直接在線程中調(diào)用汞舱,因?yàn)樗沁`背了單線程模型:Android UI操作并不是線程安全的,并且這些操作必須在UI線程中調(diào)用
**利用invalidate()刷新界面**
  實(shí)例化一個Handler對象宗雇,并重寫handleMessage方法調(diào)用invalidate()實(shí)現(xiàn)界面刷新;而在線程中通過sendMessage發(fā)送界面更新消息昂芜。
**使用postInvalidate()刷新界面**
   使用postInvalidate則比較簡單,不需要handler逾礁,直接在工作線程中調(diào)用postInvalidate即可
- 4:多線程原理说铃?

第二家公司
- 1:圖片的三級緩存?
   內(nèi)存-文件-網(wǎng)絡(luò)三層cache機(jī)制嘹履,其中內(nèi)存緩存包括強(qiáng)引用緩存和軟引用緩存(SoftReference),其實(shí)網(wǎng)絡(luò)不算cache债热,這里姑且也把它劃到緩存的層次結(jié)構(gòu)中砾嫉。當(dāng)根據(jù)url向網(wǎng)絡(luò)拉取圖片的時候,先從內(nèi)存中找窒篱,如果內(nèi)存中沒有焕刮,再從緩存文件中查找,如果緩存文件中也沒有墙杯,再從網(wǎng)絡(luò)上通過http請求拉取圖片配并。在鍵值對(key-value)中,這個圖片緩存的key是圖片url的hash值高镐,value就是Bitmap溉旋。所以,按照這個邏輯嫉髓,只要一個url被下載過观腊,其圖片就被緩存起來了邑闲。
  - **1)、內(nèi)存緩存**
  Java中對象的四種引用類型介紹
  強(qiáng)引用
  Java中所有new出來的對象都是強(qiáng)引用類型梧油,回收的時候苫耸,GC寧愿拋出OOM異常,也不回收它儡陨。

Map<String, Bitmap> mImageCache = new HashMap<>();

  軟引用褪子,SoftReference
  內(nèi)存足夠時,不回收骗村。內(nèi)存不夠時褐筛,就回收。這里使用這種方式緩存對象叙身。

Map<String, SoftReference<Bitmap>> mImageCache = new HashMap<>();

  弱引用渔扎,WeakReference
  GC一出來工作就回收它。
  虛引用信轿,PhantomReference
  用完就消失晃痴。
** 使用LruCache類來做緩存**
  LruCache其實(shí)是一個Hash表,內(nèi)部使用的是LinkedHashMap存儲數(shù)據(jù)财忽。使用LruCache類可以規(guī)定緩存內(nèi)存的大小倘核,并且這個類內(nèi)部使用到了最近最少使用算法來管理緩存內(nèi)存。

LruCache<String, SoftReference<Bitmap>> mImageCache = new LruCache<>(1024 * 1024 * 4);

第三家公司
- 1:Dagger2原理即彪?

第四家公司
- 1:Service是否在主線程執(zhí)行紧唱?
  service與activity一樣都存在與當(dāng)前進(jìn)程的主線程中,所以隶校,一些阻塞UI的操作漏益,比如耗時操作不能放在service里進(jìn)行,比如另外開啟一個線程來處理諸如網(wǎng)絡(luò)請求的耗時操作深胳。如果在service里進(jìn)行一些耗CPU和耗時操作绰疤,可能會引發(fā)ANR警告,這時應(yīng)用會彈出是強(qiáng)制關(guān)閉還是等待的對話框舞终。所以轻庆,對service的理解就是和activity平級的,只不過是看不見的敛劝,在后臺運(yùn)行的一個組件余爆,這也是為什么和activity同被說為Android的基本組件。
- 2:bindService和startService區(qū)別夸盟?
  執(zhí)行startService時蛾方,Service會經(jīng)歷onCreate->onStartCommand。當(dāng)執(zhí)行stopService時,直接調(diào)用onDestroy方法转捕。調(diào)用者如果沒有stopService作岖,Service會一直在后臺運(yùn)行,下次調(diào)用者再起來仍然可以stopService五芝。
  執(zhí)行bindService時痘儡,Service會經(jīng)歷onCreate->onBind。這個時候調(diào)用者和Service綁定在一起枢步。調(diào)用者調(diào)用unbindService方法或者調(diào)用者Context不存在了(如Activity被finish了)沉删,Service就會調(diào)用onUnbind->onDestroy。這里所謂的綁定在一起就是說兩者共存亡了醉途。
  多次調(diào)用startService矾瑰,該Service只能被創(chuàng)建一次,即該Service的onCreate方法只會被調(diào)用一次隘擎。但是每次調(diào)用startService殴穴,onStartCommand方法都會被調(diào)用。Service的onStart方法在API 5時被廢棄货葬,替代它的是onStartCommand方法采幌。
  第一次執(zhí)行bindService時,onCreate和onBind方法會被調(diào)用震桶,但是多次執(zhí)行bindService時休傍,onCreate和onBind方法并不會被多次調(diào)用,即并不會多次創(chuàng)建服務(wù)和綁定服務(wù)蹲姐。
- 2:內(nèi)存溢出和內(nèi)存泄漏有什么區(qū)別磨取?
  內(nèi)存溢出 out of memory,是指程序在申請內(nèi)存時柴墩,沒有足夠的內(nèi)存空間供其使用忙厌,出現(xiàn)out of memory;比如申請了一個integer,但給它存了long才能存下的數(shù)拐邪,那就是內(nèi)存溢出慰毅。
  內(nèi)存泄露 memory leak,是指程序在申請內(nèi)存后扎阶,無法釋放已申請的內(nèi)存空間,一次內(nèi)存泄露危害可以忽略婶芭,但內(nèi)存泄露堆積后果很嚴(yán)重东臀,無論多少內(nèi)存,遲早會被占光。
memory leak會最終會導(dǎo)致out of memory犀农!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惰赋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赁濒,老刑警劉巖轨奄,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拒炎,居然都是意外死亡挪拟,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門击你,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玉组,“玉大人,你說我怎么就攤上這事丁侄」喏ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵鸿摇,是天一觀的道長石景。 經(jīng)常有香客問我,道長拙吉,這世上最難降的妖魔是什么潮孽? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮庐镐,結(jié)果婚禮上恩商,老公的妹妹穿的比我還像新娘。我一直安慰自己必逆,他們只是感情好怠堪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著名眉,像睡著了一般粟矿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上损拢,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天陌粹,我揣著相機(jī)與錄音,去河邊找鬼福压。 笑死掏秩,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的荆姆。 我是一名探鬼主播蒙幻,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼胆筒!你這毒婦竟也來了邮破?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抒和,沒想到半個月后矫渔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡摧莽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年庙洼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片范嘱。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡送膳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出丑蛤,到底是詐尸還是另有隱情叠聋,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布受裹,位于F島的核電站碌补,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏棉饶。R本人自食惡果不足惜厦章,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望照藻。 院中可真熱鬧袜啃,春花似錦、人聲如沸幸缕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽发乔。三九已至熟妓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間栏尚,已是汗流浹背起愈。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留译仗,地道東北人抬虽。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像纵菌,于是被迫代替她去往敵國和親斥赋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容