本文出自 Eddy Wiki ,轉(zhuǎn)載請注明出處:http://eddy.wiki/interview-company.html
本文從網(wǎng)絡(luò)上收集了一些公司的 Android 面試題。
Alibaba
一面
- 說一下你怎么學(xué)習(xí)安卓的?
- 項(xiàng)目中遇到哪些問題,如何解決的?
- Android事件分發(fā)機(jī)制?
- 三級(jí)緩存底層實(shí)現(xiàn)?
- HashMap底層實(shí)現(xiàn),hashCode如何對應(yīng)bucket?
- Java的垃圾回收機(jī)制,引用計(jì)數(shù)法兩個(gè)對象互相引用如何解決?
- 用過的開源框架的源碼分析
- Acticity的生命周期,Activity異常退出該如何處理?
- tcp和udp的區(qū)別,tcp如何保證可靠的,丟包如何處理?
二面:
- 標(biāo)號(hào)1-n的n個(gè)人首尾相接,1到3報(bào)數(shù),報(bào)到3的退出,求最后一個(gè)人的標(biāo)號(hào)
- 給定一個(gè)字符串,求第一個(gè)不重復(fù)的字符 abbcad -> c
新浪微博
一面
靜態(tài)內(nèi)部類、內(nèi)部類、匿名內(nèi)部類,為什么內(nèi)部類會(huì)持有外部類的引用?持有的引用是this?還是其它?
靜態(tài)內(nèi)部類:使用static修飾的內(nèi)部類
匿名內(nèi)部類:使用new生成的內(nèi)部類
因?yàn)閮?nèi)部類的產(chǎn)生依賴于外部類,持有的引用是類名.this。
ArrayList和Vector的主要區(qū)別是什么?
ArrayList在Java1.2引入,用于替換Vector
Vector:
線程同步
當(dāng)Vector中的元素超過它的初始大小時(shí),Vector會(huì)將它的容量翻倍
ArrayList:
線程不同步,但性能很好
當(dāng)ArrayList中的元素超過它的初始大小時(shí),ArrayList只增加50%的大小
Java中try catch finally的執(zhí)行順序
先執(zhí)行try中代碼發(fā)生異常執(zhí)行catch中代碼,最后一定會(huì)執(zhí)行finally中代碼
switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch支持使用byte類型,不支持long類型,String支持在java1.7引入
Activity和Fragment生命周期有哪些?
Activity——onCreate->onStart->onResume->onPause->onStop->onDestroy
Fragment——onAttach->onCreate->onCreateView->onActivityCreated->onStart->onResume->onPause->onStop->onDestroyView->onDestroy->onDetach
onInterceptTouchEvent()和onTouchEvent()的區(qū)別?
onInterceptTouchEvent()用于攔截觸摸事件
onTouchEvent()用于處理觸摸事件
RemoteView在哪些功能中使用
APPwidget和Notification中
SurfaceView和View的區(qū)別是什么?
SurfaceView中采用了雙緩存技術(shù),在單獨(dú)的線程中更新界面
View在UI線程中更新界面
講一下android中進(jìn)程的優(yōu)先級(jí)?
前臺(tái)進(jìn)程
可見進(jìn)程
服務(wù)進(jìn)程
后臺(tái)進(jìn)程
空進(jìn)程
tips:靜態(tài)類持有Activity引用會(huì)導(dǎo)致內(nèi)存泄露
二面
- service生命周期,可以執(zhí)行耗時(shí)操作嗎?
- JNI開發(fā)流程
- Java線程池,線程同步
- 自己設(shè)計(jì)一個(gè)圖片加載框架
- 自定義View相關(guān)方法
- http ResponseCode
- 插件化,動(dòng)態(tài)加載
- 性能優(yōu)化,MAT
- AsyncTask原理
- 65k限制
- Serializable和Parcelable
- 文件和數(shù)據(jù)庫哪個(gè)效率高
- 斷點(diǎn)續(xù)傳
- WebView和JS
- 所使用的開源框架的實(shí)現(xiàn)原理,源碼
網(wǎng)易杭研
一面:
- 自我介紹
- Android中ClassLoader和java中有什么關(guān)系和區(qū)別?
- 熟不熟jvm,說一下Jvm的自動(dòng)內(nèi)存管理?
- 語言基礎(chǔ),String類可以被繼承嗎?為什么?
- Final能修飾什么?(當(dāng)時(shí)我說class、field、method,他說還有嗎?然后又叫我不要在意,后來回想起,應(yīng)該是問到我在參數(shù)里面要不要用final,接下來是因?yàn)槟涿麅?nèi)部類)
- Java中有內(nèi)存泄露嗎?(先說本質(zhì),再結(jié)合handler+匿名內(nèi)部類)當(dāng)時(shí)如何分析的?
- 描述下Aidl?覺得aidl有什么缺陷(這里在這個(gè)問題上回答有欠缺)
- 評(píng)價(jià)一下我,如果順利進(jìn)網(wǎng)易,需要往技術(shù)棧加什么點(diǎn)盡快投入業(yè)務(wù)?
二面:
- 用過什么開源,舉一個(gè)例子?(volley)
- Activity生命周期?情景:現(xiàn)在在一張act1點(diǎn)了新的act2,周期如何?
- Act的launchMode,有沒有結(jié)合項(xiàng)目用過(自己的程序鎖和微信的PC端登陸對比,不過我現(xiàn)在又發(fā)現(xiàn),應(yīng)該大約估計(jì)可能是動(dòng)態(tài)加載的一個(gè)缺陷,如果有找到相關(guān)信息,請務(wù)必跟我說。具體問題就是,當(dāng)在PC端登錄時(shí),Android終端的微信會(huì)跳出,即使wechat的task不是在fore,當(dāng)按下確認(rèn),返回的是wechat,而不是自己先前的app)
- View的繪制原理,有沒有用canvas自己畫過ui?
- 以后想做Android什么方向?(中間件+SDK)
- 怎么看待前端和后端?
- 如果學(xué)前端會(huì)如何學(xué)?
- 優(yōu)缺點(diǎn)?興趣?
- 想不想來杭州?
- 評(píng)價(jià)一下我?往技術(shù)棧加什么?
三面HR:
- 為什么想來網(wǎng)易?
- 有投其他公司嗎?
- 網(wǎng)易最吸引你的是什么?
- 想來杭州嗎?
- 評(píng)價(jià)一下我?
美團(tuán)
一面
- 自我介紹
- 面向?qū)ο笕筇匦?/li>
- Java虛擬機(jī),垃圾回收
- GSON
- RxJava+Retrofit
- 圖片緩存,三級(jí)緩存
- Android啟動(dòng)模式
- 四大組件
- Fragment生命周期,嵌套
- AsyncTask機(jī)制
- Handler機(jī)制
二面
- 面試官寫程序,看錯(cuò)誤。
- 面試官寫程序讓判斷GC引用計(jì)數(shù)法循環(huán)引用會(huì)發(fā)生什么情況
- Android進(jìn)程間通信,Binder機(jī)制
- Handler消息機(jī)制,postDelayed會(huì)造成線程阻塞嗎?對內(nèi)存有什么影響?
- Debug和Release狀態(tài)的不同
- 實(shí)現(xiàn)stack 的pop和push接口 要求:
- 1.用基本的數(shù)組實(shí)現(xiàn)
- 2.考慮范型
- 3.考慮下同步問題
- 4.考慮擴(kuò)容問題
蜻蜓FM
一面
- Toolbar的使用
- 如何判斷本地緩存的時(shí)候數(shù)據(jù)需要從網(wǎng)絡(luò)端獲取
- 跨進(jìn)程間通信
- Handler消息機(jī)制
- SharedPreference實(shí)現(xiàn)
- 快速排序
- 項(xiàng)目難點(diǎn)
豌豆莢三面
豌豆莢一面
- 介紹一下你的項(xiàng)目
- 網(wǎng)絡(luò)框架的搭建
- 圖片加載框架的實(shí)現(xiàn)
- 寫個(gè)圖片瀏覽器,說出你的思路
- 上網(wǎng)站寫代碼,如下: 有一個(gè)容器類 ArrayList,保存整數(shù)類型的元素,現(xiàn)在要求編寫一個(gè)幫助類,類內(nèi)提供一個(gè)幫助函數(shù),幫助函數(shù)的功能是刪除 容器中<10的元素。
豌豆莢二面
- Activity的啟動(dòng)模式
- 事件分發(fā)機(jī)制
- 寫代碼,LeetCode上股票利益最大化問題
- 寫代碼,劍指offer上第一次只出現(xiàn)一次的字符
豌豆莢三面
- 聊項(xiàng)目,聊大學(xué)做過的事
- 寫代碼,反轉(zhuǎn)字符串
- 寫代碼,字符串中出現(xiàn)最多的字符。
2016年4月某公司面試題及面試流程。
靜態(tài)內(nèi)部類、內(nèi)部類、匿名內(nèi)部類,為什么內(nèi)部類會(huì)持有外部類的引用?持有的引用是this?還是其它?
- 靜態(tài)內(nèi)部類:使用static修飾的內(nèi)部類
- 內(nèi)部類:就是在某個(gè)類的內(nèi)部又定義了一個(gè)類,內(nèi)部類所嵌入的類稱為外部類
- 匿名內(nèi)部類:使用new生成的內(nèi)部類
- 因?yàn)閮?nèi)部類的產(chǎn)生依賴于外部類,持有的引用是類名.this
ArrayList和Vector的主要區(qū)別是什么?
ArrayList在Java1.2引入,用于替換Vector
Vector:
- 線程同步
- 當(dāng)Vector中的元素超過它的初始大小時(shí),Vector會(huì)將它的容量翻倍
ArrayList:
- 線程不同步,但性能很好
- 當(dāng)ArrayList中的元素超過它的初始大小時(shí),ArrayList只增加50%的大小
Java中try catch finally的執(zhí)行順序
先執(zhí)行try中代碼發(fā)生異常執(zhí)行catch中代碼,最后一定會(huì)執(zhí)行finally中代碼
switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch支持使用byte類型,不支持long類型,String支持在java1.7引入
Activity和Fragment生命周期有哪些?
- Activity——onCreate->onStart->onResume->onPause->onStop->onDestroy
- Fragment——onAttach->onCreate->onCreateView->onActivityCreated->onStart->onResume->onPause->onStop->onDestroyView->onDestroy->onDetach
onInterceptTouchEvent()和onTouchEvent()的區(qū)別?
onInterceptTouchEvent()用于攔截觸摸事件
onTouchEvent()用于處理觸摸事件
RemoteView在哪些功能中使用
APPwidget和Notification中
SurfaceView和View的區(qū)別是什么?
SurfaceView中采用了雙緩存技術(shù),在單獨(dú)的線程中更新界面
View在UI線程中更新界面
講一下android中進(jìn)程的優(yōu)先級(jí)?
- 前臺(tái)進(jìn)程
- 可見進(jìn)程
- 服務(wù)進(jìn)程
- 后臺(tái)進(jìn)程
- 空進(jìn)程
代碼查錯(cuò)題,沒記下來
tips:靜態(tài)變量持有Activity引用會(huì)導(dǎo)致內(nèi)存泄露
某公司面試題
一面
- service生命周期,可以執(zhí)行耗時(shí)操作嗎?
- JNI開發(fā)流程
- Java線程池,線程同步
- 自己設(shè)計(jì)一個(gè)圖片加載框架
- 自定義View相關(guān)方法
- http ResponseCode
- 插件化,動(dòng)態(tài)加載
- 性能優(yōu)化,MAT
- AsyncTask原理
- 65k限制
- Serializable和Parcelable
- 文件和數(shù)據(jù)庫哪個(gè)效率高
- 斷點(diǎn)續(xù)傳
- WebView和JS
Android基礎(chǔ)——Service
Android基礎(chǔ)——IntentService
Android開發(fā)指導(dǎo)——Service
Android開發(fā)指導(dǎo)——綁定Service
Android開發(fā)指導(dǎo)——進(jìn)程間通信AIDL
Android面試基礎(chǔ)知識(shí)總結(jié)(一)
Android中Java和JavaScript交互
WebView 遠(yuǎn)程代碼執(zhí)行漏洞淺析
WebView中的Java與JavaScript提供【安全可靠】的多樣互通方案
二面
- 所使用的開源框架的實(shí)現(xiàn)原理,源碼
- 沒看過,被pass了
- 去面試之前把用到的開源框架源碼分析一定要看看啊