剛剛郵箱居然收到了有人喜歡我一年前寫的半桶水事件分發(fā)機制。都一年多沒上簡書平臺了,這一年由于發(fā)生了點不太如意的事情,工作室的房間被撤,我們失去了根據(jù)地。所以我的簡書之路剛開始就停下了腳步,挺不好意思的。。。
正好前段時間實習春招拿到了頭條和阿里的offer,這里把我的一些心得分享給大家吧~
阿里面經(jīng)+個人心得
一面
- java虛擬機相關(guān)問題
- 垃圾回收機制
- 數(shù)組和鏈表的區(qū)別,特點
- CCSP里做過什么題目
- HTTPS SSL
- TCP/IP三次握手
- HandlerThread
- ThreadLocal
- View的繪制
- ListView優(yōu)化
- Handler機制
- 事件分發(fā)機制
- 談?wù)勀銓VP的理解及其優(yōu)化
有些人將Activity作為Presenter。還有對Presenter的優(yōu)化,在V與P之間 P與M之間 增加代理類(雖然我沒有做過。) - Builder設(shè)計模式的應(yīng)用
- 內(nèi)存泄漏(詳細舉例)
比如單例模式下,如果實例持有Activity的引用,那么Activity退出時它的內(nèi)存將不會被回收,因而導(dǎo)致內(nèi)存泄漏,這種情況應(yīng)該傳Application的Context
匿名內(nèi)部類將持有Activity的實例。避免在Activity中使用非晶態(tài)內(nèi)部類,在傳遞Activity的時候使用軟引用(使用前記得判空)
使用LeakCanary 進行Android內(nèi)存檢測 - java的類加載機制
- Android的類加載方式,區(qū)別
- Glide
- 進程管理
- 內(nèi)存管理
- 設(shè)備管理
- 文件管理
- 中間還有一些問題暫時想不起來了
二面
- 介紹下自己
- 介紹下自己的項目
- 請說下你對相冊的優(yōu)化
- RecyclerView復(fù)用機制
- RecyclerView的優(yōu)化
- Glide加載圖片原理(如何壓縮,如何緩存,三級緩存各是什么作用)
- 如果增加了緩存是否會使你的App性能下降?
這里他是想問你你為啥實現(xiàn)緩存,圖片復(fù)用的命中率有多少?緩存真的能給你的app帶來效率上的提升嗎?主要結(jié)合項目來談 - 一個jpg或者png圖片,它的大小如何計算
- 如何處理recyclerView圖片閃爍問題
- 在開發(fā)過程中,遇到最大的困難是什么
- 你的技術(shù)棧,平時怎么學(xué)習的看過哪些書
- 數(shù)據(jù)庫,索引,事務(wù)(詳細介紹的那種,比如索引底層用的BTree,優(yōu)點缺點,事務(wù)的四大特性,權(quán)限等)
- MVP,MVC
- 循環(huán)鏈表的檢測
- 好像還有一些問題。想不起來了,我盡力了。。真的。
總監(jiān)面
- 你是怎么學(xué)習java和Android的
- 問項目
- 主要還是圍繞項目聊。。項目功能的實現(xiàn),項目維護啥的,深入項目細節(jié)
- 自定義View,在網(wǎng)上看過哪些自定義控件,自己實現(xiàn)過哪些?
- 看過哪些源碼?
- OOM怎么出現(xiàn)的?解決方法?
- Glide源碼
- java內(nèi)存模型
- javaGC過程
- 屏幕適配
- 考不考研。。。
- 參加過B或T的面試了嗎?為什么選擇阿里?
- 清明后HR會盡量快點給你打電話
交叉面
某天晚上十點鐘,打游戲打得正嗨呢,突然杭州一個電話打過來,心里一哆嗦。只能坑隊友了。。
這次是另一個部門的主管面試的我,由于當天晚上面完了我就洗洗睡了,加上第二天又浪了一下(某個學(xué)長回來了,和社團的同學(xué)去吃火鍋唱KTV,杰倫專場唱到嗓子啞 + 感冒頭疼。。)具體的問題記得不太清楚了,不過總的來說主要還是圍繞著項目的細節(jié)問的,還有對項目的優(yōu)化和進一步改進的方法,和一些其它小問題。。
(老夫記性一向不太好。。這里給大家說聲不好意思了。。)
不過最后面試官對我還是挺滿意的,讓我等待HR面試。
技術(shù)面總結(jié)
總體來說不是很難,阿里的面試官比較注重基礎(chǔ)和項目。應(yīng)該是對自己工作定位原因吧,我給自己目前的定位是實現(xiàn)應(yīng)用層的功能上,還沒機會,暫時也沒實力進軍SDK開發(fā),先把應(yīng)用層做好吧。所以和面試官聊的最多的是對項目的看法。一般來說他們不會太為難你的,可能是我運氣好吧,我遇到的面試官都很Nice。復(fù)習好就行,遇到不熟悉的領(lǐng)域的先說自己在該方面的認識再說不會,如果他繼續(xù)問你,說明在考察你思考問題的思路,順著思路答就好了。
HR面
這里由于涉及到一些個人問題,我就不怎么貼出來給大家看了,這里給大家推薦一下我準備HR面試時看的面經(jīng)吧
http://www.zheyibu.com/article/5698.html
http://baijiahao.baidu.com/s?id=1566148416765923&wfr=spider&for=pc
http://ifeve.com/ali-think-21/
都是百度上很好找到的面經(jīng)
HR面總結(jié)
其實在HR面這塊,很多地方我答得并不是很完備,全程小心謹慎,生怕說錯半個字
在HR面里,個人覺得更多的是考驗的是你的綜合能力,作為一名程序員,有努力勤奮的精神是不夠的,還有注重和團隊成員的溝通和情緒管理(千萬不要拿刀砍產(chǎn)品經(jīng)理 o( ̄ ̄)d )
后來HR還告訴我,專注于技術(shù)也是不夠的,對業(yè)務(wù)也要做到胸有成竹。最后真誠+反套路是關(guān)鍵!最主要的還是真誠,畢竟她吃的鹽比你吃的飯還多,要比套路你是套路不過她的,揚長避短,引導(dǎo)她向你的長處發(fā)問,最好結(jié)合自身經(jīng)歷多準備幾個實際場景
持續(xù)一個多月的春招內(nèi)推經(jīng)歷圓滿結(jié)束!長舒一口氣啊,趕緊下山把頭號玩家看了
最后。。。
頭號玩家真好看! (`?ω?′)
一些拙見吧
如果確定了自己要找工作,大概從大二開始要有危機感了,可以開始接觸項目維護項目并看相關(guān)書籍和框架源碼了
主要還是通過項目學(xué)習,再一個就是看書看博客了。這里給大家推薦一些學(xué)習的書籍:
深入理解java虛擬機
java 的一些容器類的實現(xiàn)過程也很重要哦! 比如 HashMap,ConcurrentHashMap, LinkedHashMap等等的實現(xiàn)原理,要熟知,上面雖然沒問到,但其他公司問的挺多的java多線程編程核心技術(shù)
java并發(fā)編程的藝術(shù)
關(guān)于并發(fā),新手不建議直接看并發(fā)編程實戰(zhàn),最好從上兩本入門Android第一行代碼
Android群英傳
Android從小工到專家
Android開發(fā)藝術(shù)探索
Android源碼設(shè)計模式
關(guān)于Android方面的書籍,當然還有一些其它的優(yōu)秀書籍,這里我暫時推薦我讀過的吧。圖解HTTP
圖解TCPIP
HTTP權(quán)威指南
由于我是屬于那種萬年不聽課的人。對學(xué)校的教育也不太重視,期末的時候只是敷衍了下。還是有點后悔的,對于專業(yè)課如果碰到了好老師大家還是要好好學(xué)??!
關(guān)于計算機網(wǎng)絡(luò),找工作的時候最重要的兩個點是 TCP/IP三次握手四次揮手和SSL過程, 其次要知道HTTP的組成,最好看一遍HTTP請求頭響應(yīng)頭中的關(guān)鍵字。
其實我覺得圖解系列看的挺舒服的,很快就看完了思路也清晰,就是不夠深入,可以根據(jù)自己感興趣的點展開,百度谷歌數(shù)據(jù)結(jié)構(gòu)方面,這個不太好建議。代碼寫多了就會了,學(xué)校的數(shù)據(jù)結(jié)構(gòu)課認真上,Mooc上的網(wǎng)課認真聽,題目認真做,實在不行面試前去??途W(wǎng)去學(xué)校的OJ上刷題
數(shù)據(jù)庫方面,自己操作一遍,把一些比較復(fù)雜的操作自己動手實現(xiàn)一遍,熟知視圖,索引,事務(wù)等等的原理過程,一般不會問的太難
操作系統(tǒng)方面問的比較少,但這也是我現(xiàn)階段比較薄弱的點,在此不太好向大家推薦我的拙見,我目前的想法是看鳥哥私房菜,后面會慢慢惡補這方面的知識
關(guān)于博客公眾號
CSDN上幾位大神的博文(郭霖、鴻洋等)和 原來的StormZhang,這里不是想抹黑張哥,主要是張哥現(xiàn)在轉(zhuǎn)管理崗了,關(guān)于技術(shù)方面的博文更新較少,對實習生找工作來說收益不太大,但現(xiàn)階段他公眾號的作用更多的是擴寬視野和人生規(guī)劃方面,還是值得關(guān)注的
最后祝大家 找工作的 能順利拿到心怡的offer,考研的 能考上理想的學(xué)校,找到優(yōu)秀的導(dǎo)師
(*′?v?)
頭條面經(jīng)
一面
Activity生命周期,啟動模式
onNewIntent調(diào)用時機
垃圾回收機制
volatile
事件分發(fā)
Bitmap壓縮策略
自定義View(requestLayout,invalidate)
invalidate 導(dǎo)致該View 重繪
requestLayout 導(dǎo)致該View該View的父View重新執(zhí)行onMeasure、onLayout
獲取View寬高的方式
View層級的優(yōu)化
MVP,Presenter的優(yōu)化
HandlerThread
SharePreference
數(shù)據(jù)庫
git
進程間通信的方式
Parcelable與Serializable 的區(qū)別
Glide
Rxjava
二面
介紹下自己
介紹下項目
項目中視頻是怎么實現(xiàn)的
項目中實現(xiàn)相冊的過程中遇到哪些困難
RecyclerView 優(yōu)化,它的優(yōu)勢有哪些
recyclerView 和listView 復(fù)用機制的區(qū)別
Glide源碼
BitMap圖片大小如何判斷
BitMap具體的壓縮過程
BitMap在緩存時候的轉(zhuǎn)碼過程
Activity四大啟動模式,以及聯(lián)系實際情況的詢問
activity與window在什么時候關(guān)聯(lián)起來的
activity.startActivity 過程
activityStack,activitySupervisor 相關(guān)知識
ThreadLocal 是怎么做到線程私有的
一個具體的Android場景,問我怎么設(shè)計(關(guān)于分割線,我想對不同Item進行不同處理,怎么做)
另一個具體的Android場景。。(自定義一個Button,要對它進行單次點擊監(jiān)聽,兩次點擊監(jiān)聽,多次 點-擊監(jiān)聽,怎么實現(xiàn))
Handler內(nèi)存泄漏原因
ViewStub,merge,include相關(guān)問題,以及merge中再加一個merge
一個普通二叉樹,給你定點和指定節(jié)點,輸出他們的路徑(現(xiàn)場寫)
中間還有一些小問題不記得了
三面
自我介紹
寫個題目,在數(shù)組中插入一個數(shù)據(jù),并實現(xiàn)擴容
計算機操作系統(tǒng),在計算機中物理內(nèi)存的地址結(jié)構(gòu)是怎樣的
計算機網(wǎng)絡(luò),如果要實現(xiàn)一個即時通訊的技術(shù),你時選擇TCP還是UDP,為什么
算法,在手機通訊錄的查找功能中,輸入前幾個字符,輸出匹配字符,你如何實現(xiàn),使用什么樣的數(shù)據(jù)結(jié)構(gòu),為什么
java虛擬機的內(nèi)存結(jié)構(gòu)
javaGC過程
你有什么想問我的
其實頭條三面我挺懵逼的,我同學(xué)都是二面+HR,為咩我多了一個技術(shù)面。?!而且全程不到二十分鐘,很短
HR面
頭條的hr面還是挺輕松的,HR小姐姐非常溫柔,而且對我們學(xué)校的科技組織非常了解,聊的很開心。