Android 開發網易面試涼涼經,面試官:基礎不牢,技術不夠深入,無緣offer

南方吳彥祖_藍斯發表於2021-06-02

網易的面試結果已經出來好幾天了,一直拖著不是很想寫面經,反正這會兒閒著無聊,又總是要寫的(一來呢是當做一種記錄吧,二來呢留給自己和需要的人看,好有個方向)就這會兒寫了吧...

首先還是感謝吧,感謝網易面試官的肯定和建議。

網易一共經歷了四輪面試,前三輪技術面,第四輪總監面。二面完了之後,HR 邀約去杭州參加現場面的,但是因為距離原因拒絕了,後來改成影片面,說實話,我現在有點後悔當初的決定了... 俗話說,見面三分情嘛哈哈哈哈

網易一面(28 min)

  • 自我介紹
  • 專案經歷(老老實實一五一十介紹專案經歷)
  • 然後一個專案一個專案地問
  • 介紹專案功能,挑一兩個你覺得的實現難點講講
  • 聊專案聊了好多,就是聊天一樣的,很輕鬆
  • 聊了很多 Flutter 的東西,比如怎麼接觸到 Flutter 的,為什麼這麼喜歡 Flutter,為什麼創辦這個 Flutter 開發者協會
  • 聊著聊著二十多分鐘過去了,面試官說我給他的感覺很好,所以也不打算問那些基礎的(只有他覺得是基礎)東西了(可能是累了hhh),然後就問我有什麼要問的嗎

提問環節:

  • 網易內部對 Flutter 的看法,以及對 Flutter 未來的看法,以及值不值得學習
  • 如果能拿到 offer,有沒有要求必須要去實習
  • 什麼時候有結果

網易二面(30+ min)

這一面真的... 不知道咋說,由於在這次面試之前不久被百度的面試官懟慘了,看來本人真的是心態超級不好啊,被懟了之後,再去看網上的面經,覺得自己啥都不會,越看越喪,甚至開始自我否定... 

所以對網易二面真的沒抱什麼希望了,面試官問什麼我就答什麼,會的就答,不會就說不會,也不多說什麼,基本就是一問一答式的(除了聊 Flutter 的時候確實比較激動),面試中途我甚至有說想放棄面試、不想耽擱彼此的時間,不知道是面試官真的沒聽到還是假裝沒聽到(可能是要完成任務吧),他還是繼續問問題,我看他臉色感覺他是真的都聽不下去了,像是兩個機器人在交流,時間一過半小時,面試官就問有什麼問題問他嘛,我說沒有,然後就結束通話了...

對面試官提的問題印象很模糊,只記得很少一部分問題了......

  • 自我介紹 + 專案
  • 講 Service 的使用
  • 使用 Service 的時候有沒有遇到過問題?有沒有在多種機型上測試過
  • 資料持久化
  • 問了挺多 SharedPreference 的東西
  • Gradle 相關
  • Activity之間傳資料
  • 如果 Activity 之間有大量資料(幾兆)要傳,應該怎麼做
  • 事件分發機制
  • 自定義 View
  • 自定義 View 中的自定義屬性是如何呼叫的(好像問的是呼叫)
  • 對比 ListView 和 RecyclerView
  • 講一下設計模式(然後問了兩個我名字都沒聽過的設計模式,讓對比一下)
  • 講一下 MVC MVP MVVM
  • Flutter 中的難點、原生通訊、非同步、框架原理等等......

網易三面(110+ min)

  • 自我介紹 + 專案經歷
  • 如何實現推送?(我說建立一個長連線)
  • 一條推送資訊應該有哪些內容
  • 為什麼這麼設計,講一下每個欄位的含義?這麼設計有什麼問題?
  • 服務端如何確保客戶端收到訊息了?
  • 如果伺服器發出去一個訊息,客戶端還沒收到,斷網了怎麼辦?
  • 如何處理重複訊息?

(還有好多好多問題,考慮安全啊、效能啊、各種意外情況啊,反正就是要搞死你......)

聊了會兒 Flutter

一個印象較深的問題:Flutter 可不可以實現三維模型?(大概這麼問的...)我說不行,因為 Flutter 的繪製引擎 skia 是2D繪製引擎。   他又問 如果有3D繪製引擎呢??還有 Flutter 與原生通訊的問題...

撕程式碼:

一個二維平面上有 n 個氣球,都是標準橢圓(也就是說可以透過兩個座標確定一個橢圓的位置及大小),橢圓的外切矩形與座標軸平行,橢圓的分佈是隨機的,但是不存在兩個橢圓交叉的情況(不存在外切矩形相交),問最少需要多少條平行於 y 軸的線,能夠穿過所有的氣球?

