2019屆應屆畢業生Android秋招總結,已成功入職網易雲音樂

作者 | 沉默王貳

前言

先說說自己的基本情況吧,陝西某雙非一本本科,軟件工程專業,從大二第一學期開始自學Java,Android,大二大三逃了兩年課,在圖書館自學兩年,秋招提前批拿到了網易雲音樂和金山WPS的 Android開發工程師 offer。目前的話,我已經很滿意了,不投了,收手

坑逼學校不讓出去實習,也沒辦法,強制在學校實習。從7月20號在校實習結束之後,開始準備秋招,投簡歷。投了70+份簡歷,目前爲止的話,面了6家大廠,拿了兩家offer,還有幾家待面(貝殼找房,蘑菇街),剩餘的筆試也都沒做。面的7家分別是:

  1. CVTE(HR面掛)
  2. 金山WPS(offer)
  3. 途牛(二面主動放棄面試,因爲有更好的啊~)
  4. 360(因時間沒安排好,放了二面面試官鴿子,被掛 無奈~~~)
  5. 騰訊 MIG QQ瀏覽器(HR掛)
  6. 網易雲音樂(offer)

因爲也知道自己學校不好(高考發揮重大失誤),大一內心非常掙扎,一直不願做一個平凡的人。大一在課餘時間看了一百多本書,大二開始自學安卓,入了安卓的坑,也深知去大廠,必須非常牛逼,牛逼到面試官可以忽略你的學歷。因此大二,大三課全逃,在圖書館潛心修煉兩年。所幸逃了兩年課,只掛了一門,編譯原理,還是開卷,無語。

好了,開始上面經吧:

面經

CVTE一面:

介紹項目架構

MVP,MVC 介紹及優缺點

Butterknife源碼(直接問源碼~~~~)

EventBus源碼

騰訊Bugly 原理及實現,如果是你的話,你怎麼實現日誌上傳傳策略,答到 後臺sevice+守護線程

安卓跨進程通信方式

內存泄露,如何檢測內存泄露 LeakCany原理

Binder 原理

(加一個)冷啓動優化

項目中文件的下載

斷點續傳的實現

Java線程安全,jmm,可見性,原子性,有序性 synchornized和lock的區別,以及原理

TCP 如何實現 可靠傳輸?

擁塞控制的四種方法,這個實在想不起來

安卓學習了多長時間,平時怎麼學習安卓?

CVTE二面:

設計模式的六大原則,對六大原則的理解,在項目中的應用

說說你最熟悉的三種設計模式

單例模式如何實現線程安全

Builder模式 和set方法有什麼區別

觀察者模式 推和拉,有什麼區別

MVC MVP MVVM 的區別,在項目中的應用

MVP如何進行解耦合,P如何實現V 和M 的交互

看過什麼源碼?

Retrofit源碼,如何實現動態代理,和rxjava如何交互,可不可以設置多個convertFactory,如果設置了怎麼辦?如何動態確定

Volley源碼,緩存超時如何判斷

然後是編程 題,不能使用 java數據結構,實現棧,需要考慮 線程安全 ,泛型 ,擴容, 限定 5分鐘

能不能優化,scyronized 和 volitle 區別,votile原理

IPC方式?

Binder原理?Binder連接池(這個真不會)

Client調用Server方法的過程?

看過Framework那些源碼?

自定義View 需要注意的問題,MesureSpec, 自定義View 動畫的實現

Handler原理?子線程如何實現Handler,Message如何存儲在MessageQueen?

有沒有學習什麼新技術,有沒有看今年的Google IO 大會。

面試官看了我的博客,問了一些簡單的問題

金山WPS一面

介紹一下Volley,okhttp,retrofit

volley的基本流程,OKhttp的攔截器鏈,retrofit的動態代理

photoview如何實現

Glide與Picasso區別

如果讓你設計圖片加載框架,你如何設計(三級緩存機制)

插件化,熱修復,andfix原理,如何做到機型適配(native如何做到機型適配 我很慌啊~~~~)

Hashmap原理,如何實現線程安全,HashTable,CourrentHashmap原理

介紹一下java中的鎖

單例模式,dcl存在的問題,如何解決

http/https區別,HTTPS加密如何實現。

get/post區別,post 如何實現密文傳輸

事件分發機制

activity的四種啓動模式,及其應用場景

Handler的使用及其原理,子線程如何實現

eventbus幹什麼的,和handler有什麼區別

eventbus能否實現IPC

IPC方式

AIDL底層,沒問Binder原理

金山WPS二面

hashmap的實現方式

hashmap如何查找元素

static關鍵字

final關鍵字

volatile關鍵字

單例 線程安全的實現方式,細節

事件分發

volley源碼

java函數的訪問權限

圖片緩存框架的區別

java垃圾回收

算法:

二叉樹遍歷

中序遍歷的下一個節點(劍指offer原題,看了四五遍,還沒記住,該打)

翻轉鏈表

二叉樹深度

途牛一面

應用上線細節(說要搜我上線的應用)

retrofit源碼涉及的設計模式

handler asynctask HandlerThread 的源碼

熱修復與插件化

Java類加載機制

線程,線程池,線程池核心參數

30M圖片的加載,如何預防oom

內存泄漏 的檢測與預防

事件分發機制

自定義view

listview 與recycleview 的複用和回收

tcp udp區別

三次握手和四次揮手(這個真沒背,那圖怎麼記啊)

360一面

static關鍵字

syrizoned原理

自定義控件

事件分發

滑動衝突

四種引用

弱引用的使用

內存泄漏

