資本寒冬下的 Android 面經
在2018年10月初,公司倒閉,無奈走上找工作的道路,不想自己平時圖安逸,不思進取,再次找工作才發現,android行業也不是站在風口上,豬也能吹上天的世道了.作為技術小菜的我,再找工作那幾個月真是戰戰兢兢,被打擊得信心全無.記錄下我的面試經歷,分享給需要的人.勉勵自己要時時進步,才不會被淘汰.
獵豹移動:(有筆試)
atomicinteger記憶體模型
static編譯時有啥不同,static 語句塊,static變數,static方法,構造初始化順序(靜態繫結)
animation和animator的用法,概述實現原理
Handler,looper,messagequeue,thread,message,每個類功能,關係?
Mvc,mvp的差異
app閃退的原因有哪些?每種情況簡述分析過程
如果一個app存在多程序,請列出全部的ipc方法
作業系統中程序和執行緒有什麼聯絡和區別,系統什麼時候會在使用者態和核心態中切換?
如何載入ndk庫?如何在jni中註冊native函式,有幾種註冊方式?
一個app如果效能不好,怎麼分析?
餓了麼(無筆試)
設計的六大原則
如果hashmap key不一樣,但是hashcode一樣會怎麼樣?
okhttp有什麼優秀的設計模式?builder模式有什麼好處?責任鏈模式有什麼好處?
懶漢模式單例為什麼加volaitle?
hashmap是否執行緒安全?不安全會出什麼問題?
concurrenthashmap讀寫分別是啥情況?
bindservice和startservice生命週期有啥不同?
廣播有幾種?廣播是觀察者模式?跨進城廣播也是觀察者模式嗎?
ams是怎麼找到啟動的那個activity的?
a-b-c介面,其中b是singleinstance的,那麼c介面點back返回a介面,為什麼?怎麼管理棧的?
紅黑樹有啥特性?
在oncreate裡面可以得到view的寬高嗎?
view的getwidth和getmesurewidth有啥區別?
遍歷hashmap的原理?
23種設計模式
中園博林(有筆試)
如何避免out of menmory和anr?
arraymap和hashmap的區別?
如何實現執行緒同步?
簡述android事件分發機制
簡述view繪製流程
用兩個棧實現一個佇列
口頭問
viewpager巢狀滑動衝突怎麼解決?
svg動畫
屬性動畫畫一個拋物線怎麼弄?
立思辰(無筆試)
為了適配多解析度,引入什麼開源框架?
閱讀介面書架用什麼控制元件實現?
佈局怎麼做到每行的文字左右對齊?
直播介面,微信對話介面實現?
效能優化怎麼弄?
vv音樂(有筆試)
筆試題很多
sax解析xml的優點
Contentvalue 鍵值型別
androiddvm的程序與linux的程序說法正確的是?(選擇題)
Android:gravity和android:layout_gravity的區別?
assets與res/raw的區別?
解釋layout_weight的作用
view如何重新整理?
animation.animationlistner幹什麼用的?
android常用佈局及排版效率
collection與collections的區別
匿名內部類是否可以extends其他類?是否可以implement interface(介面)
補間動畫常見的效果?有哪幾個常見的插入器?
override與overload的區別?overloaded的方法是否可以改變返回值的型別?
sleep與wait有什麼區別?
在android中,請簡述jni的呼叫過程?
請結束android.mk的作用,並試寫一個android.mk檔案(包含一個.c原始檔即可)
氣泡排序(程式碼實現)
猴子偷桃問題程式碼實現
給出兩個連結串列的頭指標比如p1,p2,判斷這兩個連結串列是否相交,寫出主要思路即可
口頭問
簡述封裝,繼承,多型
強軟弱虛引用的應用場合
輸出一個數組,不重複?(有點忘記題目什麼意思了)
用四個執行緒計算陣列和(我說用join方法,或者countdownlatch,他說用執行緒池即可)
什麼叫安全釋出物件(多執行緒裡面)final?
策略模式和命令模式是啥?
拓撲排序
陣列和連結串列在中間位置的插入效率
binder的原理
art和dvm在gc上有啥不同?有啥改進?
linux和windows下程序怎麼通訊的?(完全不瞭解)
效能優化做過什麼工作?
一個類實現一個介面,介面引用指向這個類物件,可以不可以呼叫它的tostring方法?
瀏覽器,輸入url匹配,假設有一億條url快取,用什麼資料結構匹配?
recycleview快取機制相比listview快取機制有啥改進?
一個長度為10的arraylist和linklist,在第五條插入,哪個更快?
子類複寫父類的equals方法,但是子類增加了一個成員變數int,請問equals方法咋整?
大數醫療(有筆試)
手寫hashmap
寫生產者消費者模式,不可用syncronized
treemap,hashmap應用場景
位元組跳動(無筆試)
dvm和art的區別
從framework的角度講activity的啟動流程(冷啟動)
手寫演算法,二維陣列,每一行,每一列都是升序,找出某數的下標,沒有輸出[-1,-1],最好的時間複雜度是m+n(行數+列數)
zxing二維碼開源框架流程
contentprovider怎麼升級維護?
constaintlayout
bitmap有幾種格式,分別佔多少位元組
滴滴出行(無筆試)
android事件分發機制,如何下發,如何上傳?
一個介面下拉重新整理要怎麼實現?
bitmap佔用記憶體多少怎麼計算?一個畫素佔幾個位元組?
threadlocal的原理?
framework載入activity的流程
arraylist和linkedlist的應用場景
網路請求相關的框架
好幾萬條簡訊,滑動卡頓怎麼解決?
有沒有了解過三方開源資料庫(好像是騰訊的什麼資料庫框架,不僅僅是懂sqlite)
避免記憶體洩漏,為什麼說handler用成員內部類會記憶體洩漏?activity不是已經到gcroot被切斷了嗎?還有靜態context持有activity的引用會記憶體洩漏,必須要持有怎麼辦?(及時釋放)
計算viewgroup的層級,遞迴實現和非遞迴實現
自己寫一個應用,包名就叫android行不行,為什麼?
主執行緒looper如果沒有訊息,就會阻塞在那,為什麼不回anr?
系統程序可以用webview嗎?
原子類的瞭解
一個app多程序的好處
一個arraylist,裡面全部是int,講所有值是2的整數的節點刪除
arraymap瞭解
binder機制
shareprefrence原理?是否執行緒安全和程序安全?
一個app啟動頁另開一個程序,啟動頁10s後啟動mainactivity,請問5s的時候有幾個程序?
java記憶體結構,記憶體模型
融雲(有筆試)
氣泡排序手寫
如何判斷一個字串是迴文字串
梧桐車聯(電話面試沒過)
為什麼要引入activity這個元件
shareprefrence不是程序安全,假設一個apk兩個程序同時修改shareprefrence怎麼辦?
contenprovider已經是程序間通訊,為什麼還要引入broadcastreceiver?
a啟動b,b啟動c,怎樣可以在c介面點back退回到a?
startservice和bindservice生命週期有什麼不同?
兩個應用同時註冊一個廣播,優先順序都一樣,哪個會先收到廣播?(有序廣播?)
還有些其他的,忘記了
螞蟻金服(電話面試沒過)
threadlocal原理
zxing有過優化提高識別率嗎?
京東
arraylist裡面可以不可以new一個t泛型的陣列?
補間動畫click事件還在原位怎麼解決?
多執行緒併發
隔代資料庫升級
效能優化