前言
首先糯崎,自我介紹一下几缭,我來自廣東某工業(yè)大學(xué)的大四學(xué)生,本科專業(yè)是通信工程沃呢。大二開始自學(xué)Android相關(guān)年栓,斷斷續(xù)續(xù)地看書,做項目樟插,直到真正找公司發(fā)現(xiàn)始終還是一個渣渣韵洋。
后面自從今年(2017)8月中旬在實習(xí)的公司離職之后,一直在忙復(fù)習(xí)基礎(chǔ)黄锤,找工作搪缨,所以很多事情都擱置了。后面發(fā)現(xiàn)好久沒寫過文章了鸵熟,并在秋招中有一些個人的感受副编,因此想記錄下秋招的一些有趣的公司的面試,大神們請輕噴哈流强。
阿里筆試批
以下都是阿里系統(tǒng)的視頻面試
一面北京優(yōu)酷
1.onStart和onResume區(qū)別
2.activity, view痹届,window區(qū)別
3.點擊按鈕的事件傳遞過程,view的事件分發(fā)
4.view的繪制過程
5.handler機制
6.項目
先介紹項目,負責(zé)哪塊打月,難點队腐,解決方式
以下是面試官提及到的一些問題
- 框架源碼
網(wǎng)絡(luò)庫比較,Glide和UIL區(qū)別奏篙,優(yōu)勢缺點等等 - 空指針柴淘,oom(MAT原理),anr(trace文件查看原因)秘通,出現(xiàn)的原因以及如何處理
- 屏幕適配(同一個apk为严,一套720*1280圖片,如何適配多臺手機)
7.情景
- 視頻平緩屏幕放大變橫屏功能如何實現(xiàn)
- 團隊開發(fā)等等肺稀,只選擇杭州嗎第股,項目角色,對團隊的向往
二面北京支付寶
講項目
1.設(shè)計今日頭條首頁有圖片又有視頻的列表
2.設(shè)計手機通信錄话原,如何通過輸入名字快速查找到號碼
3.一個非常簡單的問題作為結(jié)束:數(shù)組鏈表區(qū)別
hr面
阿里的hr可是懂技術(shù)的夕吻,問的問題相對多诲锹,比如手機淘寶,手機京東的技術(shù)上有什么區(qū)別等等梭冠,大概40+分鐘辕狰。
這是再加上我春招找實習(xí)阿里的面試經(jīng)歷。
首先謝謝助班還有助班的朋友控漠,幫我內(nèi)推了手機淘寶技術(shù)部蔓倍,其中還提了很多寶貴的建議。如果下次還有阿里的內(nèi)推盐捷,我建議大家還是早點內(nèi)推偶翅,越早內(nèi)推簡歷基本不刷,后面就開始刷簡歷了碉渡。
在網(wǎng)上完成的測評之后還有一道編程題之后(目測還是動態(tài)規(guī)劃)一個星期之后接到一面電話:
一面(57分鐘)
1.項目源碼(Eventbus)聚谁,數(shù)據(jù)結(jié)構(gòu)(數(shù)組鏈表區(qū)別)
算法(快排怎么實現(xiàn),兩個字符串最長的公共子序列(動態(tài)規(guī)劃)
2.Java基礎(chǔ)(抽象類和接口區(qū)別滞诺,static類形导,sychronized,==和equal區(qū)別习霹,try朵耕,catch,finally)
3.JVM(內(nèi)存泄漏,類加載淋叶,雙親委派模型)
4.安卓的(activity的生命周期阎曹,自定義view,
view事件分發(fā)煞檩,handler機制处嫌,內(nèi)存泄露,apk的生成原理和過程)
5.網(wǎng)絡(luò)(http如何請問和返回數(shù)據(jù)斟湃,從請求到解釋等等)
以上基本90%能答上來熏迹,其間我還提及到了C++方面和Java對比的(析構(gòu)函數(shù),多繼承等等)所以很愉快地過了一面凝赛,問的問題比較廣癣缅,基本把我學(xué)的都問了個遍,后面提問環(huán)節(jié)才知道他就是內(nèi)推我的那個人哄酝。 真的很幸運,后面郵件他也提了一些建議祷膳,“小伙子要穩(wěn)重謙遜點等等陶衅,哪個方面要加強等等”。真的謝謝他直晨!
剛好又過了一周接到了2面電話搀军,是一個非常有經(jīng)驗的面試官膨俐。
二面(56分鐘)
1.項目(listview和recyclerview區(qū)別、說到listview沒有itemType的時候罩句,面試官說真的沒有嘛焚刺?其實我已經(jīng)說錯了。所以面試出了一題如何實現(xiàn)listview的itemType门烂、
不同item布局如何避免擦除tag(面試官提醒有沒其他setTag的重寫方法乳愉,我說用sp保存tag,面試官還算滿意)屯远、OkHttp源碼(請求方法蔓姚、請求報文和響應(yīng)報文的結(jié)構(gòu)。狀態(tài)碼300-400-500慨丐,keep-alive哪個http版本引入(我答了1.0坡脐,很模糊。其實是版本1.1)房揭,所以面試官叫我解釋一下長連接)
圖片緩存庫(由于我說到源碼的弱引用的時候所以面試問了我虛引用場景)备闲、支付sdk 、Activity的啟動模式捅暴,任務(wù)棧的管理(面試官一直引導(dǎo)我由哪個管理的恬砂,估計面試官想我答AMS,ActivityTask相關(guān)的,沒答出來)
listview的tag問題:
http://blog.csdn.net/zhuangxiaozhi/article/details/66551453
2.handler機制伶唯、內(nèi)存泄漏(對象的創(chuàng)建觉既,生命周期的長短關(guān)系)、threadocal源碼(由于我忘記了乳幸,所以面試官又問叫我如何實現(xiàn)一個threadlocal場景)瞪讼、于是我說了互斥鎖的場景,后面發(fā)現(xiàn)自己已經(jīng)挖坑了粹断,所以面試官接著問鎖的類型區(qū)別(對象鎖和類鎖)符欠、可重入鎖,死鎖怎么產(chǎn)生瓶埋,如何避免死鎖(銀行家算法)
3.進程線程區(qū)別希柿、進程的通信方式、Binder的區(qū)別和操作系統(tǒng)的進程間通信方式優(yōu)勢
4.垃圾回收機制养筒、判斷對象可回收的算法以及源碼理解(又是問源碼曾撤,JVM哪里來的源碼看呢?)
這次真的是問得好深晕粪,很多問題都是刨根問底挤悉,感覺準備得還是不夠充足,還有答錯的巫湘,基本60%能打出來装悲。
后面過了一個月之后昏鹃,內(nèi)推的人查到掛第二面了,已經(jīng)沒有技術(shù)面了诀诊,一次很接近hr的機會就丟失了洞渤。
阿里的面試官真的挺有水平的。
總結(jié)就是有時候面試官不一定要你回答問題属瓣,而是看你的思考方式载迄,還有自己了解的深度。還有遇到不懂要自信點奠涌,并且學(xué)會轉(zhuǎn)移話題宪巨。
騰訊筆試批
一面mig手機管家
1.手寫快速,c語言版本實現(xiàn)溜畅,快排的優(yōu)化捏卓,時間復(fù)雜度,nlogn的其他排序以及對比
2.項目慈格,當時項目總結(jié)得不是很好怠晴,自己進了一個大坑。所以建議自己的項目一定要總結(jié)好浴捆。Lv和Rv區(qū)別
3.提問
二面
計算機組成原理蒜田,gg。
這是再加上我春招找實習(xí)騰訊的面試經(jīng)歷选泻。
內(nèi)推一面(17分鐘)
師兄的內(nèi)推冲粤,真的很感謝他。 據(jù)說騰訊的內(nèi)推是刷簡歷的页眯,當時覺得就沒多大機會梯捕,很多事情想想都是猝不及防的。嗯窝撵,騰訊其實才是我最早應(yīng)該面試的公司傀顾,但是和舍友投了久邦數(shù)碼之后,不知為什么有兩個來自深圳的未知電話(上面寫著騰訊公司)碌奉,后來打回去是客機短曾,之后一個星期都沒打來了(已經(jīng)打算放棄了)。有一天晚上做完筆試赐劣,不知為何又有深圳的電話打來嫉拐,一想便知是騰訊的。后來面試完魁兼,查找通話記錄發(fā)現(xiàn)椭岩,后面的一周內(nèi)面試官原來打了我不少于10次的電話。
是個女面試官,感覺是簡歷面判哥,(好像是拿著題庫來問我)
1.項目負責(zé)哪一部分,性能上有什么優(yōu)化碉考?
2.圖片的緩存塌计,ANR ,內(nèi)存泄漏
3.自定義View
4.四大組件的生命周期
5.數(shù)據(jù)的持久化保存方式
基本能答出來,后面還是沒過侯谁。(應(yīng)該內(nèi)推的要求還是比較高吧)
正式招聘
筆試(4.2)
在線上完成的筆試锌仅,題目還是比較難的,涉及到c/c++的比較多墙贱,網(wǎng)絡(luò)热芹,操作系統(tǒng),數(shù)據(jù)庫惨撇,還有兩三道Android伊脓,還有一題OC的。問答題是騰訊產(chǎn)品快報Fragment的功能設(shè)置魁衙,面向?qū)ο蟮娜筇匦员ㄇ唬幊淌怯嘘P(guān)單詞的(沒做出來),變形的二分查找剖淀。做完就很絕望啊纯蛾,沒想到某天晚上收到面試通知。
一面(4.12)
其實我也很絕望纵隔,當天下午EDA考試翻诉,還有兩天的感冒在宿舍睡了兩天。模模糊糊地看了下書啥都不想做捌刮,提前交了卷后碰煌,打開手機發(fā)現(xiàn)工作人員打了我8次電話,就急沖沖地趕到了酒店糊啡,下著雨拄查,從地鐵站坐了個滴滴到了酒店,已經(jīng)5點多了棚蓄,看起來還是好多人哇堕扶。(貌似挺多人來霸面的)
后面hr問誰在5點30分前預(yù)約面試還是沒接到面試的上前面,后來我就解釋了一下因為考試的原因梭依,后面就在前排等著稍算,后來收到微信的推送和短信通知,就進了某個房間開始了面試役拴。
面試官先叫我做了個自我介紹糊探,之后看著我簡歷寫了熟悉Java,就問了比較多有關(guān)Java的。
Java:1.線程安全科平,鎖的實現(xiàn)褥紫,以及各種線程同步方法的區(qū)別。四大引用瞪慧,重載重寫區(qū)別(我還涉及到JVM的動態(tài)分派和靜態(tài)分派)髓考,hashmap源碼(jdk1.8為什么要加入紅黑樹)和hashtable區(qū)別,stringBuilder,stringBuffer 區(qū)別
項目和Android:2.項目負責(zé)哪一塊,圖片緩存策略弃酌,廣播的注冊方式氨菇,動態(tài)注冊在activity哪個方法注冊,好處妓湘。數(shù)據(jù)的持久化存儲方式(第二次問了)
3.手寫單例模式(寫多了一個同步鎖查蓉,面試官發(fā)現(xiàn)了),隨機存儲0-99這些數(shù)到int[100]數(shù)組中榜贴,不能重復(fù)(寫得不全豌研,一直在想優(yōu)化算法的問題,一開始還存在數(shù)組越界的問題竣灌,又被面試官發(fā)現(xiàn)了)
后面就是慣例問問題聂沙,我的問題問得比較傻,也可能是被刷的原因之一初嘹,所以建議各位同學(xué)事先好好準備幾個問題及汉。
后面問了面試官的建議以及評價
面試官最后的回答是:基礎(chǔ)還算比較扎實,但是語言的表達(先理清思路再回答)屯烦,騰訊這么大的公司算法也是要過關(guān)的坷随。可能沒給面試官留給心思縝密的印象驻龟,當晚面試從6點多面到7點多温眉,當時大家還沒吃飯,我是最后一個面試的翁狐。面完一個傻傻的站在酒店樓下發(fā)呆了一下类溢。當時回到學(xué)校查了下微信顯示“當前職位可能不適合您”。最終和騰訊就這樣失之交臂露懒。
富途證券
這是一家由騰訊控股的公司闯冷,感覺挺不錯的。
一面懈词,評價A
1.實習(xí)做的項目介紹各個技術(shù)點(要有自己亮點)
如界面卡頓(列表緩存優(yōu)化), EventBus注意點
(混淆代碼后注冊方法被混淆了咋辦蛇耀,3.0加入APT注解工具)等等
2.Android:oom,內(nèi)存泄露坎弯,http請求方法纺涤,get译暂,post區(qū)別
- Java相關(guān):
抽象類和接口區(qū)別(忘記已經(jīng)多少次問了)
死鎖,n個線程n個資源n個Lock撩炊,如何避免死鎖
4.一個6升和5升的水壺外永,沒刻度,如何得到3升水
5.交換變量衰抑,不能用中間變量象迎,解決的原理
面試官人很好,交流的時候有提示
二面跟騰訊的套路很類似呛踊,評價B*+
1.上來就把做對做錯的題問一下,還有筆試的sql語句不會寫啦撮,繼續(xù)寫谭网,還是錯
2.變形二分查找(本人筆試字體丑),繼續(xù)寫
3.馬鈴薯赃春,買和賣各一天愉择,100天,求最大利益
其實就是股票的買賣最大利益
4.100瓶藥水织中,有且只有一瓶毒藥水锥涕,老鼠喝了7天才有反應(yīng)。問至少多少只老鼠才能找出那瓶毒藥水
CVTE提前批
一面
都是面完一個面完上一個狭吼。沒有順序层坠,兩個面試官,看樣子都是搞Android的
1.我項目中的一個寫到了推送的TCP心跳包刁笙,就細問了一下原理(如何保證后臺進程不被kill等等)
2.線程啟動的方法(三個)
3.軟引用破花、弱引用區(qū)別,見我回答得比較快又爽疲吸,就問了下虛引用的引用場景等等
4.Activity的四種啟動模式
5.Handler機制
6.HashMap源碼
7.MVP,MVC,MVVM區(qū)別座每,用圖畫出來
8.Java垃圾回收 --babalala
9.泛型
10.鎖(sychronized/look&&reentrantlock)
11.手寫算法:找出字符串第一個只出現(xiàn)一次的字符,秒了摘悴。講了下思路
12.講下RxJava的flatMap的原理
13.面試官說沒什么問了峭梳,就多問一下多線程的知識--如何結(jié)束線程(當時忘了就講了一個不常用的stop)
14.怎么學(xué)習(xí)Android,有沒寫博客(多少篇)蹂喻,有沒開源(多少個star)
15.有沒學(xué)習(xí)新的語言葱椭,原來面試官是想知道有沒學(xué)Kotlin
可能有些是忘記了,但是基本按照自己知道的全部都說了叉橱,然后面試官叫我到那邊坐著等一下先挫以,所以知道一面是過了
二面
等了一會,很快就有人叫我上去二面了窃祝。面試官是一個年輕的小伙子
1.首先他一上來就問了一個算法掐松,據(jù)說是經(jīng)常經(jīng)常問的一個:1 11 111 1111 踱侣。。大磺。2017個1抡句,求輸出
我沒問輸入是什么,然后他就問我輸入你都不知道是什么就開始寫了杠愧,整個過程一直被壓著待榔。他說n是2017,然后我就開始寫了流济,5分鐘沒寫完锐锣。然后他問我寫完沒,再給了2分鐘绳瘟。后面基本講了下思路吧雕憔。那時候感覺就不好了,有種壓力面的感覺糖声。
2.后來他說這個先這樣吧斤彼,說先問問網(wǎng)絡(luò)吧,HTTP是哪層協(xié)議(應(yīng)用層)蘸泻,說到了基于TCP琉苇,然后他問了我如何UDP模仿TCP安全傳輸,然后我就說了下ack序列號滑動窗口等等悦施。有些可能是跑偏了并扇,然后他又說我跑偏了,那時候真的想直接回去了GG歼争。這個問題上扯了好長時間拜马,好像沒令他滿意。就問了一下數(shù)據(jù)怎么安全性沐绒,我說了加密俩莽,還有ca證書等等。這個時候已經(jīng)感覺自己跪了乔遮。
3.說到了內(nèi)存溢出扮超,圖片的JPG和PNG區(qū)別,還有5.0加入的SVG蹋肮,圖片大小如何計算出刷,圖片如何壓縮,算法
4.然后就問我看過了什么源代碼坯辩,我說了一下設(shè)計模式相關(guān)的看得多(他們比較喜歡問設(shè)計模式)馁龟,然后說到了屬性動畫原理是反射,然后就問反射的缺點(忘了)漆魔,再說到了代理模式坷檩,就問了下靜態(tài)代理和動態(tài)代理區(qū)別却音。我也忘了。
5.問我如果接到一個項目矢炼,你會從哪個方面考慮系瓢,從代碼方面講述,還有性能方面等等句灌,后面他又說我跑題了夷陋。我整個人都不好了。
6.最后他說他了解得差不多了胰锌。問了一下對自己的表現(xiàn)評價骗绕,我說我秋招再來吧,面的不好资昧。然后就問了下公司的情況知道嗎爹谭,有沒有覺得剛才你覺得你優(yōu)勢的地方我沒有問出來的等等。
7.知道自己跪了榛搔,就禮貌地跟他握了個手伤锚,他笑了一下尸昧,他說他也是我們學(xué)校畢業(yè)的万矾。
終面
因為面得不好舞虱,所以問HR是否能回去了拳芙,沒想到HR跟我說還有一面会钝,心里想环戈,這也能過傲宜。后面就是兩個HR對三個人
1.家庭成員
2.職業(yè)規(guī)劃
3.以后想工作的城市
4.想加入的公司
5.對自己影響最大的一個人
6.理想薪酬
7.學(xué)習(xí)成績
8.壓力最大的時間
9.對提前批的看法
10.有無其他公司offer
11.什么行為是自己不能接受的
12.對加班的看法
13.父母對自己的期待
美團深圳一面芥吟,霸面掛
1.Java:
HashMap的底層和HashMap的hash算法
volatile的含義侦铜,使用場景,線程yield的作用
2.垃圾回收機制钟鸵,有多少能說多少
3.網(wǎng)絡(luò)钉稍,OkHttp底層源碼,請求隊列具體到是一種怎么的隊列棺耍,畫一下請求包結(jié)構(gòu)贡未,請求頭有哪些常用字段,如何加快網(wǎng)絡(luò)的加載速度蒙袍,從客戶端俊卤,服務(wù)器方面,代碼優(yōu)化方面等
4.Android:
內(nèi)存泄漏場景害幅,Handler機制消恍,循環(huán)消息是執(zhí)行在哪里的線程?如果沒有消息以现,它是一種怎么樣的情景
ListView可以優(yōu)化的地方
apk瘦身
如何讓app啟動加快狠怨,(冷啟動)约啊,
插件化原理,hook原理
點擊圖標Launcher進程啟動另外一個進程的過程取董,binder相關(guān)的棍苹,比如client是如何向servermanager注冊binder的,能說多少就說多少茵汰。
activity的啟動模式和引用場景
Android如何保持service不給skill掉枢里?有哪幾種進程?優(yōu)先級從高到低蹂午。
加載圖片列表的優(yōu)化栏豺,oom問題如何避免,bitmap相關(guān)等
viewstub作用
RxJava使用的優(yōu)勢
MVC,MVP,MVVM畫圖解釋區(qū)別優(yōu)劣勢
5.假設(shè)有一個最大線程數(shù)是5的線程池,當加入6個任務(wù)的時候豆胸,你是如何設(shè)計解決這樣一種場景
6.手寫判斷鏈表有環(huán)
至此奥洼,當時找到還算不錯的工作就不想再折騰了,所以美團毫不猶豫地掛了晚胡。但是美團的面試體驗是非常友好的灵奖,為hr和面試官點贊。
至于我去哪里估盘,就保密吧哈哈瓷患。
手寫算法常見
1.鏈表:插入,刪除遣妥,反轉(zhuǎn)擅编,判斷單鏈表是否有環(huán)
2.排序:快排,歸并箫踩,堆排爱态,比如第k大的數(shù)
3.實現(xiàn)一些常見的數(shù)據(jù)結(jié)構(gòu),比如棧等
4.字符串的處理境钟,特別是第一次只出現(xiàn)一次等情況的字符查找锦担。
秋招的一些體會
上面只是記錄了一些覺得參考價值較大的面試,就可以體現(xiàn)出Android開發(fā)在校招的一些要求吱韭∵罕可以得出以下一些個人的總結(jié):
1.數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ),特別是大公司的筆試或者面試都可以體現(xiàn)出來
網(wǎng)絡(luò):TCP/HTTP理盆,設(shè)計模式痘煤,Java基礎(chǔ),Android基礎(chǔ)都是需要非常扎實的猿规。
2.項目衷快,一定需要有自己的深度和亮點。至于實習(xí)經(jīng)歷那塊姨俩,最好是有大廠的實習(xí)經(jīng)歷蘸拔,這樣可以通過很多公司的簡歷篩選师郑。
3.再說說一些軟實力,比如語言的表達能力调窍,后面多參加幾個公司的面試就培養(yǎng)起來了宝冕,一開始我也不是特別好,后面面多了就成精了邓萨。
4.心態(tài)地梨,不要因為一次的失敗而氣餒,也不要因為一次的成功而驕傲缔恳。面試存在著一定的運氣成分宝剖,找工作是雙選選擇。
5.最后歉甚,Android的需求確實趨于穩(wěn)定了万细,對于Android開發(fā)人員的要求越來越高,很多需要透過源碼的本質(zhì)去分析纸泄,所以平時更需要嚴格地要求自己赖钞。
以下是個人看過的一些書籍
1.有關(guān)C/C++:
C primer第五版:http://product.dangdang.com/8976834.html
C程序設(shè)計語言第二版(至今都未更新,大神出的書):
http://product.dangdang.com/8766529.html
- C++primer第四版:
http://product.dangdang.com/9157098.html
- 數(shù)據(jù)結(jié)構(gòu)和算法
- 數(shù)據(jù)結(jié)構(gòu)和算法分析(C語言描述)
http://product.dangdang.com/8767364.html
(個人認為最好能表達出數(shù)據(jù)結(jié)構(gòu)的精華就只有C/C++)
- 算法(第4版)【Sedgewick之巨著聘裁,與高德納TAOCP一脈相承】:
http://product.dangdang.com/22880871.html
- 有關(guān)Java和虛擬機:
- Java編程思想(第4版)
http://product.dangdang.com/9317290.html
(后來看不下去了仁烹,太多,代碼和字太密)
- Effective Java中文版(第2版):
http://product.dangdang.com/20459091.html
(很多人都說它是本好書咧虎,你覺得呢)
- Java并發(fā)編程實戰(zhàn)
http://product.dangdang.com/22606835.html
- Java核心技術(shù) 卷1 基礎(chǔ)知識(原書第9版)
(師兄送了卷1和卷2,我只看了卷1->>>英文版计呈,推薦)
- 深入理解Java虛擬機:JVM高級特性與最佳實踐(第2版)
http://product.dangdang.com/23259731.html
- 有關(guān)安卓:
第一行代碼第一版(去年12月出的第二版)砰诵,Android編程入門經(jīng)典(高級編程還沒看),Android開發(fā)藝術(shù)探索,Android 源碼設(shè)計模式解析與實戰(zhàn) 捌显。
- 有關(guān)操作系統(tǒng):操作系統(tǒng)精髓與設(shè)計原理
http://product.dangdang.com/20919066.html
其實更推薦深入理解操作系統(tǒng)那本書茁彭。
最后的,有需要Android面經(jīng)總結(jié)的扶歪,可以在下面留個郵箱理肺,看到的一定會回復(fù)。