有位朋友去阿里巴巴java工程師崗位,面試完后,感觸很深,不愧是大公司,發(fā)現(xiàn)公司對于面試者的知識結(jié)構(gòu)考核非常嚴(yán)謹(jǐn),雖然只是一場面試,但可以作為我們工作學(xué)習(xí)的指導(dǎo),有人說面試問到的東西在實際工作中很少用到,譬如數(shù)據(jù)結(jié)構(gòu)、算法等,甚至有的人還倜儻,面試造火箭,工作擰螺絲。但從一場正規(guī)的面試我們可以看得出規(guī)模較大的公司對于求職者的知識體系要求是相當(dāng)高的。如果我們能在平時工作中就按著這樣的要求不斷要求自己,提升自己,相信在下一次面試的時候定能做到游刃有余。
阿里的面試一般會有兩輪電話技術(shù)面試,分別交叉檢驗求職者的基礎(chǔ)知識是否扎實。兩輪現(xiàn)場技術(shù)面試,一般是考核求職者的項目經(jīng)驗。從這個角度分析,阿里對于人才招聘大概可以考核可以分為三個層次:基礎(chǔ)知識的考核、項目深度的考核。
基礎(chǔ)知識的考核
基礎(chǔ)知識的考核,主要考核求職者對 編程J語言本身原理的理解以及框架原理的理解。對于 Java 開發(fā)崗位上來說,一般考察的知識點有:
集合 HashMap 的原理,與 Hashtable、ConcurrentHashMap 的區(qū)別?
線程池的核心屬性以及處理流程、Synchronized關(guān)鍵字、鎖
線程的生命周期
JVM類加載機(jī)制、內(nèi)存模型、垃圾回收機(jī)制
Spring Bean 容器生命周期
Spring AOP 原理
數(shù)據(jù)庫 SQL 優(yōu)化、數(shù)據(jù)庫索引、索引原理等
看到這一系列的知識點,可能有的一下子就慌了,當(dāng)然,這只是一小部分而已。面試官喜歡針對求職者掌握的知識點刨根問底。如果你能吼住的話,進(jìn)入下一輪面試的幾率就大大提高了。
阿里更傾向深度挖掘,針對你掌握的知識點進(jìn)行深度挖掘。比如前面提到的java知識點,垃圾回收機(jī)制Garbage collection,我們知道要,準(zhǔn)確理解Java的垃圾回收機(jī)制,我們可以從:“什么時候”,“對什么東西”,“做了什么事情”這三個方面來分析。
要是在面試時,面試官問“對什么東西”,有的求職者回答 沒有用的對象,按道理來說,這并沒有錯,只是這并不是理想的答案。要是能更進(jìn)一步分析,那就更好了,GC操作的對象分為:通過可達(dá)性分析法無法搜索到的對象和可以搜索到的對象。對于搜索不到的方法進(jìn)行標(biāo)記。從root搜索不到,而且經(jīng)過第一次標(biāo)記、清理后,仍然沒有復(fù)活的對象。
對于用可達(dá)性分析法搜索不到的對象,GC并不一定會回收該對象。要完全回收一個對象,至少需要經(jīng)過兩次標(biāo)記的過程。 把問題具體化了一些,對類似這樣的對象進(jìn)行回收,相信能給你這次面試加分。
項目思考深度
要是你通過基礎(chǔ)知識的考核,恭喜你,你離拿offer不遠(yuǎn)了。接下來面試官一般會讓你說說你的項目經(jīng)驗,譬如項目的架構(gòu)圖,既然有了架構(gòu)圖,你需要清楚理解每個模塊的作用,每個框架的原理以及與其他框架的優(yōu)勢和不足。
在這個層次上,你不僅要對項目本身理解足夠深刻,還要跳出項目本身,思考開源框架本身的問題。進(jìn)一步思考這些開源框架好不好,有什么可以改進(jìn)的地方。作為一名的程序員,有必要掌握為什么要用這些框架?它有什么不足,能不能做得更好?只有往深度的方向去思考,才能促進(jìn)我們有所成長。
作為一名Android 開發(fā)人員,如何在面試中脫穎而出,找到心儀的工作?就個人觀點看,一般需要這樣的技能:技術(shù)扎實,有技術(shù)追求和工作激情 ;良好的溝通和協(xié)作。
簡單點,就是技術(shù)水平和溝通能力。其中技術(shù)始終是面試成敗的決定因素,技術(shù)掌握到什么程度才能相對輕松地通過面試呢?
一般來說,一場Android面試內(nèi)容不太可能全是Android的問題,應(yīng)該也會與編程基礎(chǔ)相關(guān)的問題。譬如數(shù)據(jù)結(jié)構(gòu)、算法和常見的設(shè)計模式要熟悉,比如單例模式、工程模式、觀察者模式等。至于數(shù)據(jù)結(jié)構(gòu)工作中不常用到,但還是要稍微了解下,能熟練掌握更好。
每一次面試來之不易,不可忽視,面試時,有些細(xì)節(jié)不容忽視。面試前,做一些準(zhǔn)備是很有必要的,這里給幾點建議。
1、梳理專業(yè)知識要點
毋庸置疑,專業(yè)知識點基礎(chǔ)要做好充分準(zhǔn)備,如果時間緊,來不及做充分準(zhǔn)備,最少也要大致瀏覽一下,溫故而知新,如果你是大神,請忽略。筆者有次面試時,沒有做好準(zhǔn)備,一些基本的筆試題都沒有做好,最好的結(jié)果可想而知,而心儀的公司擦肩而過。
2、回答面試官的問題時要抓重點
一般程序員的口才能力相對比較薄弱,如果是這樣,建議你在面試過程中要學(xué)會揚長避短,針對面試官提出的問題,無論是技術(shù)問題還是談人生,都要做到有的放矢,抓重點。
3、平時要培養(yǎng)獨立思考,獨自解決問題能力
有的開發(fā)者,一碰到問題,喜歡立馬通過搜索引擎找到答案,認(rèn)為這樣效率高,其實不然,獨立思考問題是一項很有意思的活。
在實際開發(fā)過程中,難免會遇到各種各樣的問題,這時,建議你先思考,實在不清楚的在通過搜索引擎或是其他方法解決。
相信你身邊有不少這樣的人:他們學(xué)習(xí)更傾向于被動接受知識,習(xí)慣人云亦云,遇到問題了,總是求助于他人,認(rèn)為他們都有道理。
還有這樣的人,相信你身邊也不少:他們看問題總有自己的觀點,而且觀點新穎,想法深刻。能獨立思考問題的人,解決問題往往更實在,這就是獨立思考的魅力了。
我們平時如何積累面試中需要的技術(shù),閱讀源碼是一個不錯的選擇,因為面試中的很多問題我們都可以從源碼中找答案,其次要主動學(xué)習(xí)平時工作中遇不到的一些技術(shù),由于工作的原因,我們不可能通過公司的項目來解除到Android中所有的重要技術(shù),尤其是一些規(guī)模不大的項目來說,這個時候需要我們主動去學(xué)習(xí)。比如AIDL原理、Binder機(jī)制、多進(jìn)程、View的繪制流程、事件分發(fā)、消息隊列等。這類知識點,需要我們不斷去探索實踐,運用才能更好的解決問題。
當(dāng)我們回過頭來總結(jié),你會發(fā)現(xiàn)大多數(shù)正規(guī)的面試每個環(huán)節(jié)都是層層遞進(jìn)的,而且逐步深入。并不是每次面試結(jié)果都能如愿拿到offer,但我們可以從面試中總結(jié)出來的經(jīng)驗,也是一個很好的學(xué)習(xí)指引,我們可以自己自查,看看自己現(xiàn)在是處于哪個層次,這樣在工作中也可以不斷地向更高層次邁進(jìn)。
【END】
聯(lián)系客服