牛!程序媛一口气拿下BAT、美团、vivo、爱奇艺等公司Offer面经总结
編輯文章
春秋招面試總結(jié),包括Android面試題庫,時間原因后續(xù)再出個“有問有答”的系列;最后做個總結(jié)還有展望,開始新的征程~
秋招日歷
實習(xí)總結(jié)
題庫大全
一點感悟
>>終于有人把 【移動開發(fā)】 從基礎(chǔ)到實戰(zhàn)的全套視頻弄全了
干貨很多 文末有福利!!
一、秋招日歷
在美團(tuán)實習(xí)的最后一周項目在提測,相比開發(fā)階段著實輕松了不少,所以開始改簡歷、投簡歷和復(fù)習(xí),復(fù)習(xí)內(nèi)容主要是春招總結(jié)的筆記。
不過各廠簡歷處理速度令我始料不及,在緊接的下一周就被各種面試狂轟濫炸,這波操作來得快去的也快,現(xiàn)已拿到BAT、美團(tuán)、vivo、愛奇藝和一點資訊的(口頭)offer,自此整個秋招以面試0error完美收官。
中途發(fā)生個烏龍,在牛客給頭條hr發(fā)過簡歷,結(jié)果竟然誤進(jìn)了社招池,還發(fā)來了面試邀約……差點就去應(yīng)聘Android高級工程師了emmm
面試部門及全部流程
杭州/阿里/數(shù)據(jù)技術(shù)及產(chǎn)品部:2輪技術(shù)面+交叉面+hr面
深圳/騰訊/騰訊視頻:2輪技術(shù)面+hr面
北京/百度/百度APP研發(fā)部:3輪技術(shù)面+文化測評
北京/愛奇藝:3輪技術(shù)面
深圳/vivo:1輪技術(shù)面+hr面+線下交流會
北京/一點資訊:3輪技術(shù)面+hr面
二、實習(xí)總結(jié)
兩個月的實習(xí)生活轉(zhuǎn)瞬即逝,也有幸得到部門老大的肯定和對留用的認(rèn)可。本節(jié)對這段短暫但充實的實習(xí)生活做個簡短的總結(jié),算是給“實習(xí)隨筆”系列文章做個收尾(想看面經(jīng)的可跳過此節(jié))。
實習(xí)單位:北京/美團(tuán)/新零售事業(yè)群/ 閃購事業(yè)部/賦能業(yè)務(wù)組
2.1 工作總結(jié)
參與完整的開發(fā)流程,從v1.0需求評審到上線v1.1,掌握多人協(xié)作必需的Git使用
通過Code Review熟悉業(yè)務(wù)代碼,并刻畫頁面的類圖和活動圖,強(qiáng)化對MVP模式的理解
協(xié)助推進(jìn)項目的進(jìn)展,如v1.0后期埋點、修改bug、APP打包和性能優(yōu)化,使用Lint工具優(yōu)化代碼質(zhì)量、美團(tuán)Metrics工具監(jiān)測Crash情況等,并產(chǎn)出相應(yīng)分析和優(yōu)化建議文檔
開發(fā)和維護(hù)v1.1新增的接入商家會員模塊功能,包括會員識別、用戶授權(quán)和短信驗證
熟悉美團(tuán)各種基礎(chǔ)框架庫并應(yīng)用到項目中,如網(wǎng)絡(luò)Retrofit-mt、定位Locate、驗證服務(wù)Yoda
2.2 學(xué)習(xí)總結(jié)
堅持寫周記的習(xí)慣,總結(jié)每周學(xué)到的新知識,以及記錄所見所聞所想
讀完《深入理解Java虛擬機(jī)》重要章節(jié),并做相應(yīng)的讀書筆記
學(xué)習(xí)主流的網(wǎng)絡(luò)框架Retrofit,并深入源碼
鞏固基礎(chǔ):Java、Android、JVM、操作系統(tǒng)、計算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)結(jié)構(gòu)等
2.3 收獲和成長
這是我第一次走出校園踏入社會,于我而言意義非凡,所以非常珍惜每個在美團(tuán)的日子。
從絲毫不了解新零售的井底之蛙到意識到這是新發(fā)展、大趨勢、刻不容緩,每個業(yè)務(wù)溝通會都給我格局放大、眼界放寬的成長;
通過實際參與一個大的完整的項目,感受到不同于學(xué)校那些小項目的流程更規(guī)范、技術(shù)更強(qiáng)大;
在美團(tuán),培訓(xùn)制度完善、wiki知識庫無所不有、學(xué)習(xí)氣氛濃厚、分享會比比皆是,這些都讓我大飽眼福,技術(shù)也不斷在進(jìn)步;
當(dāng)然也少不了各種生活福利,時不時就搞個小活動,樓下樓上好不熱鬧,吃喝玩樂,正應(yīng)了美團(tuán)的發(fā)展目標(biāo)--"幫大家吃得更好,活得更好"。
總之在這里收獲的不僅有知識和技術(shù),還有見識和人情味,我超喜歡這里的~
2.4 不足和反思
和實習(xí)前對自己的期望相比,現(xiàn)已完成大部分的計劃,也有部分未達(dá)到預(yù)期:
原來一直想看外賣里一些基礎(chǔ)組件的源碼,最后也只是泛泛深入Retrofit-mt,還有很多自己感興趣的框架沒看,看源碼確實不容易但這是一位工程師的必會技能,優(yōu)秀框架必然有其精彩絕倫之處,從"可以寫"到"寫得好"自己還需要走很長的路;實際寫項目也發(fā)現(xiàn)自己會有考慮不全的問題,性能優(yōu)化的意識也不高,雖然理論知識足夠,但畢竟是紙上談兵,還需多實踐形成良好的編程習(xí)慣;之前給自己制定的寫文計劃基本落實,起碼沒有棄坑,不過仍有一些未總結(jié),后續(xù)時間充裕定會補(bǔ)上。
三、題庫大全
之前說過我的復(fù)習(xí)范圍無非是個人技術(shù)博客還有整理的筆記,考慮到筆記是手寫版不利于保存,所以打算重新整理并放到網(wǎng)上,時間原因這里只有問題,后續(xù)會有系列專題給出參考回答。當(dāng)然,我認(rèn)為看面經(jīng)主要是為了查缺補(bǔ)漏,自己也要有一定的知識儲備和學(xué)習(xí)體系,而不是臨時抱佛腳、試圖通過背題背答案方式應(yīng)付面試,只有自己真學(xué)會的東西才能侃侃而談,更有自信。
3.1 Android
Activity
Q:說下Activity的生命周期?
Q:onStart()和onResume()/onPause()和onStop()的區(qū)別?
Q:Activity A啟動另一個Activity B會回調(diào)哪些方法?如果Activity B是完全透明呢?如果啟動的是一個Dialog呢?
Q:談?wù)刼nSaveInstanceState()方法?何時會調(diào)用?
Q:onSaveInstanceState()與onPause()的區(qū)別?
Q:如何避免配置改變時Activity重建?
Q:優(yōu)先級低的Activity在內(nèi)存不足被回收后怎樣做可以恢復(fù)到銷毀前狀態(tài)?
Q:說下Activity的四種啟動模式?(有時會出個實際問題來分析返回棧中Activity的情況)
Q:談?wù)剆ingleTop和singleTask的區(qū)別以及應(yīng)用場景
Q:onNewIntent()調(diào)用時機(jī)?
Q:了解哪些Activity啟動模式的標(biāo)記位?
Q:如何啟動其他應(yīng)用的Activity?
Q:Activity的啟動過程?
Fragment
Q:談一談Fragment的生命周期?
Q:Activity和Fragment的異同?
Q:Activity和Fragment的關(guān)系?
Q:何時會考慮使用Fragment?
Service
Q:談一談Service的生命周期?
Q:Service的兩種啟動方式?區(qū)別在哪?
Q:一個Activty先start一個Service后,再bind時會回調(diào)什么方法?此時如何做才能回調(diào)Service的destory()方法?
Q:Service如何和Activity進(jìn)行通信?
Q:用過哪些系統(tǒng)Service?
Q:是否能在Service進(jìn)行耗時操作?如果非要可以怎么做?
Q:AlarmManager能實現(xiàn)定時的原理?
Q:前臺服務(wù)是什么?和普通服務(wù)的不同?如何去開啟一個前臺服務(wù)?
Q:是否了解ActivityManagerService,談?wù)勊l(fā)揮什么作用?
Q:如何保證Service不被殺死?
Broadcast Receiver
Q:廣播有幾種形式?什么特點?
Q:廣播的兩種注冊形式?區(qū)別在哪?
ContentProvider
Q:ContentProvider了解多少?
數(shù)據(jù)存儲
Q:Android中提供哪些數(shù)據(jù)持久存儲的方法?
Q:Java中的I/O流讀寫怎么做?
Q:SharePreferences適用情形?使用中需要注意什么?
Q:了解SQLite中的事務(wù)處理嗎?是如何做的?
Q:使用SQLite做批量操作有什么好的方法嗎?
Q:如果現(xiàn)在要刪除SQLite中表的一個字段如何做?
Q:使用SQLite時會有哪些優(yōu)化操作?
IPC
Q:Android中進(jìn)程和線程的關(guān)系?區(qū)別?
Q:為何需要進(jìn)行IPC?多進(jìn)程通信可能會出現(xiàn)什么問題?
Q:什么是序列化?Serializable接口和Parcelable接口的區(qū)別?為何推薦使用后者?
Q:Android中為何新增Binder來作為主要的IPC方式?
Q:使用Binder進(jìn)行數(shù)據(jù)傳輸?shù)木唧w過程?
Q:Binder框架中ServiceManager的作用?
Q:Android中有哪些基于Binder的IPC方式?簡單對比下?
Q:是否了解AIDL?原理是什么?如何優(yōu)化多模塊都使用AIDL的情況?
View
Q:MotionEvent是什么?包含幾種事件?什么條件下會產(chǎn)生?
Q:scrollTo()和scrollBy()的區(qū)別?
Q:Scroller中最重要的兩個方法是什么?主要目的是?
Q:談一談View的事件分發(fā)機(jī)制?
Q:如何解決View的滑動沖突?
Q:談一談View的工作原理?
Q:MeasureSpec是什么?有什么作用?
Q:自定義View/ViewGroup需要注意什么?
Q:onTouch()、onTouchEvent()和onClick()關(guān)系?
Q:SurfaceView和View的區(qū)別?
Q:invalidate()和postInvalidate()的區(qū)別?
Drawable等資源
Q:了解哪些Drawable?適用場景?
Q:mipmap系列中xxxhdpi、xxhdpi、xhdpi、hdpi、mdpi和ldpi存在怎樣的關(guān)系?
Q:dp、dpi、px的區(qū)別?
Q:res目錄和assets目錄的區(qū)別?
Animation
Q:Android中有哪幾種類型的動畫?
Q:幀動畫在使用時需要注意什么?
Q:View動畫和屬性動畫的區(qū)別?
Q:View動畫為何不能真正改變View的位置?而屬性動畫為何可以?
Q:屬性動畫插值器和估值器的作用?
Window
Q:Activity、View、Window三者之間的關(guān)系?
Q:Window有哪幾種類型?
Q:Activity創(chuàng)建和Dialog創(chuàng)建過程的異同?
Handler
Q:談?wù)勏C(jī)制Hander?作用?有哪些要素?流程是怎樣的?
Q:為什么系統(tǒng)不建議在子線程訪問UI?
Q:一個Thread可以有幾個Looper?幾個Handler?
Q:如何將一個Thread線程變成Looper線程?Looper線程有哪些特點?
Q:可以在子線程直接new一個Handler嗎?那該怎么做?
Q:Message可以如何創(chuàng)建?哪種效果更好,為什么?
Q:這里的ThreadLocal有什么作用?
Q:主線程中Looper的輪詢死循環(huán)為何沒有阻塞主線程?
Q:使用Hanlder的postDealy()后消息隊列會發(fā)生什么變化?
線程
Q:Android中還了解哪些方便線程切換的類?
Q:AsyncTask相比Handler有什么優(yōu)點?不足呢?
Q:使用AsyncTask需要注意什么?
Q:AsyncTask中使用的線程池大小?
Q:HandlerThread有什么特點?
Q:快速實現(xiàn)子線程使用Handler
Q:IntentService的特點?
Q:為何不用bindService方式創(chuàng)建IntentService?
Q:線程池的好處、原理、類型?
Q:ThreadPoolExecutor的工作策略?
Q:什么是ANR?什么情況會出現(xiàn)ANR?如何避免?在不看代碼的情況下如何快速定位出現(xiàn)ANR問題所在?
Bitmap
Q:加載圖片的時候需要注意什么?
Q:LRU算法的原理?
Q:Android中緩存更新策略?
性能優(yōu)化
Q:項目中如何做性能優(yōu)化的?
Q:了解哪些性能優(yōu)化的工具?
Q:布局上如何優(yōu)化?列表呢?
Q:內(nèi)存泄漏是什么?為什么會發(fā)生?常見哪些內(nèi)存泄漏的例子?都是怎么解決的?
Q:內(nèi)存泄漏和內(nèi)存溢出的區(qū)別?
Q:什么情況會導(dǎo)致內(nèi)存溢出?
谷歌新動態(tài)
Q:是否了解和使用過谷歌推出的新技術(shù)?
Q:有了解剛發(fā)布的Androidx.0的特性嗎?
Q:Kotlin對Java做了哪些優(yōu)化?
3.2 Java
基礎(chǔ)
Q:面向?qū)ο缶幊痰乃拇筇匦约捌浜x?
Q:String、StringBuffer和StringBuilder的區(qū)別?
Q:String a=""和String a=new String("")的的關(guān)系和異同?
Q:Object的equal()和==的區(qū)別?
Q:裝箱、拆箱什么含義?
Q:int和Integer的區(qū)別?
Q:遇見過哪些運行時異常?異常處理機(jī)制知道哪些?
Q:什么是反射,有什么作用和應(yīng)用?
Q:什么是內(nèi)部類?有什么作用?靜態(tài)內(nèi)部類和非靜態(tài)內(nèi)部類的區(qū)別?
Q:final、finally、finalize()分別表示什么含義?
Q:重寫和重載的區(qū)別?
Q:抽象類和接口的異同?
Q:為什么匿名內(nèi)部類中使用局部變量要用final修飾?
Q:Object有哪些公用方法?
集合
Q:Java集合框架中有哪些類?都有什么特點
Q:集合、數(shù)組、泛型的關(guān)系,并比較
Q:ArrayList和LinkList的區(qū)別?
Q:ArrayList和Vector的區(qū)別?
Q:HashSet和TreeSet的區(qū)別?
Q:HashMap和Hashtable的區(qū)別?
Q:HashMap在put、get元素的過程?體現(xiàn)了什么數(shù)據(jù)結(jié)構(gòu)?
Q:如何解決Hash沖突?
Q:如何保證HashMap線程安全?什么原理?
Q:HashMap是有序的嗎?如何實現(xiàn)有序?
Q:HashMap是如何擴(kuò)容的?如何避免擴(kuò)容?
Q:hashcode()的作用,與equal()有什么區(qū)別?
并發(fā)
Q:開啟一個線程的方法有哪些?銷毀一個線程的方法呢?
Q:同步和非同步、阻塞和非阻塞的概念
Q:Thread的join()有什么作用?
Q:線程的有哪些狀態(tài)?
Q:什么是線程安全?保障線程安全有哪些手段?
Q:ReentrantLock和synchronized的區(qū)別?
Q:synchronized和volatile的區(qū)別?
Q:synchronized同步代碼塊還有同步方法本質(zhì)上鎖住的是誰?為什么?
Q:sleep()和wait()的區(qū)別?
Java新動態(tài)
Q:是否了解Java1.x的特性嗎?
Q:談?wù)剬γ嫦蜻^程編程、面向?qū)ο缶幊踢€有面向切面編程的理解
3.3 計算機(jī)網(wǎng)絡(luò)
基礎(chǔ)
Q:五層協(xié)議的體系結(jié)構(gòu)分別是什么?每一層都有哪些協(xié)議?
Q:為何有MAC地址還要IP地址?
TCP
Q:TCP和UDP的區(qū)別?
Q:擁塞控制和流量控制都是什么,兩者的區(qū)別?
Q:談?wù)凾CP為什么要三次握手?為什么要四次揮手?
Q:播放視頻用TCP還是UDP?為什么?
HTTP
Q:了解哪些響應(yīng)狀態(tài)碼?
Q:get和post的區(qū)別?
Q:Http1.0、Http1.1、Http2.0的區(qū)別?
Q:HTTP和TCP的區(qū)別?
Q:HTTP和HTTPS的區(qū)別?
Q:HTTP和Socket的區(qū)別?
Q:在地址欄打入http://www.baidu.com會發(fā)生什么?
3.4 JVM
Q:JVM內(nèi)存是如何劃分的?
Q:談?wù)劺厥諜C(jī)制?為什么引用計數(shù)器判定對象是否回收不可行?知道哪些垃圾回收算法?
Q:Java中引用有幾種類型?在Android中常用于什么情景?
Q:類加載的全過程是怎樣的?什么是雙親委派模型?
Q:工作內(nèi)存和主內(nèi)存的關(guān)系?在Java內(nèi)存模型有哪些可以保證并發(fā)過程的原子性、可見性和有序性的措施?
Q:JVM、Dalvik、ART的區(qū)別?
Q:Java中堆和棧的區(qū)別?
3.5 操作系統(tǒng)
Q:操作系統(tǒng)中進(jìn)程和線程的區(qū)別?
Q:死鎖的產(chǎn)生和避免?
3.6 數(shù)據(jù)結(jié)構(gòu)&算法
Q:怎么理解數(shù)據(jù)結(jié)構(gòu)?
Q:什么是斐波那契數(shù)列?
Q:迭代和遞歸的特點,并比較優(yōu)缺點
Q:了解哪些查找算法,時間復(fù)雜度都是多少?
Q:了解哪些排序算法,并比較一下,以及適用場景
Q:快排的基本思路是什么?最差的時間復(fù)雜度是多少?如何優(yōu)化?
Q:AVL樹插入或刪除一個節(jié)點的過程是怎樣的?
Q:什么是紅黑樹?
Q:100盞燈問題
Q:老鼠和毒藥問題,加個條件,必須要求第二天出結(jié)果
Q:海量數(shù)據(jù)問題
Q:(手寫算法)二分查找
Q:(手寫算法)反轉(zhuǎn)鏈表
Q:(手寫算法)用兩個棧實現(xiàn)隊列
Q:(手寫算法)多線程輪流打印問題
Q:(手寫算法)如何判斷一個鏈有環(huán)/兩條鏈交叉
Q:(手寫算法)快速從一組無序數(shù)中找到第k大的數(shù)/前k個大的數(shù)
Q:(手寫算法)最長(不)重復(fù)子串
3.7 設(shè)計模式
Q:談?wù)凪VC、MVP和MVVM,好在哪里,不好在哪里?
Q:如何理解生產(chǎn)者消費者模型?
Q:是否能從Android中舉幾個例子說說用到了什么設(shè)計模式?
Q:裝飾模式和代理模式有哪些區(qū)別?
Q:實現(xiàn)單例模式有幾種方法?懶漢式中雙層鎖的目的是什么?兩次判空的目的又是什么?
Q:談?wù)劻私獾脑O(shè)計模式原則?
3.8 數(shù)據(jù)庫
Q:數(shù)據(jù)庫中的事務(wù)了解嗎?事務(wù)的四大特性?
Q:如何理解數(shù)據(jù)庫的范式?
3.9 hr問題
Q:請簡單的自我介紹一下
Q:談?wù)勴椖拷?jīng)歷,為什么會做,怎么做的,遇到的難點?
Q:談?wù)剬嵙?xí)經(jīng)歷,做了什么,收獲有哪些?
Q:談?wù)剬W(xué)習(xí)Android的經(jīng)歷,有哪些學(xué)習(xí)方法和技巧?
Q:是否會考研?/為何不保研?
Q:成績怎么樣?獎學(xué)金情況?
Q:學(xué)過哪些課程?那門課印象最深刻/最有意義/學(xué)的最好/最不喜歡?為什么?
Q:近x年的職業(yè)規(guī)劃?
Q:為什么想來我們公司?/為何不轉(zhuǎn)正留在xx?
Q:對公司/部門是否有了解?
Q:為何會選擇做技術(shù)?/對女生做開發(fā)的看法?
Q:學(xué)習(xí)生活中遇到什么挫折,如何解決的?
Q:還投過那些公司,進(jìn)展如何?如何xx和xx都給你發(fā)offer會如何選擇?
Q:家是哪里的?是獨生子女嗎?從小的家庭環(huán)境如何?
Q:平常有哪些興趣愛好?大學(xué)參加了哪些校園活動?
Q:有男/女朋友嗎?未來有什么規(guī)劃?
Q:評價一下自己的優(yōu)缺點?/用x個詞形容你自己。/別人都是怎樣評價你的?
Q:覺得自己博客寫的最好的文章是什么?為什么?
Q:覺得自己的優(yōu)勢是什么?
Q:如何看待加班?
Q:意向工作城市是哪?/是否會考慮在xx發(fā)展?
Q:對于薪酬有什么想法?
Q:有什么問題想要問我?
3.10 項目相關(guān)、實習(xí)相關(guān)技術(shù)問題(略)
Q:使用那些版本控制工具?Git和SVN的區(qū)別?
Q:了解Git工具嗎?用過哪些命令?解決沖突時git merge和git rebase的區(qū)別?
4.一點感悟
其實到現(xiàn)在還覺得一切不太真實,沒想到已然結(jié)束了令我心驚膽戰(zhàn)許久的秋招,回望過去,不由得感慨,大概真的是越努力越幸運吧。
從最開始我的目標(biāo)就很明確,而且一路腳踏實地,不曾動搖,用一年多的時間來積累資本豐滿簡歷,學(xué)基礎(chǔ)、寫博客、做項目、去實習(xí),也不忽視在校的學(xué)業(yè),成績一直很穩(wěn)定,唯獨沒什么競賽和論文,因為大學(xué)前些年一直沉迷于培養(yǎng)興趣愛好,各處舞蹈排練和比賽,也算是大學(xué)里最豐富多彩的一段時光吧。
當(dāng)然我深知現(xiàn)在不過是暫且告一段落,前方依舊任重而道遠(yuǎn),要學(xué)的還有很多,努力加油吧丫頭!
關(guān)于這些面試題的詳解,以及更多不同水平階段,不同專題的面試題加答案,我這里都有整理分類的文檔。并且還有系統(tǒng)的進(jìn)階學(xué)習(xí)視頻資料,免費分享給大家。希望能幫助到你面試前的復(fù)習(xí),且找到一個好的工作,也節(jié)省大家在網(wǎng)上搜索資料的時間來學(xué)習(xí)。有需求的可以私信我
福利1 免費直播課程
《騰訊課堂Android高級開發(fā)工程師系列直播》
適聽人群:Android初、中、高級開發(fā)工程師
3.17-3.23 連續(xù)7天每晚8點準(zhǔn)時直播,持續(xù)進(jìn)行
▼
3月17日:實現(xiàn)安全可靠的Android網(wǎng)絡(luò)連接
3月18日:設(shè)計模式應(yīng)該如何運用到Android項目開發(fā)中
3月19日:組件化架構(gòu)演進(jìn)之路—路由框架原理與實現(xiàn)
3月20日:圖片加載框架如何選型及原理分析
3月21日:基于Android一個小時實現(xiàn)人臉追蹤
3月22日:架構(gòu)師教你選擇一個適合自己的app的架構(gòu)
3月23日:Hook源碼實現(xiàn)阿里無閃爍換膚
福利2 Android開發(fā)資料包
該資料包中主要包括「Java語言進(jìn)階與Android相關(guān)技術(shù)核」、「2)App開發(fā)框架知識體系(app亦對象)」、「360° Android app全方位性能調(diào)優(yōu)」、「Android前沿技術(shù)」、「NDK 模塊開發(fā)」等內(nèi)容,全方位擴(kuò)充你的知識體系。
想要參與Android進(jìn)階免費系列直播課
以及獲取Android開發(fā)工程師資料包的同學(xué),
點擊加入:加入
免費課程,名額有限,先到先得~~
轉(zhuǎn)載于:https://blog.51cto.com/14217562/2365512
總結(jié)
以上是生活随笔為你收集整理的牛!程序媛一口气拿下BAT、美团、vivo、爱奇艺等公司Offer面经总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: vconsole 轻松实现移动端调试
- 下一篇: python pip是什么的简写_Pyt
