最近花了大量的時(shí)間復(fù)習(xí)準(zhǔn)備面試。杭州的一二線公司基本上都去面試過了微猖,包括阿里谈息,字節(jié),快手凛剥,滴滴侠仇,有贊,涂鴉犁珠,哈啰(騰訊沒有客戶端的hc)逻炊,其中也拿了幾個(gè)不錯(cuò)的offer。這里就簡(jiǎn)單分享下面試題吧
注: 由于本人之前的職級(jí)有點(diǎn)低犁享,所以這次的目標(biāo)崗位是P6+ ~ P7崗(雖然最終還是只拿到了P6+的崗位)余素。如果有高P的大佬,那么這里的面試題看看就好炊昆,意義不大桨吊。
滴滴(二面掛)
一面:
- 簡(jiǎn)單介紹下項(xiàng)目中遇到的難題,怎么解決的凤巨?
- 大圖加載的優(yōu)化方案
- java注解元注解有哪些屏积,有什么區(qū)別
- 簡(jiǎn)要講解下APT技術(shù)
- ButterKnife為什么在子module要用R2文件,子module為什么不能使用switch-case來對(duì)view的id進(jìn)行區(qū)別處理
- Activity.getWindow什么時(shí)候?yàn)榭?/li>
- Handler 發(fā)送延遲消息磅甩,是否一定會(huì)在指定時(shí)間以后執(zhí)行炊林。異步消息怎么判斷。消息列表是按什么順序排列
- Looper在沒有消息時(shí)卷要,怎么處理渣聚,如何進(jìn)行線程阻塞
二面:
- 簡(jiǎn)要介紹下項(xiàng)目中的亮點(diǎn)
- 主線程修改UI為什么會(huì)導(dǎo)致崩潰独榴,怎么解決的
- 為什么Android要設(shè)計(jì)單線程操作UI
- 簡(jiǎn)單介紹下Activity啟動(dòng)流程
- Handler機(jī)制原理, Looper的阻塞機(jī)制
- 內(nèi)存優(yōu)化做過哪些奕枝,用過哪些工具
快手(一面掛)
一面:
- 如何計(jì)算bitmap大小棺榔,如何檢測(cè)bitmap是否超過了1M,并打印
- 如何給在ImageView里面展示一個(gè)帶邊框的bitmap
- Handler機(jī)制
- ANR有哪些隘道,怎么監(jiān)控
- LRUCache原理
- 什么情況下會(huì)出現(xiàn)ConcurrentModifyException,為什么會(huì)出現(xiàn)症歇,怎么解決
- 線程池使用過沒,有哪些參數(shù)谭梗,什么作用
- HashMap原理
- SparseArray的原理
- SparseArray和HashMap的查找和插入時(shí)間復(fù)雜度是多少
- Android打包流程忘晤, 字節(jié)碼插樁在哪個(gè)流程中實(shí)現(xiàn)
- 熱更新有了解過么,tinker的原理是什么激捏,有什么缺點(diǎn)设塔。 有沒有其他框架沒有這個(gè)缺點(diǎn)的,怎么實(shí)現(xiàn)的
- Http 1.0远舅,Http1.1 ,Http 2.0的區(qū)別 keep-alive和多路復(fù)用有啥區(qū)別
- 了解過HttpDNS么闰蛔,什么作用
- 手寫一個(gè)生產(chǎn)者和消費(fèi)者模型
阿里(三面掛,問了下評(píng)價(jià)說是因?yàn)槟昙o(jì)和職級(jí)图柏,覺得潛力不夠就掛掉了)
一面:
- 卡頓檢測(cè)怎么做的序六,為什么要這么做,會(huì)有兼容問題么
- 如果降低crash率的蚤吹,有做哪些處理
- 覺得哪些東西做的比較好例诀,說一下
- jsBridge是怎么實(shí)現(xiàn)的,如果客戶端向前端發(fā)送消息怎么發(fā)送距辆。
- 在圖片框架選型的時(shí)候怎么考慮的,F(xiàn)resco暮刃,Piccaso跨算,Glide之間的優(yōu)缺點(diǎn)
- 自定義一個(gè)從底部滑出的抽屜,該怎么做椭懊,需要有哪些考慮的點(diǎn)
- 一個(gè)簡(jiǎn)單的RecyclerView诸蚕,說一下手勢(shì)Down,Move氧猬,Up的分發(fā)背犯。如果TextView上面設(shè)置了點(diǎn)擊事件,那么分發(fā)邏輯是怎么樣的
- 項(xiàng)目是怎么進(jìn)行架構(gòu)設(shè)計(jì)的
- 項(xiàng)目是否采用模塊化處理盅抚,怎么做的漠魏,怎么進(jìn)行交互
- git-merge和git-rebase的區(qū)別
二面:
- 現(xiàn)在項(xiàng)目的整體設(shè)計(jì)是怎么樣的
- 降低crash率做了哪些處理
- 怎么檢測(cè)線上卡頓問題
- kotlin相比于java有哪些優(yōu)勢(shì)
- 什么時(shí)機(jī)可以認(rèn)為頁(yè)面加載完成
- 內(nèi)存優(yōu)化有做過哪些
- 講下merge和include
- 講下運(yùn)營(yíng)商DNS劫持,又是如何防止DNS劫持
- 怎么使用Fragment的妄均, 是采用一個(gè)Activity多個(gè)Fragment的形式么
- 有沒有使用過一些跨端技術(shù)
三面:
- 項(xiàng)目合并做了哪些事情
- 怎么檢測(cè)線上卡頓
- 怎么檢測(cè)線上內(nèi)存泄漏
- 做了哪些性能優(yōu)化
- 最近研究了哪些新技術(shù)柱锹,談?wù)効捶?/li>
- 何如學(xué)習(xí)提高自己的技術(shù)
- 說說看自己的優(yōu)劣勢(shì)
- 對(duì)于現(xiàn)在做的產(chǎn)品有什么看法和見解哪自,怎么看待競(jìng)品
有贊(過)
一面:
- 組件化的架構(gòu)怎么設(shè)計(jì)的
- 組件之間怎么通信,除了EventBus還有其他哪些了解過
- EventBus是怎么工作的
- Router框架怎么設(shè)計(jì)的
- LiveData為什么具有生命周期感知能力禁熏,如何實(shí)現(xiàn)的
- APT怎么實(shí)現(xiàn)壤巷,如何生成代碼文件
- MVP與MVVM的區(qū)別
- MVP為什么會(huì)存在內(nèi)存泄漏的可能,怎么解決
- 線程池的創(chuàng)建有哪些參數(shù)瞧毙,有什么作用
- 有用過kotlin么胧华?object關(guān)鍵主要應(yīng)用在哪里? let和run的區(qū)別
- GC有哪些算法宙彪,現(xiàn)代虛擬機(jī)基本采用什么算法矩动,為什么這么做
- Activity的啟動(dòng)流程
- 在APP進(jìn)程還沒創(chuàng)建的時(shí)候,會(huì)做哪些額外操作您访,app進(jìn)程是誰(shuí)創(chuàng)建的
- View是如何顯示出來的
- 如何把像素點(diǎn)顯示到屏幕上
- Glide三級(jí)緩存策略有了解過么
- Glide為什么會(huì)感知生命周期
- 做過哪些性能優(yōu)化
- 最近寫的這篇博客寫的什么铅忿,遇到了什么問題,怎么解決
二面:
- 講講項(xiàng)目的組成
- retrofit2原理
- 用過rxjava2哪些操作符灵汪,zip什么作用檀训。
- 熱修復(fù)的原理
- APT技術(shù)怎么實(shí)現(xiàn),如何理解AOP享言,有過哪些應(yīng)用場(chǎng)景
- MVC峻凫,MVP,MVVM的區(qū)別
- 講一下LiveData+ViewModel怎么實(shí)現(xiàn)生命周期览露, 屏幕旋轉(zhuǎn)時(shí)荧琼,會(huì)保存數(shù)據(jù)么
- 有沒有碰到過LiveData接收多次消息的問題,LiveData的postValue和setValue有什么區(qū)別差牛,平時(shí)怎么使用
- glide怎么實(shí)現(xiàn)生命周期的監(jiān)聽
- 組件化的方案命锄,如何提高編譯效率
- 組件通信用的什么
- 有沒有寫過印象深刻的框架
- 平時(shí)周末會(huì)遇到線上事故么,怎么處理
- 平時(shí)開發(fā)過程怎么溝通協(xié)調(diào)偏化,在里面作為什么角色存在脐恩。
三面:
- 講一下你覺得成長(zhǎng)最大的一個(gè)項(xiàng)目,為什么
- 組件化考慮的因素有哪些侦讨,為什么這么考慮驶冒,為什么使用AAR包就會(huì)提高編譯效率
- 說一個(gè)你覺得做的比較好的點(diǎn)。
- 有沒有跨端經(jīng)驗(yàn)
- 有沒有推動(dòng)過項(xiàng)目的一些方案的制作和實(shí)施韵卤。講一下怎么做的
哈啰出行(過)
一面:
- 講述一下自己做的最有亮點(diǎn)的項(xiàng)目
- view的繪制流程
- View的事件分發(fā)流程
- ViewPager內(nèi)部嵌套同向RecyclerView骗污,RecyclerView滑動(dòng)與ViewPager滑動(dòng)沖突解決方案
- 詳細(xì)說下Handler機(jī)制
- Handler會(huì)存在哪些問題,怎么解決
- 設(shè)計(jì)模式用過哪些沈条,簡(jiǎn)要講述下最熟悉的幾個(gè)設(shè)計(jì)模式需忿,怎么設(shè)計(jì),為什么這么設(shè)計(jì)
- APT怎么實(shí)現(xiàn)的,元注解什么作用贴谎。 IOC怎么實(shí)現(xiàn)
二面:
- 講述一下自己項(xiàng)目亮點(diǎn)
- 講一下路由框架的架構(gòu)設(shè)計(jì)汞扎,路由還可以實(shí)現(xiàn)哪些功能
- 容災(zāi)方案怎么實(shí)現(xiàn),怎么做降級(jí)處理擅这,怎么做AbTest
- App Link有了解過沒
- Handler的機(jī)制澈魄,如果取不到消息接下來怎么做。
- APP啟動(dòng)做過哪些優(yōu)化仲翎,如果啟動(dòng)優(yōu)化的負(fù)責(zé)人痹扇,你會(huì)怎么做
- Activity的冷啟動(dòng)流程
- Application由誰(shuí)創(chuàng)建,Activity由誰(shuí)創(chuàng)建溯香。ContentProvider的onCreate發(fā)生在什么時(shí)候
- 熱更新的原理鲫构,插件化的原理
三面:
- 講述項(xiàng)目經(jīng)歷
- 講一下自己覺得做得最好的地方
- 有做過哪些性能優(yōu)化
- 讓你負(fù)責(zé)埋點(diǎn)功能,你怎么設(shè)計(jì)實(shí)現(xiàn)
- leakcanary實(shí)現(xiàn)原理
- flutter有了解過么
- 講當(dāng)前部門的主要業(yè)務(wù)
涂鴉智能(過)
一面:
- Activity啟動(dòng)流程
- Handler機(jī)制
- 項(xiàng)目中解決過的難題
- Http1.0 http1.1 http2.0的區(qū)別
- Https的請(qǐng)求過程
- 用過抓包工具么玫坛,抓包工具為什么可以抓到請(qǐng)求结笨,如何抓到HTTPS請(qǐng)求,怎么實(shí)現(xiàn)
二面:
- 講幾個(gè)項(xiàng)目中遇到的難題(技術(shù)上的難題或者團(tuán)隊(duì)協(xié)作上面的難題)湿镀,怎么解決
- 如何進(jìn)行團(tuán)隊(duì)協(xié)作
- 講下項(xiàng)目亮點(diǎn)
- EventBus的原理炕吸,還有哪些可以通信的
- LiveData+ViewModel怎么實(shí)現(xiàn)生命周期的
- EventBus和LiveData的優(yōu)缺點(diǎn)
- OKHttp的原理
三面:
- 組件化開發(fā)怎么實(shí)現(xiàn)
- 路由怎么實(shí)現(xiàn),組件化通信有哪些
- 介紹下opengles開發(fā)魔方的流程
- retrofit實(shí)現(xiàn)原理
- 為什么這個(gè)時(shí)候選擇看機(jī)會(huì)
- 涂鴉對(duì)你來說整體印象如何
字節(jié)跳動(dòng)(過)
一面:
- git cherry-pick 操作commit id一樣么
- git merge和rebase的作用
- Fragment 如何傳參的勉痴,有沒有使用構(gòu)造函數(shù)傳參
- SurfaceView和View繪制上面的差別赫模,可以設(shè)置層級(jí)么。 mediaOverlay什么作用
- 插件化和組件化的差別蒸矛, 插件化的加載過程
- 長(zhǎng)圖加載解決方案 DecodeRegion的底層原理
- 算法: A方法返回0和1的概率是p和1-p, 設(shè)計(jì)一個(gè)算法讓0和1返回的概率各是1/2
- opengl 頂點(diǎn)著色器瀑罗, 片段著色器
- classLoader通過什么判斷class是否已經(jīng)加載到內(nèi)存中
- 內(nèi)存優(yōu)化怎么做的
- 滑動(dòng)沖突怎么解決 nestchild和nestparent如何實(shí)現(xiàn)手勢(shì)分發(fā)
二面:
- OpenGLES 怎么使用
- 線程啟動(dòng)方式
- HandlerThread了解過么
- Synchronized原理,notify wait底層是怎么做的雏掠, 了解過鎖的膨脹么
- CAS操作如何保證兩個(gè)線程數(shù)據(jù)安全
- Dialog和Activity屬于同一個(gè)window么斩祭,為什么
- 用過哪些設(shè)計(jì)模式
- 講講設(shè)計(jì)原則,項(xiàng)目里使用情況
- 講講現(xiàn)在項(xiàng)目里的網(wǎng)絡(luò)庫(kù)乡话, OKHttp有哪些優(yōu)勢(shì)(相比較于以前的HttpClient和HttpUrlConnection)
- EventBus 內(nèi)部使用什么樣的數(shù)據(jù)結(jié)構(gòu)保存摧玫,EventBus的優(yōu)缺點(diǎn)
- Bitmap內(nèi)存怎么計(jì)算 假設(shè)一個(gè)100*100的圖片放入xxhdpi的文件夾,在720的手機(jī)上面顯示蚊伞,Config是ARGB8888席赂。 內(nèi)存大小多少
- 講講為什么使用MVVM吮铭,MVP為什么會(huì)出現(xiàn)內(nèi)存泄漏时迫, MVVM為什么不會(huì)出現(xiàn)內(nèi)存泄漏
- VSync信號(hào) 什么作用 同步多次執(zhí)行addView,removeView等UI操作為什么不會(huì)多次進(jìn)行View的繪制
- 算法: 如果將一串路徑反轉(zhuǎn) 例如 /a/b/././c/..d/e -> /e/d/c/b/a
三面:
- 自動(dòng)登出如何處理的
- 登錄之后頁(yè)面谓晌,數(shù)據(jù)刷新怎么處理
- TCP和UDP的區(qū)別掠拳, 講下視頻通話中哪些用到了UDP,哪些用到了TCP
- Java的Thread是JVM創(chuàng)建的還是系統(tǒng)的
- Thread可以設(shè)置大小么
- JVM的內(nèi)存回收算法
- View的onMeasure測(cè)量邏輯
- 解決過的難題
- 講下mvvm的設(shè)計(jì)纸肉,與mvp相比優(yōu)勢(shì)是什么溺欧,如果用mvp如何防止內(nèi)存泄露
- 100個(gè)人編號(hào)為1100喊熟,山洞有100盞燈,編號(hào)為1100姐刁。 人依次過山洞芥牌,當(dāng)人經(jīng)過【燈編號(hào)可以整除人編號(hào)】的路燈時(shí),按下開關(guān)聂使。假設(shè)剛開始燈都是滅的壁拉,那么100個(gè)人出去以后,有多少盞燈是亮著的柏靶。
- 給定兩個(gè)職員弃理,找出最近的公共上級(jí) (樹的最近公共祖先節(jié)點(diǎn))