Android开发2017秋招总结+面经
背景
在經(jīng)歷了春招沉重的打擊(0offer)之后,我終于明白了自身實(shí)力與現(xiàn)實(shí)的巨大差距。但很不幸的是,我依然沒有拿出百分之百的努力,一堆瑣事和懶惰的心態(tài)阻止了我的步伐,導(dǎo)致我在8月初才開始認(rèn)真的準(zhǔn)備秋招。
ps.
1. 面經(jīng)放在了最后,不想看總結(jié)的可以直接跳過。
2. 腳注是我對(duì)于秋招的各種心得體會(huì),為了不影響閱讀全部放在文章結(jié)尾。
準(zhǔn)備
首先我需要對(duì)我自身進(jìn)行一個(gè)分析,尋找最適合我的準(zhǔn)備方法。
個(gè)人條件
先說一下秋招開始時(shí)的個(gè)人的條件吧,畢竟我的方法可能不是每個(gè)人都適合的,只能作為參考。
- 211本科,計(jì)算機(jī)專業(yè)。
- 有一兩個(gè)獨(dú)立完成的個(gè)人項(xiàng)目/demo(Android)。
- 沒有獲獎(jiǎng)經(jīng)歷
- 沒有實(shí)習(xí)經(jīng)歷。
- 計(jì)算機(jī)基礎(chǔ)的深度一般,但廣度湊合(就是平常上課都有聽過,但都不認(rèn)真)。
- 很少刷題。
- 在學(xué)校的仿真機(jī)器人實(shí)驗(yàn)室呆過兩年,擔(dān)任 隊(duì)長(zhǎng)。
優(yōu)勢(shì)
劣勢(shì)
分析
- 由于劣勢(shì)1,2,6,我的簡(jiǎn)歷很難寫的出彩,也很難走內(nèi)推通道。
- 由于劣勢(shì)3,4,5,在面試時(shí)缺少亮點(diǎn)和深度,無法讓面試官留下太深的印象。
- 由于優(yōu)勢(shì)1,2,我在聊個(gè)人經(jīng)歷時(shí)有很多可以說的內(nèi)容,可以充分展現(xiàn)我的業(yè)務(wù)能力和開發(fā)基礎(chǔ)。
需要做的事
過程
- 為了提高算法能力,我刷完《劍指offer》,了解面試官出題的套路;還在LeetCode上AC了20多道Hard難度的題,在牛客上AC20多道低通過率編程題,加強(qiáng)手撕代碼的能力。
- 為了加強(qiáng)Android基礎(chǔ),我看了以下書目1
- 《深入理解Java虛擬機(jī):JVM的高級(jí)特性與最佳實(shí)踐》
- 《Android開發(fā)藝術(shù)探索》
- 《Android源碼設(shè)計(jì)模式解析與實(shí)戰(zhàn)》
- 《深入理解Android內(nèi)核設(shè)計(jì)思想》
- 《Android開發(fā)進(jìn)階 : 從小工到專家》
- 為了提高計(jì)算機(jī)基礎(chǔ),我復(fù)習(xí)了以下科目2
- 計(jì)算機(jī)網(wǎng)絡(luò)
- 操作系統(tǒng)
- 計(jì)算機(jī)組成原理
- 編譯原理
- 在網(wǎng)絡(luò)上搜集相關(guān)面經(jīng),主要是BAT TMD NJ的Android崗位的面經(jīng),在看面經(jīng)的時(shí)候我會(huì)嘗試回答每個(gè)問題,看看自身掌握如何,不會(huì)的及時(shí)找到答案并弄懂。
- 由于對(duì)內(nèi)推不抱希望,我在牛客網(wǎng)上刷大量的筆試題。希望通過提高筆試能力,能盡量拿到參加面試的機(jī)會(huì)。
- 關(guān)注相關(guān)的內(nèi)推與秋招消息。經(jīng)常刷牛客、V2EX、知乎、脈脈和各種技術(shù)交流群,不放過各種內(nèi)推或者補(bǔ)錄的通知。
- 拿獎(jiǎng),增加簡(jiǎn)歷亮點(diǎn)。在秋招期間,拿到了國(guó)賽三等獎(jiǎng),省賽一等獎(jiǎng),還有普通編程大賽的獎(jiǎng)項(xiàng)。雖說獎(jiǎng)項(xiàng)的含金量不高,但起碼提高了在簡(jiǎn)歷篩選關(guān)的通過率。
- 反復(fù)修改簡(jiǎn)歷,不斷的試錯(cuò)3。
- 熟悉項(xiàng)目,仔細(xì)發(fā)掘項(xiàng)目相關(guān)的知識(shí)點(diǎn)與技術(shù)點(diǎn)并掌握它們4。比如我的一個(gè)項(xiàng)目VectorMap用到了自定義View,我就仔細(xì)了解并記住自定義View的相關(guān)知識(shí)點(diǎn),像是觸摸事件分發(fā)的原理,View的繪制流程,Window Activity View之間的關(guān)系等等。
- 通過大量的面試鍛煉心態(tài),增強(qiáng)面試穩(wěn)定性5。盡量做到和面試官談笑風(fēng)生,會(huì)的講得清,不會(huì)的(心態(tài))穩(wěn)的住。
結(jié)果
線下宣講會(huì)
- 投了簡(jiǎn)歷
- 中興
- 用友
- 北京華宇
- 福建頂點(diǎn)
- 百度外賣
- 參加筆試
- 用友
- 北京華宇
- 福建頂點(diǎn)
- 百度外賣
- 參加面試
- 中興
- 用友
- 北京華宇
- 福建頂點(diǎn)
- 拿到offer
- 中興
- 用友
- 北京華宇
- 福建頂點(diǎn)
內(nèi)推
- 投了簡(jiǎn)歷
- 阿里
- 騰訊
- 網(wǎng)易
- 今日頭條
- 美團(tuán)
- 科大訊飛
- 蘇寧
- 攜程
- 迅雷
- 滴滴
- 搜狗
- 愛奇藝
- 鏈家
- 餓了么
- 58
- 歡聚時(shí)代
- 參加筆試
- 攜程
- 鏈家
- 網(wǎng)易
- 58
- 滴滴
- 搜狗
- 愛奇藝
- 今日頭條
- 歡聚時(shí)代
- 參加面試
- 網(wǎng)易
- 今日頭條
未拿到offer
校招
- 投了簡(jiǎn)歷
- 阿里
- 騰訊
- 網(wǎng)易
- 京東
- 美團(tuán)
- 小米
- 拼多多
- CVTE
- 招商銀行信用卡中心
- 微策略
- 猿輔導(dǎo)
- 獵豹移動(dòng)
- 好未來
- 參加筆試
- 阿里
- 騰訊
- 網(wǎng)易
- 京東
- 美團(tuán)
- 小米
- 拼多多
- 招商銀行信用卡中心
- CVTE
- 微策略
- 獵豹移動(dòng)
- 好未來
- 參加面試
- 美團(tuán)
- 騰訊
- 小米
- 拿到offer
- 小米
- 美團(tuán)
補(bǔ)錄
- 投了簡(jiǎn)歷
- 騰訊
- 參加面試
- 騰訊
- 拿到offer
- 騰訊
心路歷程
整個(gè)秋招過程還是很戲劇性的。
1. 首先,花了一個(gè)多月的時(shí)間參加了大量?jī)?nèi)推卻一無所獲,開始懷疑人生,心態(tài)爆炸,壓力驟增。
2. 接下來,為了調(diào)整心態(tài)參加線下宣講會(huì),拿到了多個(gè)小offer,熟悉了面試的環(huán)境,增強(qiáng)了自信心,為之后的offer奠定了基礎(chǔ)。
3. 參加校招,頂住壓力在大量的筆試之后終于拿到幾個(gè)面試機(jī)會(huì),接著奇跡般地獲得了小米sp和美團(tuán)的白菜,但掛掉了最想去的騰訊。
4. 最后,發(fā)現(xiàn)了補(bǔ)錄機(jī)會(huì),抱著試一試的想法投了簡(jiǎn)歷,機(jī)緣巧合之下參加了線下面試,最后竟然成功拿到騰訊的offer。
經(jīng)歷了秋招之后,發(fā)現(xiàn)心態(tài)是最為關(guān)鍵的因素。擁有一顆強(qiáng)大的心臟是成功的基礎(chǔ)。經(jīng)歷失敗后的反思與總結(jié),多次失敗后心態(tài)的調(diào)整與恢復(fù),成功后不驕不躁的心態(tài),都是未來繼續(xù)發(fā)展不可或缺的元素。
ps.
在秋招的三個(gè)月,總有許多灰暗的日子,在最痛苦的時(shí)刻,我的女朋友給予了我支持和鼓勵(lì),真的非常感謝她。
面經(jīng)
均只有技術(shù)面
騰訊
一面 四十分鐘
聊項(xiàng)目,問問題
看過哪些android源碼
asynctask原理
intentservice原理
service默認(rèn)運(yùn)行在哪個(gè)線程
算法 一個(gè)數(shù)組中有兩個(gè)數(shù)只出現(xiàn)了一次,其他都出現(xiàn)了兩次,找出那兩個(gè)數(shù)
二面 一個(gè)小時(shí)
編程 使用純c對(duì)一段話進(jìn)行詞頻統(tǒng)計(jì)
物理上存儲(chǔ)一個(gè)空文件是否占據(jù)設(shè)備空間
一個(gè)100B的文件存儲(chǔ)到物理設(shè)備上占用物理空間大小會(huì)是多少
平衡二叉樹是什么
https的作用與原理,證書的作用與包含的內(nèi)容
客戶端向服務(wù)器發(fā)送3000字節(jié)數(shù)據(jù)tcp包的流程
說一個(gè)項(xiàng)目難點(diǎn)
說一個(gè)你提高自己的過程
說一個(gè)如何制定計(jì)劃的過程
加面 25分鐘
問項(xiàng)目,項(xiàng)目細(xì)節(jié)
圖片文件有哪幾種格式
jni函數(shù)調(diào)用的具體實(shí)現(xiàn)
進(jìn)程線程區(qū)別,線程切換的具體實(shí)現(xiàn)
算法 現(xiàn)有一系列區(qū)號(hào)和對(duì)應(yīng)的地區(qū)名稱,如何最高效率的識(shí)別某個(gè)電話的區(qū)號(hào)所代表的地區(qū),時(shí)間復(fù)雜度多少
路由器轉(zhuǎn)發(fā)數(shù)據(jù)包的具體實(shí)現(xiàn)
智力題 三個(gè)框,兩個(gè)紅球一個(gè)白球,隨機(jī)放球到框中。求第二框至少有一個(gè)紅球的概率
小米
一面 1個(gè)小時(shí)出頭
個(gè)人介紹
聊項(xiàng)目,展示項(xiàng)目,問問題
介紹binder,如何控制binder的訪問
i++是否線程安全,如何保證線程安全,volatile是否可以
hashmap實(shí)現(xiàn),是否線程安全,如果多線程進(jìn)行操作會(huì)發(fā)生什么
如何使一個(gè)線程進(jìn)入destroy態(tài)
編程 判斷某個(gè)數(shù)的各位平方和是否收斂,意思就是最后變成1 收斂,最后循環(huán)到之前的一個(gè)數(shù) 不收斂
對(duì)未來的發(fā)展規(guī)劃
拿到哪些offer了,如何給你發(fā)offer怎么選擇
死鎖的發(fā)生條件
JNI
是否下載過android源碼
二面 半個(gè)多小時(shí)
自我介紹
編程 二叉樹兩節(jié)點(diǎn)的最近公共父結(jié)點(diǎn)
學(xué)過哪些專業(yè)課,根據(jù)專業(yè)課問了些問題
數(shù)據(jù)庫ACID是什么,原子性的體現(xiàn)
虛存是什么
虛電路與存儲(chǔ)轉(zhuǎn)發(fā)的區(qū)別
TCP協(xié)議可以在虛電路上運(yùn)行么
路由選擇協(xié)議有哪些(我竟然忘了……)
ps.面試官應(yīng)該不是做安卓的
加面 一個(gè)小時(shí)
自我介紹
四大組件
service使用場(chǎng)景
后臺(tái)service和后臺(tái)線程的區(qū)別,service如何實(shí)現(xiàn)跨進(jìn)程通信
描述一下AIDL和binder工作原理
binder如何做到數(shù)據(jù)的跨進(jìn)程傳遞
內(nèi)核空間與用戶空間的區(qū)別
進(jìn)程與線程的區(qū)別
線程的調(diào)度由誰實(shí)現(xiàn)
聽說過協(xié)程么
死鎖的發(fā)生情景
handler的工作原理,handler對(duì)象在哪個(gè)線程存活
如何實(shí)現(xiàn)blockingqueue
synchronized和Lock的區(qū)別
volatile的實(shí)現(xiàn)原理
介紹http
http如何保持狀態(tài)
cookie的工作原理,存放位置,cookie可以被修改么,如何驗(yàn)證cookie有效未被篡改
http相對(duì)于https有什么問題
介紹https工作原理
MVP與MVC區(qū)別
聊實(shí)驗(yàn)室項(xiàng)目
工作意愿
算法 最長(zhǎng)遞增非連續(xù)子序列長(zhǎng)度
編程 逆時(shí)針打印遞增矩陣
美團(tuán)
一面 一個(gè)半小時(shí)
自我介紹
介紹項(xiàng)目(聊了不少,最后說 你這個(gè)項(xiàng)目還挺有難度的啊……)
項(xiàng)目問題
如何解決OOM的問題
自定義view如何繪制旋轉(zhuǎn)移動(dòng)
matrix如何使用
xml解析器有哪些,各有什么特點(diǎn)
rxjava的特點(diǎn)與優(yōu)缺點(diǎn)
retrofit為什么使用接口,底層使用什么實(shí)現(xiàn)的
java的多態(tài)
sleep wait方法的區(qū)別
synchronized關(guān)鍵字的具體特點(diǎn),可以修飾哪些東西
synchronized修飾靜態(tài)方法和非靜態(tài)方法的區(qū)別
Lock的特點(diǎn),和synchronized的區(qū)別
項(xiàng)目中有關(guān)于鎖的優(yōu)秀實(shí)現(xiàn)么(沒有……)
handler的原理
looper的工作原理
asynctask的原理,同個(gè)進(jìn)程中有多個(gè)asynctask實(shí)例會(huì)互相影響么
編程 判斷二叉樹對(duì)稱
四大組件
activity啟動(dòng)模式
組件的注冊(cè)方式
broadcastreceiver動(dòng)態(tài)注冊(cè)和靜態(tài)注冊(cè)的區(qū)別
listview性能優(yōu)化
http狀態(tài)碼
如何優(yōu)化一個(gè)算法
二面 一個(gè)小時(shí)
自我介紹
列舉一下各種排序算法
快排的時(shí)間復(fù)雜度以及計(jì)算方法
如何看待排序算法的穩(wěn)定性
冒泡是穩(wěn)定的么?快排呢?
進(jìn)程和線程的區(qū)別
linux跨進(jìn)程通信的方法
有哪些GC算法,各有什么特點(diǎn)
android的service的實(shí)現(xiàn)描述
serverservice干什么的
binder的實(shí)現(xiàn)
binder使用的基礎(chǔ)技術(shù)是什么
ams干什么的,如何使用
四大組件
啟動(dòng)多個(gè)activity,如何直接退回到最底層activity,會(huì)回調(diào)什么方法
觸摸事件傳遞,當(dāng)view在ontouchevent中接受到down事件同時(shí)返回false會(huì)發(fā)生什么
數(shù)據(jù)庫事務(wù)的特點(diǎn)
虛存的原理
LRUCache的原理
hashmap的原理,hashmap鏈表太長(zhǎng)的處理
tcp/ip結(jié)構(gòu)
如何學(xué)習(xí)(個(gè)人經(jīng)歷)
rxjava的特點(diǎn),subscribeon和observeon是干什么的
注解的作用與特點(diǎn)
0 1背包和完全0 1背包問題的區(qū)別
編程 實(shí)現(xiàn)循環(huán)隊(duì)列
編程 遍歷viewtree
三面 一個(gè)小時(shí)
個(gè)人介紹
一個(gè)app點(diǎn)擊一個(gè)按鈕請(qǐng)求數(shù)據(jù)后會(huì)做哪些事,畫圖演示
后臺(tái)接口與客戶端不一致如何解決
項(xiàng)目中遇到的最難的問題,為此做出的努力
http版本
http長(zhǎng)連接在哪個(gè)版本強(qiáng)制啟用,如何關(guān)閉
http狀態(tài)碼分類,各個(gè)具體狀態(tài)碼的含義
jdk7 相對(duì)于jdk6改變
jdk8相對(duì)于jdk7改變,包括jvm
jdk7 內(nèi)存分區(qū),回收器
cms回收器
編程 求數(shù)組交集
對(duì)美團(tuán)的看法
對(duì)美團(tuán)APP的建議
網(wǎng)易
一面 40分鐘
個(gè)人介紹
項(xiàng)目介紹
項(xiàng)目如何進(jìn)行網(wǎng)絡(luò)通信,HTTPUrlConnection如何實(shí)現(xiàn)輸入輸出流?
Retrofit的原理
Https的原理與作用
LruCache的原理與底層實(shí)現(xiàn)方法
HashMap的數(shù)據(jù)結(jié)構(gòu)
HashMap與HashTable的區(qū)別
如何處理多線程的數(shù)據(jù)同步
synchronized和lock的區(qū)別
實(shí)現(xiàn)一個(gè)單例模式
Activity生命周期介紹,按Home之后的生命周期如何變化
是否使用過service,介紹其作用
聊項(xiàng)目,問問題
如何實(shí)現(xiàn)listview的拖拽
是否使用過圖片加載開源框架
如何讀取超大圖
如何自定義view
遇到的項(xiàng)目難點(diǎn)
聊實(shí)驗(yàn)室經(jīng)歷
為什么要從事Android開發(fā)
二面 35分鐘
聊項(xiàng)目
Handler的原理與實(shí)現(xiàn)
為什么有些Handler不能更新UI
MainLooper在哪里進(jìn)行初始化的
如何啟動(dòng)線程
如何結(jié)束線程
interrupt方法一定能中斷線程么
AsyncTask的實(shí)現(xiàn)
你覺得使用架構(gòu)最難的地方是什么
Android sqllite 數(shù)據(jù)庫并發(fā)如何實(shí)現(xiàn)
Activity按Home鍵到后臺(tái)再返回時(shí)的生命周期
當(dāng)Activity按Home鍵到后臺(tái)時(shí)如何保存數(shù)據(jù),具體會(huì)調(diào)用哪些方法
如何保證在橫豎屏切換時(shí)生命周期不變
SparseArray和HashMap的區(qū)別,SparseArray是否線程安全
HashMap與HashTable的區(qū)別
Service是否用過
sqllite 事務(wù)是否了解
Android如何調(diào)用c++代碼
Java對(duì)象與C++對(duì)象如何轉(zhuǎn)換
最復(fù)雜的項(xiàng)目是什么
自定義view如何實(shí)現(xiàn)
view如何處理繪制的內(nèi)容縮放
項(xiàng)目的難點(diǎn)在哪
如何處理數(shù)據(jù)回調(diào)顯示在頁面上
如何從A進(jìn)程知道B進(jìn)程的Activity是否存活
rxjava和retrofit的底層實(shí)現(xiàn)
如何編寫代碼比較兩個(gè)對(duì)象
==和equals的區(qū)別與使用場(chǎng)景
覺得自己在java還有哪些方面需要提升
java和c++面向?qū)ο蟮膮^(qū)別
項(xiàng)目中如何做內(nèi)存調(diào)優(yōu)
項(xiàng)目中如何控制內(nèi)存泄漏
有沒有使用過第三方工具調(diào)試內(nèi)存泄漏
匿名內(nèi)部類會(huì)導(dǎo)致內(nèi)存泄漏么,為什么
如何學(xué)習(xí)Android
覺得自己是否適合做Android開發(fā)
有沒有改造過Android事件分發(fā)機(jī)制
如何解決滑動(dòng)沖突
今日頭條
一面 一個(gè)小時(shí)
項(xiàng)目介紹
自定義view相關(guān)
如何繪制大于父view的子view
點(diǎn)擊事件流程
發(fā)送網(wǎng)絡(luò)請(qǐng)求的過程
網(wǎng)絡(luò)連接失敗的原因
http&https
網(wǎng)絡(luò)劫持
java類加載過程
android.view由誰加載
編程 字典序第k大的數(shù)
MVP設(shè)計(jì)模式
retrofit的了解
二面 一個(gè)小時(shí)不到
項(xiàng)目介紹
view的事件傳遞機(jī)制
activity的生命周期
restart方法的調(diào)用時(shí)機(jī),按home鍵的調(diào)用時(shí)機(jī),恢復(fù)的調(diào)用時(shí)機(jī),銷毀的調(diào)用時(shí)機(jī)
on save/restore instate的時(shí)機(jī),誰調(diào)用,怎么調(diào)用,當(dāng)view沒有設(shè)置id還有沒有效果
bundle的數(shù)據(jù)結(jié)構(gòu),如何存儲(chǔ)
listview內(nèi)點(diǎn)擊buttom并移動(dòng)的事件流完整攔截過程
多點(diǎn)觸控如何傳遞
service的意義
android的IPC通信方式,是否使用過
service如何實(shí)現(xiàn)跨進(jìn)程通信
android的多線程機(jī)制
asynctask的原理
handler原理
app啟動(dòng)后是怎樣運(yùn)行的(我答的是mainlooper死循環(huán))
java的容器種類和原理
hashcode的機(jī)制與實(shí)現(xiàn)
線程池的種類,有沒有用過
http的版本有幾種
http請(qǐng)求包結(jié)構(gòu),有幾種contenttype
http返回碼的分類,400和500的區(qū)別
編程 按格式打印view和它的子view
總結(jié)
以上是生活随笔為你收集整理的Android开发2017秋招总结+面经的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用flex垂直居中(超简单)
- 下一篇: 初中学历可以学HTML5,【推荐】初中生