找出兩個單向連結串列中的公共部分。

  • 平時怎麼學習的?
  • 平時有看什麼書?(我說最近有看 《Android進階解密》)
  • 這本書的章節是怎麼安排的?它有什麼特點?
  • 如果要你寫每一章的 topic 你會怎麼寫?

提問環節:

  • 應屆生進入公司能接觸到哪些業務?
  • 如何看待“程式設計師是吃年輕飯的”這一觀點?

網易四面(總監面 25 min)

  • 自我介紹
  • 大學學過哪些課程?然後問了某些課程的分數
  • 一個無序陣列建堆的時間複雜度是多少?
  • 死鎖是什麼?如何產生的(產生死鎖的條件)?
  • TCP 中的滑動視窗
  • 看過《演算法導論》這本書嘛?
  • 職業規劃
  • 為什麼選擇杭州而不是北京
  • 為什麼不讀研?
  • 印象最深的專案

最後依然是提問環節

面試總結:

我的秋招應該也就到這兒了,說實話,我不想再折騰了,因為經過這麼多筆試、面試,發現自己的技術真的還很差,基礎不牢固,知識點掌握的不夠深入,我習慣性在面試結束後讓面試官點評一下自己的表現,聽到最多的大概就是“對某某知識點理解的不夠深入”“加強基礎”。

如果最終沒能保研,我將全身心投入,準備明年的春招,據說到時候壓力更大、更難,能怎麼辦呢?加油吧!!!

面試基礎很重要!

一般包括Android基礎、Java基礎、Android常用的開源框架、設計模式和網路基礎等等。下面我來列舉一下常見的考察點:

Java相關

Java基礎

  • HashMap1.7和1.8的實現原理
  • final關鍵字,為什麼匿名內部類使用區域性引用要用final

Java多執行緒

  • 執行緒池的使用和原理
  • 鎖機制: synchronizedLock
  • volatile關鍵字
  • ThreadLocal原理

JVM

  • Java記憶體結構
  • Java垃圾回收機制
  • Java類載入過程

Android相關

Android基礎

  • Handler通訊機制
  • 跨程式通訊方式
  • Activity啟動模式
  • 記憶體最佳化、佈局最佳化
  • View的繪製流程
  • Android事件分發機制
  • 動畫的分類及其原理
  • MVC、MVP和MVVM模式
  • SparseArray原理

Android開源框架

  • Android網路庫: VolleyOkHttpRetrofit的使用、原理和對比
  • Android圖片庫: GlidePicasso的使用、原理和對比
  • EventBus的使用和原理
  • RxJava的使用和原理
  • Router的使用和原理

網路基礎

  • HTTP相關:包括HTTP2.0、HTTPS等
  • TCP相關:三次握手、四次揮手等

設計模式

  • 單例模式
  • 代理模式:靜態代理和動態代理
  • 觀察者模式

這些基礎知識一方面大家可以直接閱讀原始碼,一方面可以去網上搜尋相關文章去學習。

技術外這些準備要做好

首先是準備簡歷:

簡歷編寫需要注意的幾點:

1.標題的直接按照姓名-幾年工作經驗-應聘崗位格式來填寫。

例如 小明——四年工作經驗——Android開發高階工程師。因為要知道,HR篩選簡歷是非常快的,你要在第一時間就讓他看到他想要看的資訊。HR一開始最關心的就是工作年限和崗位,你直接在標題欄用最大的字型寫出來會比很多人介紹了半天專案最後寫年限要好得多。

2.個人資訊寫最前面。

個人資訊欄其實不用寫很多東西,最主要的就是姓名、聯絡方式、性別、如果學校是名校那麼就寫上,如果本科學的是計算機專業也可以在這裡寫上,如果都不是就最好放到最後去寫,因為最前面的東西永遠是最先看到的內容,也是你最有競爭力和賣弄的資本。

3.有技術部落格和github開源專案的一定寫在最前面。

這是活生生的例子。我在面試華為的時候面試官就特意去看了我的csdn上的部落格。然後說寫的還是不錯的,給他留下了一個不錯的印象,所以這點是絕對的加分項最好就是寫在最前面。

分析考點

技術面是一場技術面試官對候選人的綜合評估

先從面試官角度來分析,在面試過程中的對候選人一些考查點吧。知己知彼百戰不殆,面試過程中 逆向思考一波,有助於我們怎麼應對技術面。

候選人人設是否跟簡歷一致

