啊!我親愛的張姓前老板,真希望你也會逛CSDN,能看到我對你深深的歉意!

前言
我是一名雙非本科畢業一年的Android開發渣渣,坐標深圳,在此次上岸騰訊之前,自己一直都是在一家10多人的創業公司承當“Android首席開發官”的職務,從裸辭準備到上個月20號拿到騰訊的offer,歷經2個多月的時間,接下來就給大家分享一下我這段時間的學習心得與面試經驗,
所謂“Android首席開發官”,其實也就是跟朋友吹牛皮時的一句玩笑話,包括老板、財務、業務人員、開發人員等,攏共15個人,如果算上物業的保潔,就算15個半吧,我馬某很是“有幸”從這15個半的員工當中脫穎而出,出任“Android首席開發官”一職,
“一個人守一座城”的磨練,讓我不得不去不斷的加深自己的技術深度與廣度,來以坐穩高位,但同時提升的還有自己的眼界與“野心”,
“我TN的,全公司Android這塊的開發就是我一個人在抗,錢還給得少!”
“辛辛苦苦干了一年,竟然連個年終獎都沒得,說是因為今年公司沒怎么賺錢,明年補3倍?”
“那你前陣子付訓的奧迪A6L,是TN的中彩票中的?老子還不跑路,還留著過年?”
這是一個悲傷的故事,但現在看來又是個幸運的故事,感謝你的磨練,技術上和身心上雙重的,12月底辦完離職手續,然后開始面試準備,刷面試題,演算法題,面經,然后投了一輪非知名“大公司”來檢驗自己,查漏補缺,復盤學習,在2月初的時候開始沖擊大廠,算下來投了,位元組、美團、oppo、阿里、騰訊、百度、網易,最終被騰訊音樂的QQ音樂收了,
一點面經
總的感覺,雖然是社招,但是對于只有一年經驗的面試者其實和校招感覺差別不是很大,四輪都是視頻面試,面試官都很準時,而且人都很好,在回答卡住的時候會給與提示,在反問環節我也看出了面試官的思路是非常清晰的,總的來說整個面試程序非常nice,接下里就給大家具體分享下騰訊四面的面試題,希望能給準備面試騰訊Android崗的小伙伴一些思路和幫助!
2.9 一面 1h15min
-
- 為什么離開上家公司
-
- 在開發中遇到的最大的困難?怎么解決的
-
- 介面和抽象類的區別,一個類的能不能多繼承,能不能實作多個介面
-
- 介面類的非方法能不能被修改?不能,介面類里非方法的型別都是final修飾,所以必須初始化并且不能被修改
-
- 抽象類的變數可以被繼承和修改么?可以final關鍵字
-
- GC如何標記要回收的記憶體?GC Roots有哪些
-
- 執行緒安全問題,sychronized、lock/unlock的區別使用,公平鎖和非公平鎖的概念
-
- sychronized是如何體現公平鎖和非公平鎖的(CAS、鎖自旋)
-
- HashMap原理,在什么時候擴容(當加入的元素大于閾值threshold后),以及執行緒安全的
HashTable、ConcurrentHashMap的原理
- HashMap原理,在什么時候擴容(當加入的元素大于閾值threshold后),以及執行緒安全的
-
- View的事件分發
-
- 布局優化怎么做的?LinearLayout和RelativeLayout在性能上的區別
-
- WebView的優化,如果出現了資料的互動該怎么做?(AIDL),Binder怎么實作行程間通信的?mmap的模型
-
- 記憶體優化?RecyclerView的快取機制,如何優化
-
- 專案中的聯網模塊怎么實作的?UDP和TCP的區別
-
- TCP會檢查包的順序么,Tcp怎么控制包的發送(滑動視窗)
-
- 看到專案中使用了WebSocket,講下它和Http的區別
-
- RxJava的運算子?專案中是如何使用RxJava的
-
- 快速排序和冒泡排序的穩定性問題
-
- 編程題:將一個分數轉化成小數形式輸出,因為分數只可能是有限小數或無限回圈小數,如果小數是無限回圈小數,則使用小括號括起,(這題思路是做while輪除,我界定是否產生了無限回圈小數是使用的HashTable,)
-
- 對我們公司了解多少?有什么想問的?
2.12 二面 45min
-
- "abcde"字串在記憶體中占多大,這些位元組在JVM的編碼格式
-
- JVM堆和堆疊的作用,行程和執行緒的作用,堆疊和執行緒行程的對應關系
-
- 死鎖怎么產生?如何去解決死鎖,多個方案
-
- 執行緒同步問題,自增是原子操作嗎?如果要做到執行緒安全的自增要做怎么做
-
- 快排的程序,時間復雜度,n*lgn是如何得來的
-
- Http是在哪一層,Https使用了非對稱加密還是對稱加密?
-
- TCP和UDP的區別?為什么UDP不可靠還要使用UDP
-
- 擁塞控制和流量控制的區別
- 9 . 智力題:給一籃子雞蛋,如何用最少的比對次數找到最大的和最小的雞蛋,
(我的回答是 一開始,隨便拿出兩個雞蛋,然后接下來剩下的雞蛋每拿出一個,就和這兩個進行比較,如果比兩個中小的雞蛋小就替換小的那個,如果比大的雞蛋大就替換掉大的那個,這樣比較次數就是 (n-2) *2 ,因為有些雞蛋只用比一次就行了(因為是最小的就不用往大的比了),所以結果是小于 (n-2) *2的,但我覺得應該還可以更加快…) -
- 編程題,排序二叉樹的插入,如果插入相同的數,需要做什么保證樹可以還原(即不允許丟棄到相同的數)?
-
- 有什么要問的?
2.17 三面 1h20min
-
- 兩桶油漆,A桶全是紅色油漆,B桶全是藍色油漆,將A桶中取一勺倒入B中,再從B桶中取一勺倒入A中,求A桶的藍紅比例和B桶的紅藍比例,是大于、小于還是等于?
-
- 用一個陣列實作一個回圈佇列
-
- 給定一個只有“R”“G”“B”三個字母的字串,用一次遍歷基于原字串將他們以“RGB”的順序排序好(LeetCode原題)
-
- 52張撲克牌,取一張不放回,再取一張, 兩張為相同顏色的概率是多少?
hr面 45min
-
- 自我介紹
-
- 為什么選擇計算機這個專業
-
- 為什么要離開上家的公司
-
- 在上一個公司學到了什么
-
- 選擇公司因素,按優先級排個序
-
- 用三個關鍵詞描述自己
-
- 代入用戶思維和不代入用戶思維做產品有什么區別
-
- 家庭情況,有沒有女朋友
-
- 你覺得一個好勝心過強的人會有什么樣的問題
-
- 你會想在團隊里面承擔一個什么樣的角色
-
- 平時的愛好是什么
-
- 有沒有給自己制定一些計劃?對自己的要求有多高
-
- 學習的渠道、方式,有GitHub嗎?看什么樣的書
-
- 學習是基于公司專案學習,還是個人興趣學習
-
- 預計到崗時間,期望薪資
-
- 反問環節
簡單總結
總結一下,技術面環節主要考專案和Java基礎、編程題要注意規范和思路是否最優,和HR小姐姐聊得很開心,然后在2月20號收到了offer,
一些分享
因為上家公司“Android首席開發官”職責的原因,所以平時加了不少技術交流群,以便于自己在遇到問題后,請教學習,這次能成功跳槽騰訊,也是非常感謝群內一位騰訊的前輩老哥給予的一些學習計劃指導,和一些面試題、技術筆記分享,讓我在短時間內有實力“入贅”騰訊,再經得大佬同意的前提下,我把這套進階筆記及面試題集分享出來,希望能幫助到更多有著大廠夢的朋友,
- 架構師筑基必備技能
目前Android APP開發主流語言就是Java語言,Java語言最大的特性就是提高了軟體的互動可能性,可以說安卓手機幾乎所有應用程式都是利用Java語言來進行撰寫的,
知識要點:
1、深入理解Java泛型
2、注解深入淺出
3、并發編程
4、資料傳輸與序列化
5、Java虛擬機原理
6、高效IO
- 設計思想解讀開源框架
隨著互聯網企業的不斷發展,產品專案中的模塊越來越多,用戶體驗要求也越來越高,想實作小步快跑、快速迭代的目的越來越難,插件化技術應用而生,如果沒有插件化技術,美團、淘寶這些集成了大量“app”的應用,可能會有幾個g那么大,
所以,當今的Android移動開發,不會熱修復、插件化、組件化,80%以上的面試都過不了,
知識要點:
1、熱修復設計
2、插件化框架設計
3、組件化框架設計
4、圖片加載框架
5、網路訪問框架設計
6、RXJava回應式編程框架設計
- 360°全方位性能調優
在不同層次的開發工程師手里,因為技術水平的參差不齊,即使很多手機在跑分軟體性能非常高,打開應用依然存在卡頓現象,
另外,隨著產品內容迭代,功能越來越復雜,UI頁面也越來越豐富,也成為流暢運行的一種阻礙,綜上所述,對APP進行性能優化已成為開發者該有的一種綜合素質,也是開發者能夠完成高質量應用程式作品的保證,
1、設計思想與代碼質量優化
2、程式性能優化
- 啟動速度與執行效率優化
- 布局檢測與優化
- 記憶體優化
- 耗電優化
- 網路傳輸與資料儲存優化
- APK大小優化
3、開發效率優化
- 分布式版本控制系統Git
- 自動化構建系統Gradle
4、專案實戰
- 啟動速度
- 流暢度
- 抖音在APK包大小資源優化的實踐
- 優酷回應式布局技術全決議
- 網路優化
- 手機淘寶雙十一性能優化專案揭秘
- 高德APP全鏈路原始碼依賴分析
- 徹底干掉OOM的實戰經驗分享
- 微信Android終端記憶體優化實踐
- Android框架體系架構
Android框架體系架構(高級UI+FrameWork原始碼) 這塊知識是現今使用者最多的,我們稱之Android2013~2016年的技術,
Android開發者也往往因為網上Copy代碼習慣了而導致對這塊經常“使用”的代碼熟悉而又陌生:熟悉的是幾乎天天在和它們打交道, 天天在復制這些代碼 ;陌生的是雖然天天和這些代碼打交道,但是并沒有深入研究過這些代碼的原理,代碼深處的內涵,
本篇知識要點:
1、高級UI晉升
2、Android內核組件
3、大型專案必備IPC
4、資料持久與序列化
5、Framework內核決議
- NDK模塊開發(音視頻系列)
NDK(Native Development Kit縮寫)一種基于原生程式介面的軟體開發工具包,可以讓您在 Android 應用中利用 C 和 C++ 代碼的工具,通過此工具開發的程式直接在本地運行,而不是虛擬機,
在Android中,NDK是一系列工具的集合,主要用于擴展Android SDK,NDK提供了一系列的工具可以幫助開發者快速的開發C或C++的動態庫,并能自動將so和Java應用一起打包成apk,
本篇知識要點:
1、NDK開發之C/C++入門
2、JNI模塊開發
3、Linux編程
4、底層圖片處理
5、音視頻開發
6、機器學習
- Flutter學習進階
2019 年無疑是 Flutter 技術如火如荼發展的一年,
每一個移動開發者都在為 Flutter 帶來的“快速開發、富有表現力和靈活的 UI、原生性能”的特色和理念而癡狂,從超級 App 到獨立應用,從純 Flutter 到混合堆疊,開發者們在不同的場景下樂此不疲的探索和應用著 Flutter 技術,也在面臨著各種各樣不同的挑戰,
本篇知識要點:
1、Flutter跨平臺開發概述
2、Windows中Flutter開發環境搭建
3、撰寫你的第一個Flutter APP
4、Flutter Dart語言系統入門
…
- 微信小程式開發
微信小程式作為現在比較火的編程開發應用場景之一,深受市場的青睞,這讓不少開發者眼饞不已,但是對于初學者來說,就完全摸不著頭腦了,不知道微信小程式開發制作需要學習那些知識,有需要的朋友可以參考本篇,
本篇知識要點:
1、小程式概述及入門
2、小程式UI開發
3、API操作
4、購物商場專案實戰
- Android相關原始碼解讀
只要是程式員,不管是Java還是Android,如果不去閱讀原始碼,只看API檔案,那就只是停留于皮毛,這對我們知識體系的建立和完備以及實戰技術的提升都是不利的,
- 騰訊歷年面試真題集(含決議)
由于篇幅原因,需要以上完整學習筆記及面經pdf如有需要,可以 點贊+評論 沾沾喜氣,然后點擊這里免費自取!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/265970.html
標籤:其他
上一篇:【請求頭Content-Type為表單提交和JSON提交的區別】呼叫快遞介面回傳400的原因
下一篇:如何透過表象直達本質










