Android開發3年,九月份面試12家大廠跳槽成功,我有一些面試經驗想分享給你們
在下2017年畢業,目前從事android開發工作已經3年了,前段時間剛完成一次跳槽,面試了幾家公司,將一些面試經驗分享給大家,希望對大家有所幫助。
簡歷
首先是簡歷,一般找一個模板,填寫掌握的技能和專案經歷即可。
github上有一個不錯的模板,詳情可見: github.com/CyC2018/Mar…
專案clone後,個性Resuem.md即可,然後匯出為pdf檔案。
簡歷建議長度為2頁,太長太短都不好。
建議用掌握與熟練掌握取代瞭解與精通。
刷題
演算法題可以說是現在找工作必刷的了。不過根據我面試的經驗,演算法題總得來說問的還是比較少,還有一些公司是基本不問演算法的。
當然如果碰到位元組,快手這種每輪都問演算法的公司,如果因為演算法題拿不到offer就很可惜了。
演算法題就好像高考語文的古詩詞默寫一樣,分不多,但丟了就很可惜了。
根據我的經驗,大概刷了,掌握100道題就足以應付面試了。
當然完全掌握需要重複練習,不是刷了一遍就可以的。
這裡推薦一下極客時間上覃超的五遍刷題法:
五遍刷題法
1.第一遍,直接看解法
多解法,比較解法優劣,默寫好的解法
2.第二遍,開啟leetcode,直接開始寫
多種解法比較,調優
3.第三遍,過一天之後,再重複做題
4.第四遍,過了一週,再來反覆練
5.第五遍,面試前一週,恢復性訓練
透過以上方法重複練習,大概刷100題就足以應付面試,如果每天刷3道,大概準備一個月即可
題庫
刷題也要注意,不要一題一題刷,比如Leetcode的每日一題。
建議按 知識點分類,這樣比較方便重複練習與知識點掌握。
在知識點刷過一遍後,也可以按照公司分類或者LeetCode熱題100刷,一般公司出演算法題也是有題庫的
下面推薦幾個題庫供大家使用:
按知識點分類
github.com/yuanguangxi…
github.com/zhangyixing…
按公司分類
熱題100
面經
接下來就是各公司的面經了,分享出來供大家參考。
尚德公司面試
- java有什麼特性,繼承有什麼用處,多型有什麼用處
- 反射是什麼,在哪裡用到,怎麼利用反射建立一個物件
- 代理模式與裝飾模式的區別,手寫一個靜態代理,一個動態代理
- 物件載入的過程,屬性先載入還是方法先載入
- 垃圾回收機制與jvm結構
- 自定義View,事件分發機制講一講
- http與https有什麼區別
- Activity啟動模式,以及各啟動模式生命週期問題
- 靜態方法,靜態物件為什麼不能繼承
- Activity怎麼啟動Service,Activity與Service互動,Service與Thread的區別
- 介紹一下android動畫
- Launcher啟動App的流程,中間有幾種跨程式通訊(socket)
- Handler通訊,Binder通訊
- 你碰到過什麼記憶體洩漏,怎麼處理
- RXJava怎麼切換執行緒
- Fragment hide show生命週期
- 平常有用到什麼鎖,synchronized底層原理是什麼
Vivo公司
- 簡單描述下Handler,Handler是怎麼切換執行緒的,Handler同步屏障
- Glide的快取,有用過Glide的什麼深入的API,自定義model是在Glide的什麼階段
- 講講mvc,mvp模式,presenter記憶體洩漏的問題
- ANR瞭解過嗎?有沒有實際的ANR定位問題的經歷
- 效能最佳化你做過哪些?
- 有什麼實際解決UI卡頓最佳化的經歷
- 有做過什麼Bitmap最佳化的實際經驗
- 專案搭建過程中有什麼經驗,有用到什麼gradle指令碼,分包有做什麼操作
- 元件化有詳細瞭解過嗎?ARouter詳細原理
- 講一下事件分發機制,RecyclerView是怎麼處理內部ViewClick衝突的
- mainfest中配置LargeHeap,真的能分配到大記憶體嗎?
B站
- 一個大致有序的陣列如何排序,最快時間複雜度
- 如果叫你實現,你會怎樣實現一個多主題的效果
- 如何自定義實現一個FlexLayout
- tinker的原理是什麼,還用過什麼熱修復框架,robust的原理是什麼?
- 說說你對註解的瞭解,是怎麼解析的
- synchronized是公平鎖還是非公平鎖,ReteranLock是公平鎖嗎?是怎麼實現的
- 泛型是怎麼解析的,比如在retrofit中的泛型是怎麼解析的
- mvp與mvvm的區別,mvvm怎麼更新UI,databinding用得多嗎,databinding的原理?
- kotlin ?的原理
- 在專案中有直接使用tcp,socket來傳送訊息嗎
- 如何在網路框架裡直接避免記憶體洩漏,不需要在presenter中釋放訂閱
- 生命週期都是透過什麼呼叫的?有用過AIDL嗎?
- 講一下RecyclerView的快取機制,滑動10個,再滑回去,會有幾個執行onBindView
- 如何實現RecyclerView的區域性更新,用過payload嗎,notifyItemChange方法中的引數?
- 講講LinkedHashMap的資料結構
- put post有什麼區別
- A Activity開啟B Activity的生命週期變化,會有什麼方法打斷嗎?
- Fragment hide show生命週期變化
- Fragment replace生命週期變化
B站二面
- 為什麼考慮換工作
- 螢幕適配做過什麼工作?
- 你們網路框架用的什麼?為什麼?
- 如果讓你來開發B站的一個頁面,哪一個頁面可以很快入手
- 效能最佳化你做過什麼工作?
- h5與native通訊你做過什麼工作?
- 外掛化的主要優點和缺點是什麼?
- 你覺得B站目前的APP有什麼問題?
- 如果產品要求你開發一個音訊播放功能,你會怎麼著手?預計會有什麼坑?
- ViewPager切換Fragment什麼最耗時?
- 執行緒間同步的方法
- 鎖之間的區別
B站三面
- 介紹一下你自已和專案
- 說說為什麼考慮離職
- 說說對你們原來公司的印象
- 為什麼想來B站?你在B站上常常在看什麼?
- 期望薪資是多少?
- 你對搬到上海有什麼想法?
騰訊
- 介紹一下你們專案的架構
- Rxjava是怎麼實現執行緒切換的
- Rxjava自定義運算子
- ARouter的原理
- ARouter怎麼實現介面呼叫
- ARouter怎麼實現頁面攔截
- MVP怎麼處理記憶體洩漏
- OkHttp怎麼實現連線池
- 如果讓你來實現一個網路框架,你會考慮什麼
- 你做過什麼效能最佳化的工作
- 熱修復的原理,資源的熱修復的原理,會不會有資源衝突的問題
- ViewPager中巢狀ViewPager怎麼處理滑動衝突
- android原始碼中有哪些設計模式
- 說說binder機制的原理
騰訊二面
- 為什麼考慮換一份工作?
- 在你們公司這幾年感覺怎麼樣?
- 技術選型上,為什麼這麼考慮?從開發效率,產品效能,產品質量,產品體驗等方面考慮
- 你們的產品為什麼被砍掉,從哪方面考慮
- 在這幾年裡,你有做過什麼覺得最有價值的工作
- 你還有什麼要問我的嗎?目前有幾個offer,傾向性是怎樣的?
網易雲音樂
- ViewPager2原理
- LifeCycle的原理是怎樣的?
- ViewModel為什麼在旋轉螢幕後不會丟失狀態
- Drawable與View有什麼區別,Drawable有哪些子類
- 屬性動畫更新時會回撥onDraw嗎?
- OkHttp網路攔截器,應用攔截器?OKHttp有哪些攔截器,分別起什麼作用
- 自定義實現一個九宮格如何實現
- PathClassLoader與DexClassLoader有什麼區別
- 這些年有做一些什麼比較難的工作?
- 編譯時註解與執行時註解,為什麼retrofit要使用執行時註解?什麼時候用執行時註解?
- kotlin lazy使用,lazy viewmodel
- 有沒有看一下Google官方的ViewModel demo
- ViewModel在Activity初始化與在Fragment中初始化,有什麼區別?
- kotlin與Java互相呼叫有什麼問題?
- retrofit怎麼做post請求
- 介面最佳化的一些方法,ConstraintLayout實現三等分,ConstraintLayout動畫.
- CoordinatorLayout自定義behavior,可以攔截什麼?
網易雲音樂二面
- 你們的專案中做過什麼比較難的工作?
- 影片播放,一個player怎麼實現預載入,避免loading
- webView載入本地圖片,如何從安全方面考慮
- http1.0,http1.1,http1.2有什麼區別
- https與http有什麼區別
- 有用過什麼加密演算法?AES,RAS什麼原理?
- android跨程式通訊瞭解嗎?共享記憶體用過嗎?binder怎麼驗證pid?binder驅動了解嗎?
- SharedParence可以跨程式通訊嗎?如何改造成可以跨程式通訊的.commit和apply的區別.
- Seriazable與Parceable的區別
- Bundle是什麼資料結構?利用什麼傳遞資料
- Jvm的記憶體結構,Jvm的垃圾回收,方法區有什麼東西?
- h5與native互動,webView.loadUrl與webView.evaluateUrl區別
網易雲音樂三面
- 有沒有做過什麼WebView秒開的一些最佳化
- 你們的專案中有什麼難點?
- native如何對h5進行鑑權,讓某些頁面可以調,某些頁面不能調
- 有看過哪些框架的原始碼嗎?
- viewModel是怎麼實現雙向資料繫結的?
- viewModel怎麼實現自動處理生命週期?
- 圖片載入最佳化有什麼經驗嗎?
- viewpager切換掉幀有什麼處理經驗?
- 一個wrap_content的ImageView,載入遠端圖片,傳什麼引數裁剪比較好?
- 兩個getDrawable取得的物件,有什麼區別?
- 補間動畫與屬性動畫的區別,哪個效率更高?
- jsBridge實現方式
- 平常是怎麼了解一些新知識與業界動態的,最近有什麼印象深刻的文章
- 平常抓包用什麼工具?
- Mvp與Mvvm有什麼區別?
跟誰學
- 專案中的Webview與native通訊
- 專案中對WebView的功能進行了怎樣的增強
- synchronized跟ReentranLock有什麼區別?
- synchronized與ReentranLock發生異常的場景.
- 演算法,刪除陣列中的重複元素
- 手寫雙檢查單例模式,各個步驟有什麼區別
- Activity生命週期
快手
- string,equals,==有什麼區別
- AsyncTask記憶體洩露
- dispatchTouchEvent,onInterceptEvent,onTouchEvent順序,關係
- onMeasure,onLayout,onDraw關係
- 演算法題,反轉陣列
- 演算法題,連結串列求和
- 說說你對協程的理解
- 協程怎麼取消
- 說說MVP與MVVM的區別
快手二面
- 演算法題,二叉樹的最大深度
- 如果android端和IOS端調一個介面,一個通了一個沒通,你會如何解決
- 如果android端和IOS端調一個介面,一個比較慢,一個比較快,有什麼思路
- ARouter的原理是什麼?如果不用ARouter,你會怎麼去解藕。介面?設計介面有什麼需要注意的?
- h5與native互動做過什麼工作?
- 登陸功能,登陸成功然後跳轉到一個新Activity,中間涉及什麼?從事件傳遞,網路請求,AMS互動角度分析
- AMS互動呼叫生命週期是順序的嗎?
- binder程式間通訊可以呼叫原程式方法嗎?
- mvp與mvvm有什麼區別?
- token放在本地如何儲存?如何加密比較好?
快手三面
- viewModel的原理,為什麼可以在Activity銷燬後儲存資料
- mvvm雙向資料繫結的原理是怎樣的?ViewModel
- 說說你們專案中的難點是怎樣的?
- 虛擬碼實現一個長按事件
- 實現一個下載功能的介面
猿輔導
- 泛型有什麼優點?
- 動態代理有什麼作用?
- 拉圾回收的GCRoot是什麼?
- Handler機制瞭解嗎?一個執行緒有幾個Looper?為什麼?
- 你瞭解協程嗎?協程有什麼作用?可以完全取代rxjava嗎?
- 你們用的什麼訊息通訊機制
- 你的專案有什麼難點?介紹一下?
- 演算法題,二叉樹最長結點集合
猿輔導2面
- 你們專案中的難點是什麼?
- 編譯期註解處理的是位元組碼還是java檔案
- 你在專案中有用到什麼設計模式嗎?
- ARouter的原理是怎樣的?
- 外掛化的原理是怎樣的?
- 演算法題,K個一組反轉連結串列
- 廣播與RxBus的區別,全域性廣播與區域性廣播區別
猿輔導3面
- 你們專案中有什麼難點?
- @JavaScriptInterface為什麼不透過多個方法來實現?
- 為什麼不利用同步方法來做jsBridge互動?同步可以做非同步,非同步不能做同步
- 網路封裝怎麼實現?
- 演算法題,不同面值的幾個硬幣,怎麼求滿足條件的最小值
鬥魚
- 說說HashMap的原理
- 說說Java的記憶體分割槽
- 講講你對垃圾回收機制的瞭解,老年代有什麼演算法?
- 說說你對volatile欄位有什麼用途?
- 說說事件分發機制,怎麼寫一個不能滑動的ViewPager
- 說說你對類載入機制的瞭解?DexClassLoader與PathClassLoader的區別
- 說說外掛化的原理,資源的外掛化id重複如何解決?
- mvp與mvvm模式的區別是什麼?
- JetPack元件用過哪些?lifeCycle的原理是什麼?如果在onStart裡面訂閱,會回撥onCreate嗎?
- 單例模式有什麼缺點?
- 說說App的啟動過程,在ActivityThread的main方法裡面做了什麼事,什麼時候啟動第一個Activity?
- 說說你對Handler機制的瞭解,同步訊息,非同步訊息等
- 說說你對螢幕重新整理機制的瞭解,雙重緩衝,三重緩衝,黃油模型
- onCreate,onResume,onStart裡面,什麼地方可以獲得寬高
- 為什麼view.post可以獲得寬高,有看過view.post的原始碼嗎?
- attachToWindow什麼時候呼叫?
- DataBinding的原理了解嗎?
滴滴一面
- JVM類載入機制瞭解嗎,類什麼時候會被載入?類載入的過程具體生命週期是怎樣的?
- Handler記憶體洩漏的GCRoot是什麼?
- 動畫裡面用到了什麼設計模式?
- OkHttp裡面用到了什麼設計模式?
- OkHttp連線池是怎麼實現的?裡面怎麼處理SSL?
- 泛型為什麼要擦除?kotlin的泛型瞭解嗎?泛型的pecs原則
- 同步屏障
- 效能最佳化做過什麼工作?
- RecyclerView的快取結構是怎樣的?快取的是什麼?cachedView會執行onBindView嗎?
- RecyclerView巢狀RecyclerView,NestScrollView巢狀ScrollView滑動衝突
- ViewGroup在Action_Move時onIntercept返回true,事件怎麼傳遞
- Launcher啟動圖示,有幾個程式?
- JMM可見性,原子性,有序性,synchronized可以保證什麼?
- 原始碼中有哪裡用到了AtomicInt
- AQS瞭解嗎?
- Activity內LinearLayout紅色wrap_content,包含View綠色wrap_content,求介面顏色
- ViewModel的使用中有什麼坑?
- 有用DSL,anko寫過佈局嗎?
- HashMap查詢的時間複雜度是多少?
- 阿里程式設計規範不建議使用執行緒池,為什麼?
- 四種執行緒池原理?
- 瞭解哪些演算法?
- IdleHandler用過嗎?
滴滴二面
- 如何封裝一個字串轉數字的工具類
- 如何求當前Activity View的深度
- 多程式怎麼實現?如果啟動一個多程式APP,會有幾個程式執行?
- 反射可以反射final修飾的欄位嗎?
- Activity與AppCompactActivity區別,Activity會打包到包裡面去嗎?
- 如何讓兩個執行緒迴圈交替列印
- 怎麼中止一個執行緒,Thread.Interupt一定有效嗎?
- 動畫連續呼叫的原理是什麼?
- 做過一些SDK的操作嗎?
- 協程可以在Java專案中使用嗎?
- SharedPreference原理?讀取xml是在哪個執行緒?
- 瞭解APK打包的過程嗎?
- class檔案的組成?常量池裡面有什麼內容?
- 自動裝箱發生在什麼時候?編譯期還是執行期
- bugly日誌收集的原理是什麼?
- 啟動最佳化做過什麼工作?如果首頁就要用到的初始化?
- DataBinding原理
滴滴3面
- 外掛化的原理是什麼?有沒有什麼非執行時外掛化的解決方案?
- ARouter的原理是怎樣的?註解處理器是處理java還是位元組碼
- java和位元組碼有什麼區別?
- kotlin空安全的原理是什麼?
- 效能最佳化做過什麼工作?有用過什麼工具?有沒有精確測量的工具?
- kotlinc與javac編譯位元組碼有什麼區別?
- 你在團隊中是怎樣一個角色?
- 你有沒有做什麼推進專案的工作
- 說說熱修復的原理?
位元組跳動
- 你們的專案中有什麼難點?
- 你們專案的穩定性如何?有做過什麼穩定性最佳化的工作?
- WebView效能最佳化做過什麼工作?
- AIDL in out oneWay代表什麼意思?
- 執行緒池瞭解多少?拒絕策略有幾種,為什麼有newSingleThread
- 跨程式通訊瞭解多少?管道瞭解嗎?
- 協程介紹一下,講一個協程的scope與context,協程的+號代表什麼
- Handler休眠是怎樣的?epoll的原理是什麼?如何實現延時訊息,如果移除一個延時訊息會解除休眠嗎?
- 演算法斐波那契臺階
- 手寫生產者訊息者模型
- IdleHandler應用場景
位元組跳動2面
- 自定義圓角圖片
- 自定義LinearLayout,怎麼測量子View寬高
- setFactory和setFactory2有什麼區別?
- 外掛化換膚方案
- 外掛化的原理,startActivity hook了哪個方法
- 手勢操作ActionCancel後怎麼取消
- 怎麼最佳化xml inflate的時間,涉及IO與反射。瞭解compose嗎?
- 演算法題:二叉樹的每一層最左邊節點
- RecyclerView 快取結構,RecyclerView預取,RecyclerView區域性重新整理
- setOnTouchListener,onClickeListener和onTouchEvent的關係
面試前我是如何複習的?
其實客戶端開發的知識點就那麼多,面試問來問去還是那麼點東西。所以面試沒有其他的訣竅,只看你對這些知識點準備的充分程度。so,出去面試時先看看自己複習到了哪個階段就好。
至於結果也還算滿意,拿到幾家 offer ,又要開啟一段新的征程了。
這裡再分享一下我面試這段時間的複習路線:(以下體系的複習資料是我從各路大佬收集整理好的)
《Android開發七大模組核心知識筆記》
《960全網最全Android開發筆記》
《379頁Android開發面試寶典》
歷時半年,我們整理了這份市面上最全面的安卓面試題解析大全
包含了騰訊、百度、小米、阿里、樂視、美團、58、360、新浪、搜狐等一線網際網路公司面試被問到的題目。熟悉本文中列出的知識點會大大增加透過前兩輪技術面試的機率。
如何使用它?
1.可以透過目錄索引直接翻看需要的知識點,查漏補缺。
2.五角星數表示面試問到的頻率,代表重要推薦指數
《507頁Android開發相關原始碼解析》
只要是程式設計師,不管是Java還是Android,如果不去閱讀原始碼,只看API文件,那就只是停留於皮毛,這對我們知識體系的建立和完備以及實戰技術的提升都是不利的。
真正最能鍛鍊能力的便是直接去閱讀原始碼,不僅限於閱讀各大系統原始碼,還包括各種優秀的開源庫。
資料太多,全部展示會影響篇幅,暫時就先列舉這些部分截圖,以上資源均免費分享,以上內容均放在了開源專案: 【 github 】 中已收錄,大家可以自行獲取(或者關注主頁掃描加微信獲取)。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69983917/viewspace-2724813/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android大廠面試經驗分享Android面試
- 膜拜大牛!3年Android開發工程師面試經驗分享,最全的BAT大廠面試題整理Android工程師BAT面試題
- 2018大廠Android面試經驗 | 掘金技術徵文Android面試
- 上乾貨!大廠面試走心經驗分享!面試
- 跳槽季,Java面試大綱,你值得擁有Java面試
- 三年啦,跳槽成功的Android開發面經總結!Android
- 跳槽!3年Java面試經驗總結Java面試
- 邦芒面試:想面試成功,這些事你必須知道面試
- android開發面試經典收藏Android面試
- 面試官:你還有什麼想問我的?面試
- 分享net面試題和經驗面試題
- 【乾貨】BAT面試經驗分享BAT面試
- 30K 成功入職京東:拿到京東 offer 經驗分享「面試經歷 + 面試真題」面試
- Java面經 面試經驗 網際網路公司面試經驗 後端面試經驗Java面試後端
- 都討論大廠面試,當我小廠面試請喝茶的?面試
- Android面試總結,有了這些中高階面試專題-大廠還會遠嗎?Android面試題及解析Android面試題
- 大廠面試經:高頻率JVM面試問題整理!面試JVM
- 面經合集 | 面試不用愁,掘友能解憂,一批大廠面試經驗新鮮出爐啦~面試
- 你有哪些面試失敗的慘痛經驗?面試
- 邦芒面試:11條面試提示將給你帶來成功的契機面試
- 寫給初級前端的面試經驗前端面試
- 求求大廠給個Offer:Map面試題面試題
- 面試成功源於基礎和經驗(iOS)面試iOS
- Android面試:大廠經典高頻面試題體系化集合,年薪超過80萬!Android面試題
- linux面試經驗Linux面試
- 分享幾道我們面試前端的“真題”面試前端
- 半年工作經驗今日頭條和美團面試題面經分享面試題
- 大廠面試感悟面試
- 刷完500道BAT面試題,我能去面試大廠了嗎?BAT面試題
- 又跳槽!3年java經驗offer收割機的面試心得Java面試
- iOS開發面試的43道最新面試題,讓你穩拿大廠offer!iOS面試題
- Android大廠面試題錦集(BATTMDJD小米)Android面試題BAT
- 大廠面試來了,歡聚時代四年多經驗的Java面經面試Java
- 面試騰訊、位元組等大廠後,我總結一份面試文件給大家參考!面試
- 一年經驗Java開發0713面試Java面試
- 又跳槽!3年Java經驗收割成都大廠的面試心得(乾貨滿滿&文末有福利)Java面試
- 偽經驗;不稱職面試官的面試經面試
- 2年Java開發工作經驗,跳槽之後面試20餘家公司的總結Java面試