今年因公司業(yè)績不景氣,最終倒閉了,而我也被迫失業(yè),就只能老老實(shí)實(shí)在家呆著找工作。這一呆就才不多2個(gè)月,在這段時(shí)間內(nèi)面試了差不多10家公司,有一半都給了Offer,但是沒有想去的公司。
原因:
1、就是薪資給的少了點(diǎn);
2、薪資給的還可以,但是沒有什么空間可以提升自己。
經(jīng)過一段時(shí)間朋友介紹,讓我把簡歷投到華為去嘗試一下,于是懷著僥幸的心理試了試。
進(jìn)入大廠想必都是每個(gè)開發(fā)者們最初的想法,而我也是一樣。想想總是那么美好的
等待了兩個(gè)多星期接收到了面試通知約,我三天后去面試,下面就是我的面試過程了。
一面(1hour):
0、自我介紹
1、項(xiàng)目介紹,技術(shù)點(diǎn)相關(guān)。
2、C++和Java區(qū)別,GC
C++不熟,只能說內(nèi)存管理相關(guān)的問題,所以就問到了GC。然后說分代收集算法。老年代擔(dān)保、元數(shù)據(jù)區(qū)從JVM移到了本地內(nèi)存這些。
3、線程相關(guān),Runnable和Thread的區(qū)別。
Thread類是實(shí)現(xiàn)了Runnable接口,平時(shí)使用起來可以使用start方法調(diào)用。線程池基本傳Runnable對象,平時(shí)也是線程池用的多,所以具體相關(guān)不太熟。
4、線程池
5、synchronized,volatile
6、繼承相關(guān),多重繼承和接口
7、網(wǎng)絡(luò)編程
8、UPD,TCP區(qū)別
9、最大的優(yōu)點(diǎn)
10、最大的缺點(diǎn)
11、算法,二叉樹中序遍歷
真是早起毀一天,竟然沒撕出來,我真想給自己兩耳光。不過面試官給我總結(jié)的很好,說要利用棧的特性,先進(jìn)后出,所以要保證左子樹先進(jìn)根結(jié)點(diǎn)再進(jìn),這么思考之后就順利了很多。
**總結(jié):**早上狀態(tài)很差,簡單問題也會(huì)卡殼,希望大家還是能夠選擇自己狀態(tài)好的時(shí)間點(diǎn)面試……。
二面(40mins):
0、介紹一下項(xiàng)目
1、Android四大組件,詳細(xì)講一下。
2、Launcher啟動(dòng)APP的全過程。
icon存入口Activity信息
AMS通知Launcher去pause。
Launcher通知AMS已經(jīng)pause
AMS檢查進(jìn)程是否已經(jīng)啟動(dòng),如果不啟動(dòng)則啟動(dòng)進(jìn)程。并且調(diào)用ActivityThread的main方法。
啟動(dòng)之后通知AMS已經(jīng)啟動(dòng)
然后AMS將入口Activity信息傳遞給APP。
APP啟動(dòng)對應(yīng)入口Activity,并且創(chuàng)建對應(yīng)上下文并且調(diào)用Activity的onCreate方法。
3、進(jìn)程間通信,AIDL,Binder。扯了一會(huì)說進(jìn)程間通信平時(shí)怎么做的,就說了一下AIDL相關(guān)的Demo實(shí)現(xiàn)什么的。說到了自己程序里面有拉起微信的這個(gè)功能(也就是廣播)。
4、設(shè)計(jì)模式了解嗎,平時(shí)用過哪些設(shè)計(jì)模式。
5、算法題:輸入一個(gè)數(shù)n,代表有n個(gè)點(diǎn),一個(gè)二維數(shù)組,二維數(shù)組代表相連的點(diǎn),要求輸出連通起來的點(diǎn)。
如果n=6,數(shù)組假設(shè)是{{1,2},{2,3},{4,5}},則輸出{{1,2,3},{4,5},{6}}
吐槽一下,本來約的早上9.30和10.30兩輪面試,一次約兩輪我也是醉了。然后就二面拖了快一個(gè)小時(shí)才面上。早起代碼狀態(tài)真的差,這兩題都寫了分別用了快20分鐘,真的捉急。
一個(gè)午覺起來,收到了面試通過的短信,效率還是非常高的。還以為掛了呢,看來只是面試官想吃飯了……
三面(<30分鐘):
0、自我介紹
1、上家公司做的項(xiàng)目
說了RePlugin框架原理,說了ffmpeg動(dòng)態(tài)鏈接庫開發(fā)方面的失敗經(jīng)歷,說了Android的適配,和最近影響到的AndroidQ相關(guān)新特性的適配。
2、什么情況下會(huì)壓力特別大,怎么處理的。
3、職業(yè)規(guī)劃
…
綜合起來就是了解個(gè)人情況,技術(shù)問題都是自己說的。還是非常愉快輕松的。
**總結(jié):**華為面試安排非常緊張,但是反饋效率特別高,一二面結(jié)束馬上會(huì)短信通知是否通過。然后隔天直接三面,流程走的非常快。
問了hr,說只要通過了面試,一周左右就會(huì)下來offer。
面試前我做的準(zhǔn)備
1、理論知識(shí)的梳理
因?yàn)槊嬖嚂r(shí)考驗(yàn)?zāi)阍硇缘闹R(shí),雖然我工作了兩年,但是畢竟是工作,很多理論知識(shí)都忘的一干二凈,于是去面試前,我利用收集來的Android行業(yè)大牛面試筆記給自己做了一次完整的知識(shí)梳理。
(個(gè)人建議:去面試之前,給自己做一次完整的知識(shí)梳理是很有必要的,不僅加深了對理論知識(shí)的認(rèn)知,還可以從中知曉自己對哪一模塊的不了解,加深學(xué)習(xí))
**Java基礎(chǔ)方面:**JVM、String、內(nèi)部類、多態(tài)、抽象和接口、集合框架(Hashmap、Arraylist)、單例、線程、Synchronized、Look鎖、動(dòng)態(tài)代理、引用
**Android基礎(chǔ)方面:**四大組件、View、進(jìn)程、Bitmap、屏幕適配、消息機(jī)制、線程異步、WebView。
**Android擴(kuò)展方面:**ART、Apk優(yōu)化、Hook、Proguard、架構(gòu)(MVC/MVP/MVVM)、Jetpack、NDK開發(fā)。
**Android源碼方面:**Leakcanary、Eventbus
**設(shè)計(jì)模式方面:**面向?qū)ο罅笤瓌t、工廠模式、單例模式、建造者模式、觀察者模式、適配器模式、策略模式、代理模式
算法方面: 排序、二叉樹、鏈表、棧和隊(duì)列、二分、hash表、堆、數(shù)組/雙指針、字符串處理、動(dòng)態(tài)規(guī)劃
**網(wǎng)絡(luò)知識(shí):**Http(緩存、Https、Http2.0)、TCP(三次握手四次揮手、socket)、類加載器
2、刷題
對于面試,刷題是非常重要的,刷題不僅能加深你對技術(shù)原理的認(rèn)識(shí),而且假如刷到當(dāng)天的面試題血賺(不過,這種可能性非常?。㈩}還是很有必要的,起碼加深了自己對原理、底層的理解。
3、完善簡歷
大家都知道去面試的過程中,簡歷對于面試有著至關(guān)重要的作用,一份觀賞清晰的簡歷能幫助求職者在面試官心中有著非常不錯(cuò)的印象,僅僅從這一點(diǎn)來看,簡歷的完善就是非常有必要的。
簡歷該怎么寫?
1、盡可能突出自己的優(yōu)勢
制作簡歷一定要學(xué)會(huì)突出重點(diǎn),寫出自己的優(yōu)勢,如你在上一家公司做出的貢獻(xiàn),就要寫在顯眼的位置進(jìn)行突出,用顏色加深再好不過。如果你的優(yōu)勢是學(xué)歷,那么學(xué)歷就要放在第一頁,因?yàn)镠R在篩選簡歷時(shí),一份簡歷往往只看那么幾秒鐘,你需要做到的就是讓HR一眼看中你的簡歷。
2、描述自己做到了什么,而不是做了什么
很多程序員會(huì)在自己的項(xiàng)目或是技術(shù)棧里這樣描述:在某項(xiàng)目,我負(fù)責(zé)xxxx,如重構(gòu),如優(yōu)化。但實(shí)際上,面試官想要看到的是你在項(xiàng)目中,重構(gòu)和優(yōu)化帶來了什么樣的好處和效果,如果說性能提升了,那么提升的數(shù)據(jù)和情況是如何的,要一一描述出來,所以重點(diǎn)應(yīng)該是“將項(xiàng)目做到了什么樣子,做成了什么事”。
完成這兩點(diǎn),一份漂亮的簡歷即可出爐。
五、后話
總得來說,這次面試能拿到offer,也跟我之前的努力分不開的。其實(shí)做程序員圈子很重要,因?yàn)橛辛巳ψ涌梢宰屇闵僮邚澛罚貙捜嗣},拓展思路,學(xué)習(xí)他人失敗和成功的經(jīng)驗(yàn),獲取最新經(jīng)驗(yàn)與信息,才能抱團(tuán)取暖!所以說,圈子的高度很大部分決定人生的高度!
大家努力奮斗吧!與之共勉。
本文摘自 :https://blog.51cto.com/u