最新百度、頭條、小米、360、網易、等公司 Android 社招面試心得

想念你的Android發表於2019-02-26
每到“金三銀四”的季節,總人很多人去尋找名叫“面經”一樣的東西,其實就是一個個具體的題目,然後臨陣磨槍,去“背”答案,如果一直是這樣的話,我相信你的能力不會有任何提高,即使工作三年五年也達不到高階工程師的水平,事實證明這類“程式設計師”佔大多數。而且我認為一個“面經”真正有價值的內容是面試前你是如何學習的,面試中面對不會的題目你是如何回答的,以及面試後的你的感受和總結,而不是冷冰冰的羅列題目。

一.想要分享的內容

開篇我也表達了我對“面經”的看法,所以我就不羅列具體的題目了,而且每次面試的題目都大同小異,其他專欄已經列舉的足夠多了,再列舉也沒有太多的意義,這裡我想著重分享以下五點:面試前的準備學習方法面試風格面試後的感受,以及職業規劃


二.面試前你應該做的準備

面試前一定要系統的複習各個模組的知識點,不要匆忙的出去面試,尤其是對於大公司來說,面試機會本來就不易,不要因為自己沒有複習準備好,而白白的喪失了機會,尤其是對於突然被裁,事前沒有充分準備的同學來說,更應該注意這一點,我深知被裁的滋味,但是被裁後也要理性的對待這件事,不要因為自己的慌張,無助而匆匆投簡歷去面試

對於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,只要簡歷上有寫,就必須得會
  • 從簡歷中挑選問題問,並不全問,當然面試官也會根據自己的習慣提問簡歷上沒有寫的內容。這種情況是最多的。
  • 在你介紹專案經驗的時候,從中選擇感興趣的問題或相關知識點去提問。
  • 只關注你的專案本身,包括專案介紹,專案難點等等。在這次網易一面中就是這樣的,只詢問了我簡歷上所列舉的專案重難點,以及解決方案。
  • 不提問任何具體知識點和專案經驗,讓你回答一些開放性的問題,比如你是通過什麼途徑學習的;你對跨平臺的技術如何看待等等。這種面試方式一般出現在技術面的最後一面。

最後我想要著重強調一下,專案經驗很重要,尤其是對於社招生來說,所以就要求我們在平時做專案的時候一定要逐漸的去積累專案的重難點是什麼,以及如何解決的。當然有可能在實際工作中我們負責的那一個模組確實沒有很大的難點值得去說,這也是有可能的,這就需要我們去全面的瞭解自己的專案,看看其他同事負責的模組有沒有值得去學習和總結的,這不僅有利於我們技術上的提高,也有利於增加我們的專案經驗。

喜歡的點個贊,下篇將著重分享這些一線網際網路公司的面試題


相關文章