插件化 dla原理

65535方法的解決

360二面

介紹一下項目

service的使用

IPC java 安卓 把知道的IPC 全說出來,p/v 信號量 管道 信號量 ,複製黏貼版 什麼的

性能優化

ANR

OOM

內存泄漏

UI卡頓

BItmap優化

Listview優化

launcher的啓動過程

volley源碼

butterknife源碼

熱修復,andfix,sophix,hotfix原理

因爲金山二面,和360在同一天面試,金山二面約了45分鐘,結果聊了70分鐘,錯過了360二面的時間,二面面試官一臉嫌棄的看着我。當然這也怪我沒安排好時間,希望大家以後面試時間好好安排一下。

騰訊 一面

activity的四種啓動模式,具體場景分析

volley,OKhttp有什麼區別

OKhttp 複用連接池怎麼實現的(這個沒看過,面完趕緊看)

volley的源碼,OKhttp源碼,eventbus源碼

httpclient,httpURLconnection內部實現(太原理了,沒看過)然後問httpclient,httpURLconnection是哪個組織開源的,黑人問號臉???,還有這種操作。哈哈 。我知道。httpclient是Apache開源實現的,httpURLconnection是sun開源實現的

activity的啓動流程(面試完了趕緊看),說沒看過,看過其他framework源碼,說來一下handler,asynctask源碼

Android的任務棧

類的加載過程

不允許寫代碼,如何定位anr。

service的保活

極光推送的原理 ,心跳包的發送間隔時間(我回答的是5s,面試官讓我好好思考思考,然後回答根據具體的應用場景進行判斷。巴拉巴拉一大堆)

熱修復原理,andfix,hotfix源碼?

方法數超過65535怎麼辦?分包是哪個版本開始支持的,之前的版本不支持,如何加載dex文件。

騰訊 二面

介紹第一個項目的功能,大部分問題是根據第一個項目問的

用戶登錄與服務器進行交互的過程,如何優化。加密:HTTPS,base64,md5,非對稱加密算法 及其使用場景。

listview 如何進行優化,無限下拉加載如何優化

bitmap的優化

jpg和png圖片的區別(這個打錯了,面試官讓我下去查一下)

三級緩存機制,什麼時候內存緩存,什麼時候磁盤緩存

熱修復,阿里andfix,騰訊 hotfix 原理,方案對比

騰訊面試官 還是主要看 思考過程,對安卓整體的理解,而不是答案。後面網易也是一樣的。

可能是因爲春招面過,評價不太好(當時準備基礎,沒想到面試官面問框架源碼,16分鐘,gg),導致秋招無法通過。

網易雲音樂一面

安卓常用的佈局,特點。LinearLayout和relaviteLayout 區別

fragment與view的區別

fragment的切換方式

fragment的生命週期

fragment的內存泄露

bitmap優化

反射的作用?編譯時還是運行時?

java IO 多線程

抽象類和接口的區別

hashmap的底層實現,hash算法,爲什麼選擇hashcode 高16位於低16位異或?直到問到不會~~

synchronized 與reentrantlock 的區別? 等待可中斷的內部實現(what~~~ 說了一下如果是我我該怎麼實現)

eventbus的內部實現 一直問到不會~~~

handler內部實現 一直問到不會~~~

網易雲音樂二面

用過數據庫?寫了一條sql,問我怎麼建索引,然後把 or改成and 問怎麼修改優化?(本菜雞不太會)沒怎麼用過數據庫,只用原生寫過一個小demo,安卓基本都orm框架了吧。然後解釋了我的數據庫是怎麼做的。

數據庫設計規範,三大範式(數據庫課程逃了一學期,老師吹逼不好好講,沒辦法,會寫sql語句,只知道第一範式)

volley源碼,一直問,一直問到不會

項目的難點 MVP的設計架構,MVVM

Drawable 的子類 ,方法(表示只知道 colordrawable,bitmapdrawable,然後繼續追問,就說,看過安卓開發藝術探索,有一張專門講drawable,因爲用的少,沒怎麼看,就放過了)

Drawable 和bitmap區別(又來)

okhttp源碼,brigeIntecptor 作用是什麼?說一下 http header

Http和HTTPS的區別,HTTPS工作原理

事件分發機制

自定義view

最後問我你覺得你那塊需要繼續深入?

具體的HR面 面經我就不貼了吧,都大同小異,真誠一些就好,意願表達強烈一些,也不能太實誠,具體的話,多面多總結吧~~~~


關於這些面試題我已經把答案和思路整理成了PDF,另外還有一些自己平常看的資料,今天分享出來,希望可以幫助到大家

如果你有需要的話,可以點擊Android學習PDF+架構視頻+面試文檔+源碼筆記獲取免費領取方式

最後

現在工作也找到了,得給自己找點事做,本來說想混喫等死,玩了一週,感覺很空虛,同學基本不是準備考研就是跑招聘會,無聊,接下來的話準備:

  1. 繼續深入學習安卓
  2. 學吉他
  3. 繼續博覽羣書
  4. 找女朋友 O(∩_∩)O哈哈~

希望我寫的這些能幫助到大家。希望大家沉住氣,都能拿到滿意的offer

我也轉載兩句我喜歡的詩鼓勵大家吧

朋友,堅定地相信未來吧

相信不屈不撓的努力

相信戰勝死亡的年輕

相信未來、熱愛生命

也許迷途的惆悵會扯碎我的腳步

可我相信未來會給我一雙夢想的翅膀

雖然挫折的創傷讓我寸步難行

可我堅信光明就在遠方

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章