Android 面試之某些公司的面試題

本文出自 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集合類框架

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集合類框架

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面試——APP性能優(yōu)化

Android中Java和JavaScript交互
WebView 遠(yuǎn)程代碼執(zhí)行漏洞淺析
WebView中的Java與JavaScript提供【安全可靠】的多樣互通方案

二面

  • 所使用的開源框架的實(shí)現(xiàn)原理,源碼
  • 沒看過,被pass了
  • 去面試之前把用到的開源框架源碼分析一定要看看啊

codekk:開源框架源碼解析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,828評(píng)論 25 709
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,633評(píng)論 18 399
  • 整理一些常見的Android面試題(針對于2~3年開發(fā)經(jīng)驗(yàn)中所遇到的問題) synchronized鎖靜態(tài)方法和非...
    appzy閱讀 2,448評(píng)論 4 18
  • 一些編輯命令行的快捷鍵,助你提高效(bi)率(ge) CTRL-B 左移光標(biāo)CTRL-F 右移光標(biāo)CTRL-P 查...
    真徐小白閱讀 418評(píng)論 0 0
  • 剛接觸lol是在S4中段偏末期的時(shí)候,那時(shí)候我玩的一個(gè)網(wǎng)游退出閑著無聊便同一個(gè)好朋友開始了我召喚師生涯。 寒冰是我...
    盎暖閱讀 83評(píng)論 0 0

友情鏈接更多精彩內(nèi)容