主要看候選人是否坦誠真實,這個會直接影響能不能透過。候選人上的專案經驗和技能點應該儘可能與候選人匹配,比如說,候選人說做了XX專案,但是問起是怎麼實現的,卻答不上來,或者說熟悉xx技能點,卻只會呼叫常用的api,對其原始碼細節一點都不熟悉,那多半是不給過的。如果候選人要吹牛B,能拿出能圓上吹牛B的實力,也是可行的。比如說某某模組其實是你同事做的,但是你也完全理解了,可以應答如流,面試官是不會計較的。

技術的紮實程度和專案經驗匹配程度

考查包括對技術的理解和解決問題的能力,包含一些細節,運用的場景,實現的原理等等,目的是為了測試候選人技術水平上限。答得越清晰,越深入,對細節掌握越牢靠越好,不一定需要全部答出答完美才能拿到offer,但這些題回答的效果最能影響到offer能談多少錢。小廠偏重於技能、專案經驗匹配度,大廠偏重於基礎、原理。小公司,面試官通常希望候選人儘快上手,就希望候選人有類似競品或者功能開發經驗的候選人,所以也可以從這些方面做準備。大公司呢,可能會提出一些場景來考查候選人怎麼設計,這就要求候選人功底深厚,邏輯嚴謹了。上面的題集我沒寫答案,因為我覺得很多題本就沒有標準答案,也沒有必要背題的“標準答案”,優秀的回答,應該是形成自己的理解輸出的,說的有理有據就行。

候選人亮點、優勢

一般是作為候選人的加分項,或者是面試官為了更快的開啟話題,瞭解候選人的優勢,並測測候選人的優勢到底屌到什麼程度。這個問題回答好了,候選人甚至能翻盤。

如何學習Android面試中所需的技術

很多人在剛接觸這個行業的時候或者是在遇到瓶頸期的時候,總會遇到一些問題,比如學了一段時間感覺沒有方向感,不知道該從那裡入手去學習,對此我針對Android程式設計師,我這邊給大家整理了一套 學習寶典

為了更好更快地學習Android面試中所需的技術,大家可以瞭解一下我的 Android進階學習路線:(附面試題與學習資料)

  • Android學習路線圖

首先,對於沒有學習方向,知識不體系的人,我把我工作幾年整理的學習路線分享給大家,做一個借鑑作用,還不知道怎麼學習的人可以直接照著我這個學習路線一個個的去學習,知識不體系的人可以參考下我整理路線的方式,總之希望能夠幫到你們!

  • 模組化學習資源

接下來是每個模組我整理出來的文件學習資料,幫助大家更細緻化的學習。

《Android彙總複習資料—Java》

《Android彙總複習資料—Android》

《Android彙總複習資料—Android擴充套件》

《Android彙總複習資料—Kotlin》

《Android彙總複習資料—Flutter》

《Android彙總複習資料—演算法》

除了上面的學習路線,還可以額外的配合以下方式學習,效果翻倍~

Android進階學習

①看影片進行系統學習

前幾年的Crud經歷,讓我明白自己真的算是菜雞中的戰鬥機,也正因為Crud,導致自己技術比較零散,也不夠深入不夠系統,所以重新進行學習是很有必要的。我差的是系統知識,差的結構框架和思路,所以透過影片來學習,效果更好,也更全面。關於影片學習,個人可以推薦去B站進行學習,B站上有很多學習影片,唯一的缺點就是免費的容易過時。

另外,我自己也珍藏了好幾套影片,有需要的我也可以分享給你。

②讀原始碼,看實戰筆記,學習大神思路

“程式語言是程式設計師的表達的方式,而架構是程式設計師對世界的認知”。所以,程式設計師要想快速認知並學習架構,讀原始碼是必不可少的。閱讀原始碼,是解決問題 + 理解事物,更重要的:看到原始碼背後的想法;程式設計師說:讀萬行原始碼,行萬種實踐。

主要內含微信 MMKV 原始碼、AsyncTask 原始碼、Volley 原始碼、Retrofit原始碼、OkHttp 原始碼等等。

③面試前夕,刷題衝刺

面試的前一週時間內,就可以開始刷題衝刺了。請記住,刷題的時候,技術的優先,演算法的看些基本的,比如排序等即可,而智力題,除非是校招,否則一般不怎麼會問。

關於面試刷題,我個人也準備了一套系統的面試題,幫助你舉一反三:

④2020大廠面試高頻知識點

  • 圖片
  • 網路和安全機制
  • 資料庫
  • 外掛化、模組化、元件化、熱修復、增量更新、Gradle
  • 架構設計和設計模式
  • 效能最佳化
  • Android Framework
  • Android優秀三方庫原始碼

以上這些內容均免費分享給大家,需要完整版的朋友, 。或者點選 【 】 檢視獲取方式。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69983917/viewspace-2775186/,如需轉載,請註明出處,否則將追究法律責任。

相關文章