前言
本文想分享的是如何準備阿里面試的以及面試過程的所想所得,希望能幫到你。
首先,可能要讓你們失望的是,這篇文章不會有大篇幅的面試題答案。如果想要看這方面的內容,可以看我之前的文章。感謝關注
一丶崗位職責
首先我們先看一下崗位職責
1、負責安卓移動平臺開發工作
2.Android框架開發和維護,SDK開發
3. 技術架構升級優化,提升業務研發效率
二丶崗位要求
1、3年以上Android客戶端開發經驗
2丶JAVA基礎紮實,理解io、多線程、集合等基礎框架,對JVM原理有一定的瞭解
3、掌握Android常用組件、框架、和技術的原理
4、精通Android底層framework,精通Android性能調優,熟悉Android源碼
5、有強烈的責任心和團隊精神,善於溝通和合作;能獨立完成設計和編碼
三丶關於簡歷如何突出來寫
我覺得簡歷的作用就是讓看簡歷的人能快速丶準確的捕捉到有用的信息,看到你的與衆不同
1.who are you ?(你是誰?)
2.what did you do?(你做了什麼?)
3.what do you stand out from(你有什麼特別之處?)
重要突出這幾天,其實就夠了
3.1 內容
主要是包含了以下幾個模塊:
基本資料: 姓名、電話、郵箱、個人網站(GitHub)
工作經歷: 公司名、在職時間、工作內容(簡述負責、參與什麼業務)
項目經歷: 最重要的一點沒有之一!展開描述
專業技能: 加分項還是減分項都有可能,慎重對待,展開描述
教育經歷: 學校名、就讀時間
其它: 簡單描述任何你想讓面試官知道的東西,比如社區影響力: GitHub 多少 Star、掘金等級 等等
項目經歷對於開發來說是一個最重要的部分
3.2亮點
工作上: 這個項目的業務背景是什麼,在業務上有什麼比較牛逼的地方,推動了業務如何運行等等
技術實現上: 這個項目的整體技術實現思路是怎樣的,項目中用了什麼比較牛逼的技術,解決了什麼比較困難的問題等等
千萬不要寫精通什麼,除非你真的很牛逼,或者某項目中有個很牛逼的技術,但是不是你寫的,但是你自己不是很瞭解。
好看的皮囊千篇一律,有趣的靈魂萬里挑一
在日常業務中:
- 這個項目做了什麼牛逼的事情
- 你在項目裏做了什麼牛逼的事情
- 用了什麼牛逼的技術解決了什麼困難的問題
項目經歷是一個很重要的部分,一定會細問,把自己的牛逼之處突出並且講明白
3.3自己的專業技能
想拿到30-50K 當然要有相對的專業技能
JAVA基礎紮實,理解io、多線程、集合等基礎框架,對JVM原理有一定的瞭解
掌握Android常用組件、框架、和技術的原理
精通Android底層framework,精通Android性能調優,熟悉Android源碼
熱衷Android開發事業,精通SDK,熱修復,性能優化等等
專業技能可能是加分項也可能是減分項,慎重對待
四丶面試複習路線圖
我之前複習,大多都在20點以後,因爲晚上比較能集中注意力,制定一個學習計劃,切勿零散的複習,最好是系統的複習,才能勝卻在握
主要內容如下:
- BAT的面試題目相關
- 性能優化相關相關
- 多線程相關
- Java相關
- 源碼解析相關
- 網絡編程相關
- 算法合集相關
- 數據結構相關
- 設計模式相關
- 一些小知識的總結
4.1丶BAT相關面試點:
- 1.Binder通信原理和機制
- 2.多進程通信
- 3.組件化.插件化的區別以及如何選擇
- 4.插件化的理解
- 5.熱修復原理
- 6.對於AMS的認識
- 7.AOP 與OOP 有什麼區別, AOP 的原理
- 8.QQ換膚原理以及大致思想
- 9.Android虛擬機
- 10.圖片壓縮的具體步驟和應用
- 11.反編譯和加密如何進行
- 12.序列化和反序列化的原理
- 13.Handler的原理和認識
4.2丶算法合集筆記
- 1.Hash
- 2.最小生成樹算法
- 3.最短路徑算法
- 4.KMP算法
- 5.查找算法
- 6.排序算法
4.3丶線程.多線程.線程池和麪試中的小問題
- 1.開啓線程的方式
- 2.run()和 start()方法區別
- 3.如何控制某個方法允許併發訪問線程的個數?
- 4.在 Java 中 wait 和 seelp 方法的不同
- 5.導致線程阻塞的原因
- 6.線程如何關閉的思路?
- 7.如何同步以及保證線程安全
- 8.減少APK包的大小
- 9.關於內存泄漏,內存抖動的優化以及解決方案
4.4丶小知識的清單
- 1.面向對象和麪向對象的區別
- 2.Java和C++的區別
- 3.面向對象的特徵
- 4.接口和抽象類的區別
4.5丶數據結構和設計模式
- 1.設計模式六大原則簡要概述
- 2.設計模式的分類
4.6丶java核心小知識清單
- 1 .線程中 sleep 和 wait 區別
- 2.Thread 中的 start()和 run()的區別
- 3.Java 中重載和重寫的區別
- 4.Tcp /IP三次握手,四次揮手
4.7丶性能優化
- 1.圖片的三級緩存中,圖片加載到內存中,如果內存快爆了,會發生什麼?怎麼處理?
- 2.WebView 的性能優化 ?
- 3.加載一張高清圖片應該佔用多少內存
- 4.內存泄露和內存溢出的區別 ?AS 有什麼工具可以檢測內存泄露
- 5.Bitmap 如何處理大圖,如何預防 OOM?
- 6.性能優化,怎麼保證應用啓動不卡頓? 黑白屏怎麼處理?
4.8丶Android源碼相關
- 1、Android 屬性動畫實現原理
- 2、補間動畫實現原理
- 3、Android 各個版本 API 的區別
- 4、Requestlayout,onlayout,onDraw,DrawChild 區別與聯繫
- 5、invalidate 和 postInvalidate 的區別及使用
- 6、Activity-Window-View 三者的差別
- 7、談談對 Volley 的理解
- 8、如何優化自定義 View
- 9、低版本 SDK 如何實現高版本 api?
- 10、描述一次網絡請求的流程
- 11、HttpUrlConnection 和 okhttp 關係
4.9丶Android 網絡編程
- 1丶網絡分層
- 2丶http 協議
- 3丶http 的 get 和 post 的區別
- 4丶socket 和 http 的區別
- 5丶TCP 與UDP 區別總結
- 6丶https
- 7丶加密算法
- 8丶Volley.OKHTTP.Retrofit等
簡歷上寫的項目,仔細認真的過一遍。還有就是關於業務的一些深層次的東西,得好好思考一下。
一些開放性問題還是需要好好思考一下,順便也準備一下 HR 面可能會問到的一些問題。
在複習某個部分時可能會引出其它知識點,如果也不是很清楚的話也需要系統的再複習一下。
知識體系比較廣並且發展迅速,要注重基礎基礎纔是最重要的
如果想要獲取完整的複習導圖(一些重要問題以及真實面試後的補充點)
順手留下GitHub鏈接,需要獲取相關面試等內容的可以自己去找)
https://github.com/xiangjiana/Android-MS
希望2020年 你我都有所收穫
更多完整項目下載。未完待續。源碼。圖文知識後續上傳github。
可以點擊關於我聯繫我獲取
這裏列出的應該也不是很全,歡迎探討
注意事項:
- 凡事沒有標準,任何問題都要隨機應變,主要是要有自己的思想和感悟
- 阿里其實相對於其他一些大廠,對學歷等等要求算是比較開發性的
- 一版面上有技術面喝HR面。技術面大概3-4輪,可能會有筆試
- 技術面可能會電話+視頻面試,或者約面試時間。順利通過前幾面最後還有個終面
- 目前剛好有朋友在騰訊,阿里,美團。還有以前在華爲,小米,愛奇藝等等的朋友,需要面試的可以找我幫你跟進諮詢一下