1. 程式人生 > >網易內推(Android) 拿offer

網易內推(Android) 拿offer

學校BBS上師兄髮網易內推,湊下熱鬧投了一發

一面:電話面

大概25分鐘,感覺面試官氣場很足,主要關注了其中一個 個人開源專案

1、自我介紹

2、說說你做的這個專案

當時談到使用到了開源框架xtuil中的dbxutil和httptuil,然後讓分析這倆個模組原始碼;其中詳細問了httputil實現原理(主要是執行緒池,封裝的是httpclient)

使用到了 slidingmenu_library開源控制元件,讓分析這個開源框架的原始碼;

tips:專案中使用到的開源框架一定要了解

3、說說你做過最複雜的控制元件

有點不好說,扯到開機動畫,追問如何實現,然後又追問了animation 和animator的區別

乾淨利索沒有太多的廢話,直接就說“好,面試結束”直接就掛電話了 。同學問我面的咋樣,我都直接說跪了沒戲

二面:杭州網易現場面 (當然報銷來回動車路費)

面了將近1小時15分鐘吧

過了一個星期接到hr電話說一面過了,需要現場面,去杭州面試確實艱苦,14個小時動車到杭州已經是半夜11點了,找個小旅館睡下,下午倆點去面試

面試官不關注我app專案,直接丟擲大問題,慢慢討論

1、說說推送

扯到長連線,心跳包,直接被面試官打斷,這個我們都知道,說說保持一個長連線很簡單,為什麼長連線會帶來很多麻煩,還提示從耗電量,微信分析

2、從協議棧角度分析一下推送的過程

看了我LTE協議棧專案(本人通訊專業)問的,感覺有點不搭邊

3、專案使用開源框架的原始碼分析討論

主要還是集中在httputil原始碼實現、討論了執行緒池設計,阻塞佇列;

由於httputil封裝了httpclient,然後讓比較 httpclient和httpurlclient區別;

扯到了http協議,問了http與https區別,(當時我在分析直接被打斷,“這個我們都知道,簡介概括”,然後我我直接說https=http+ssl+加密演算法);

加密演算法是對稱還是非對稱的,,商量祕鑰的過程是對稱還是非對稱

3、android訊息處理機制

handler+loop分析;

loop執行緒與普通執行緒區別;

asynctask原始碼分析(這裡有個執行緒池幾個關鍵引數5,128,使用的阻塞佇列,補充講了asynctask缺陷)

如何改進asynctask造成的記憶體洩露的問題,從而延伸到 jvm虛擬機器四種引用

4、說說androi 使用卡頓是什麼造成的,給出優化

主要回答了ui overdraw避免,<include>標籤,<viewstub>標籤,<merge>標籤使用,hierarchy viewer工具的使用;

面試官追問:再從底層分析;(其實就是 16ms和60fps的追求了)

再結合GPU操作分析一下UI過程;

然後說到了大圖載入問題,提到UIL框架,讓分析內部原始碼(我主要從uil的快取策略和執行緒池機制分析)

5、忽然扯到併發,讓分析concurrenthashmap,答了分段鎖仍不滿意,要求再分析一下size操作是如何做的

6、材料設計

從listview優化談到recyclerview,深入分析一下recyclerview特點

然後引申到瀑布流如何實現,不使用recyclerview如何實現瀑布流

7、屬性動畫

8、touch事件分發機制

9、android開機過程(主要討論了zygote)

10、讓你設計一個遊戲人物,如何設計

主要講了抽象類+介面+mvc和mvp模式

一面折騰完,直接讓出去休息,等HR面,後來等了40多分鐘面完HR,由於是第二天早上7點半的動車,晚上在火車站附近網咖玩了一夜LOL,第二天回校等通知,9.16號才等來offer通知