面试中 项目遇见的难点答案_2019 百度、头条、小米、360、网易、拼多多等公司 Android 社招面试心得...
每到“金三銀四”的季節,總人很多人去尋找名叫“面經”一樣的東西,其實就是一個個具體的題目,然后臨陣磨槍,去“背”答案,如果一直是這樣的話,我相信你的能力不會有任何提高,即使工作三年五年也達不到高級工程師的水平,事實證明這類“程序員”占大多數。而且我認為一個“面經”真正有價值的內容是面試前你是如何學習的,面試中面對不會的題目你是如何回答的,以及面試后的你的感受和總結,而不是冷冰冰的羅列題目。
最近兩個月,因為被裁員,一直在不停的找工作,目前已經拿到滿意的 offer 并順利入職,寫這篇文章的時候正是我入職后第一個周末,感受還是很復雜,被裁當天的無助,像戰爭一樣的面試,收到第一個 offer 后的安心,以及入職后新的期待和壓力都在其中。因此想用文字來記錄下這所有,同時也希望可以給同齡工作經驗的伙伴們一點點幫助和啟發。
## 個人簡介
本人18 年碩士畢業,先后在愛奇藝(實習),摩拜任職,由于裁員被迫親身經歷了一次“互聯網寒冬”,很舍不得摩拜的同事,因為從同事上升為朋友是一件很不容易的事情。近兩個月我先后面試了包括百度,搜狗,頭條,小米,搜狐,360,網易,拼多多等等十多家公司,很疲憊,也有點迷茫,同時也很感謝所有的面試官給我的指導,受益匪淺。
## 想要分享的內容
開篇我也表達了我對“面經”的看法,所以我就不羅列具體的題目了,而且每次面試的題目都大同小異,其他專欄已經列舉的足夠多了,再列舉也沒有太多的意義,這里我想著重分享以下五點: **面試前的準備**
, **學習方法**
, **面試風格**
, **面試后的感受**
,以及 **職業規劃**
。
## 面試前的準備
面試前一定要系統的復習各個模塊的知識點,不要匆忙的出去面試,尤其是對于大公司來說,面試機會本來就不易,不要因為自己沒有復習準備好,而白白的喪失了機會,尤其是對于突然被裁,事前沒有充分準備的同學來說,更應該注意這一點,我深知被裁的滋味,但是被裁后也要理性的對待這件事,不要因為自己的慌張,無助而匆匆投簡歷去面試。
對于Android應用開發而言,需要復習的并不是很多,無非是都熟知的那幾大類:Java 基礎,JVM,Java 并發,Android 源碼,Android 第三方框架,Android 性能優化,數據結構與算法,再加上一些網絡知識等等,這里我就不在重復贅述了,大家可以去參考 **張拭心**
同學所總結的這篇文章( [走心的中級安卓工程師跳槽經驗分享 - 小專欄](頁面加載中,請稍候...)
),還是很全面的。
另外我在補充兩個點,我們在復習具體的題目或知識點時,還可以著重去百度查找具體公司的面試題目,因為很多面試官都會習慣性的問同一問題或同類問題,這樣更有針對性。再者就是自己簡歷上所描述的內容一定要會,包括具體的知識點,也包括你的 **項目經驗**
,都同等重要。
當自己感覺復習的差不多了,先不要投遞和預約大公司或者自己向往的公司,先去幾家小公司,或者自己肯定不會去的公司面試,這樣即使沒有通過面試也不算是浪費了機會,還能順便幫助自己更好的查漏補缺,如果通過了還可以更加自己后面面試的信心。雖然這樣的行為“欺騙”了一些公司的hr同學,但面對自己求職的利益來說,只能抱歉了。
## 學習方法:
學生時代的我們,常常聽到的一個詞就是“學習方法”,它看不見摸不著,卻常常體現在我們的考試成績上。等到畢業,真正工作的時候,這個詞似乎離我們越來越遠,不變的是我們依然只是在不停的做計劃,這一年要讀幾本書,這一月要學會哪些知識點,甚至以天來量化,但很少去思考為什么去學習這些,更重要的是如何去學習。
面試復習和我們平時學習也一樣,在學習態度端正的前提下,那么如何學習就會變的尤其重要,雖然在學生時代老生常談,但是自從工作后,很多人忘了它,都在急功近利的搪塞知識,以為讀了幾遍剛哥寫的《Android 開發藝術探索》就可以成功躋身高級工程師了,真正理解的依然在少數,和讀了幾遍沒有必然關系。我才疏學淺,不過還是想表達和分享下我的學習觀。希望可以給不知道怎么學習的伙伴一點點啟發。
* 系統
“系統”很好理解,也就是我們在復習知識點時一定要全面,只有全面了,我們的基礎才可以打的牢,這個基礎很重要,基礎有了才可以更好的進行思考和總結。
比如我們經常會使用以及研究一些 Android 第三方的框架,如 OKHttp ,我們要從三個方面去全面理解它:
1,利用 okhttp 實現基本的網絡訪問功能,包括基本的數據請求,表單提交,文件上傳,文件斷點下載,https的設置等等。
2,深入研究 okhttp 源碼,熟悉 okhttp 中的調用過程,攔截器原理,緩存原理以及其中涉及的設計模式,并可以自定義攔截器實現特殊的功能,如日志打印等等。
3,在研究 okhttp 緩存原理之前,得首先熟悉 http 緩存的相關字段以及在設置 https 時,也要全面復習 https 的相關原理。
通過以上思路的復習,慢慢地你的知識體系就會建成,基礎也就日漸牢固。
* 思考
我認為思考和下面的總結都是比較困難的,因為這和每個人的基礎和視野有很大的關系,基礎差、視野小的工程師一定和基礎牢固、見識廣范的人所思考的深度和方向不一樣,就拿我這種中級工程師來說,我面對 okhttp 所能想到的方向有:它與 retrofit 是什么關系;okhttp 與其他網絡框架的比較;因為涉及到網絡相關,還可能再延伸到網絡優化方向等等。但是不管你所思考的方向是什么,只有有所思考就是進步,而不是單純的停留在 okhttp 框架的本身。
* 總結
這里的總結是在上一步思考的基礎之上進行的,并不單單是把自己所學習過的知識點全部羅列出來就可以了。因為每個知識點在學習的過程中看似是獨立的,實際上知識點之間大都是有關聯的,我們要學會去思考并總結各個有關聯的知識點,然后盡自己所能深挖出更多的知識點,使之串聯,后面我會利用實際的面試題再來更加清楚的解釋這一點。
## 面試風格:
這部分我想分享一下面試官都是如何去問問題的。所以就暫且起名總結為面試風格的問題。
我想大家應該也都知道,這里我大致分為五種:
* 全部按照簡歷上所列舉的知識點問。在我這次面試經歷中360的一面和二面的面試官都是這樣問的,因此我們一定要熟知我們簡歷上所寫的內容,包括新技術例如koltin,flutter,只要簡歷上有寫,就必須得會
* 從簡歷中挑選問題問,并不全問,當然面試官也會根據自己的習慣提問簡歷上沒有寫的內容。這種情況是最多的。
* 在你介紹項目經驗的時候,從中選擇感興趣的問題或相關知識點去提問。
* 只關注你的項目本身,包括項目介紹,項目難點等等。在這次網易一面中就是這樣的,只詢問了我簡歷上所列舉的項目重難點,以及解決方案。
* 不提問任何具體知識點和項目經驗,讓你回答一些開放性的問題,比如你是通過什么途徑學習的;你對跨平臺的技術如何看待等等。這種面試方式一般出現在技術面的最后一面。
最后我想要著重強調一下,項目經驗很重要,尤其是對于社招生來說,所以就要求我們在平時做項目的時候一定要逐漸的去積累項目的重難點是什么,以及如何解決的。當然有可能在實際工作中我們負責的那一個模塊確實沒有很大的難點值得去說,這也是有可能的,這就需要我們去全面的了解自己的項目,看看其他同事負責的模塊有沒有值得去學習和總結的,這不僅有利于我們技術上的提高,也有利于增加我們的項目經驗。
## 面試后的感受
這次我經歷了百度,搜狗,頭條,小米,搜狐,360,網易,拼多多等等十多家公司的面試,受益匪淺。這部分我重點分享下給我留下深刻印象或讓我有很多思考的面試經歷。以下分享不分排名,想到哪里就寫到哪里。
## 拼多多
"備受爭議"的一家電商公司,發展很快,不過這不是我想說的重點,我想說的是,拼多多的兩位技術面試官很和藹(當然hr同學也很好了~),提出的問題很新穎,就拿Handler來說吧,大部分的公司都會直接問,說說你對消息機制Handler的理解,拼多多的提問大概意思是:
1,讓你設計一個線程池,如果調用者在傳入的Runnable任務時,在run方法直接使用了Handler,會發生什么?
2,1的問題還比較簡單,子線程不會默認給你一個looper,你需要調用prepar去創建,調用loop去開啟無限循環,這是一個正常的回答,問題又來了,面試官又問你,接下來又會發生什么?
3,到這里我相信會有一些同學暫時會"蒙"一下,心想,應該不會發生什么了吧?2中已經提到loop是無限循環取消息,如果到現在什么都不做,這個線程會一直停留在run方法中,結束不了.到這里還沒完。
4,知道IntentService嗎,它里面也有一個Handler,它是如何結束執行呢,如果多次start這個IntentService,它又如何判斷什么時候結束呢?
這系列問題都不難,但我想說的是答案并不重要,重要的是我們在學習的時候不但要多問為什么,還要把各個知識點可以串聯起來,這個很重要,如果各個知識點都略知一二,都串不起來,說明沒有正真的理解。也體會不到學習的樂趣。
為了可以更加深刻的體會到"知識點串聯"的重要性,我這里再舉一道題:
1,相信大家都被問過activity啟動流程,也被問過activity生命周期,也被問過ui繪制流程,當然也被問過在activity的oncreate方法中,為什么獲取不到控件的寬高,如何才可以獲取,為什么?
2,上面一口氣說了四道經典面試題,當然答案不重要,這里我在追問一下:如果在onresume方法中可以獲取控件寬高嗎?在追問一下:ui繪制流程和activity生命周期有什么關系,或者ui開始繪制的時機到底在什么時候?
3,所以仔細想想,這些知識點都是有關系的,我們在復習的時候應該這樣去想,這樣才可以更加有效率的去學習,才可以更加快速的擺脫初級工程師的帽子。
這里最后舉一道題,以結束拼多多面試給帶來的思考: 大家都知道子線程不能更新ui,我再追問一下,子線程真的不能更新ui嗎(答:是可以的,也不會報錯,當然答案不重要)
## 百度:
我心目中大廠中的大廠,正因為這樣也是我這么多次面試中唯一緊張的一次,還好結果還很滿意。兩位面試官也給我提了很多建議,很感謝,這里還是用一道現場面試題來表達我的思考吧。
你對網絡請求做過哪些優化呢~
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的面试中 项目遇见的难点答案_2019 百度、头条、小米、360、网易、拼多多等公司 Android 社招面试心得...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全球首个基于真实道路场景的时序车路协同数
- 下一篇: 菜鸟裹裹怎么删除订单记录