Github作爲程序員們的後花園,一直以來都是程序員最喜歡逛逛、學習的地方,小編也不例外,最近看到一份對標阿里、頭條、拼多多等Android核心架構筆記,已經標星15+K了,很是驚訝,看了一下,覺得知識點整理的非常的詳細,也不愧能獲得這麼多星,資料已被整理好,發放福利給朋友們!
點贊後,然後評論區評論關鍵字 “666” 即可獲得《對標阿里、頭條、拼多多等面經知識點合集整理筆記》PDF版文檔資料的免費領取方式。
從社招和校招兩個⻆度來舉例⼦吧! 我下⾯的兩個例⼦僅供參考,⾃我介紹並不需要死記硬背,記住要說的要點,⾯試的時候根據公司的情況臨場發揮也是沒問題的。另外,⽹上⼀般建議的是準備好兩份⾃我介紹:⼀份對hr說的,主要講能突出⾃⼰的經歷,會的編程技術⼀語帶過;另⼀份對技術⾯試官說的,主要講⾃⼰會的技術細節和項⽬經驗。
面試前得搞清楚技術⾯可能會問哪些⽅向的問題
你準備⾯試的話⾸先要搞清技術⾯可能會被問哪些⽅向的問題吧!
配套學習資料(全部都可以領取!免費分享記得點個贊哦給文章)
覺得資料不錯的,免費分享哦,記得一鍵三連。點贊+評論666 即可獲取所有學習筆記!
自行下載直達領取鏈接:【點擊資料下載】
BATJ Android社招面經 高頻經典題目(精選)
一面
爲什麼想換公司?
在開發中遇到的最大的困難?怎麼解決的?
接口和抽象類的區別,一個類的能不能多繼承,能不能實現多個接口
接口類的非方法能不能被修改?不能,接口類裏非方法的類型都是final修飾,所以必須初始化並且不能被修改。
抽象類的變量可以被繼承和修改麼?可以。
final關鍵字
GC如何標記要回收的內存?GC Roots有哪些?
線程安全問題,sychronized、lock/unlock的區別使用,公平鎖和非公平鎖的概念。
sychronized是如何體現公平鎖和非公平鎖的(CAS、鎖自旋)?
HashMap原理,在什麼時候擴容(當加入的元素大於閾值threshold後)。 以及線程安全的
HashTable
、ConcurrentHashMap
的原理。View的事件分發
佈局優化怎麼做的?LinearLayout和RelativeLayout在性能上的區別。
WebView的優化,如果出現了數據的交互該怎麼做?(AIDL),Binder怎麼實現進程間通信的?mmap的模型?
內存優化?RecyclerView的緩存機制,如何優化?
項目中的聯網模塊怎麼實現的?UDP和TCP的區別?
TCP會檢查包的順序麼,Tcp怎麼控制包的發送(滑動窗口)。
看到項目中使用了WebSocket,講下它和Http的區別?
RxJava的操作符?項目中是如何使用RxJava的?
快速排序和冒泡排序的穩定性問題
編程題:將一個分數轉化成小數形式輸出,因爲分數只可能是有限小數或無限循環小數。如果小數是無限循環小數,則使用小括號括起。
這題思路是做while輪除。我界定是否產生了無限循環小數是使用HashTable。
對我們公司瞭解多少?有什麼想問的?
二面
- 爲什麼想要離開當前的公司
- "abcde"字符串在內存中佔多大,這些字節在JVM的編碼格式
- JVM堆和棧的作用,進程和線程的作用,堆棧和線程進程的對應關係
- 死鎖怎麼產生?如何去解決死鎖,多個方案
- 線程同步問題,自增是原子操作嗎?如果要做到線程安全的自增要做怎麼做?
- 快排的過程,時間複雜度,n*lgn是如何得來的?
- Http是在哪一層,Https使用了非對稱加密還是對稱加密?TCP和UDP的區別,爲什麼UDP不可靠還要使用UDP
- 擁塞控制和流量控制的區別
- 智力題:給一籃子雞蛋,如何用最少的比對次數找到最大的和最小的雞蛋, 我的回答是 一開始,隨便拿出兩個雞蛋,然後接下來剩下的雞蛋每拿出一個,就和這兩個進行比較,如果比兩個中小的雞蛋小就替換小的那個,如果比大的雞蛋大就替換掉大的那個,這樣比較次數就是 (n-2)2 ,因爲有些雞蛋只用比一次就行了(因爲是最小的就不用往大的比了),所以結果是小於 (n-2)2的,但我覺得應該還可以更加快....
- 編程題,排序二叉樹的插入,如果插入相同的數,需要做什麼保證樹可以還原(即不允許丟棄到相同的數)?
- 有什麼要問的?
三面
- 兩桶油漆,A桶全是紅色油漆,B桶全是藍色油漆,將A桶中取一勺倒入B中,再從B桶中取一勺倒入A中,求A桶的藍紅比例和B桶的紅藍比例,是大於、小於還是等於?
- 用一個數組實現一個循環隊列
- 給定一個只有“R”“G”“B”三個字母的字符串,用一次遍歷基於原字符串將他們以“RGB”的順序排序好(LeetCode原題)
- 52張撲克牌,取一張不放回,再取一張, 兩張爲相同顏色的概率是多少?
hr面
- 自我介紹
- 爲什麼選擇計算機這個專業
- 爲什麼要離開當前的公司
- 你是深圳的,爲什麼會選擇在東莞工作。
- 在上一個公司學到了什麼
- 選擇公司因素,按優先級排個序
- 用三個關鍵詞描述自己
- 代入用戶思維和不代入用戶思維做產品有什麼區別?
- 家庭情況,有沒有女朋友?
- 你覺得一個好勝心過強的人會有什麼樣的問題?
- 你會想在團隊裏面承擔一個什麼樣的角色?
- 平時的愛好是什麼
- 有沒有給自己制定一些計劃?對自己的要求有多高?
- 學習的渠道、方式,有GitHub嗎?看什麼樣的書?
- 學習是基於公司項目學習,還是個人興趣學習?
- 預計到崗時間,期望薪資
- 反問環節
總結一下,技術面環節主要考項目 和Java基礎、編程題要注意規範和思路是否最優。
BATJ Android校招面經 高頻經典題目(精選)
一面
0、自我介紹
1、handler機制,sendMessage和post(Runnable)的區別。
2、ThreadLocal原理,底層實現
3、HashMap底層,擴容,LinkedHashMap
4、Service的onBind和onStart差別
5、Activity啓動生命週期,A跳轉B
6、Android持久化方案,SharedPreference是否可以跨進程通訊。ContentProvider
7、ClassLoader機制,雙親委派。如果我要寫一個Activity類,那怎麼保證加載的是我自己寫的Activity
8、算法題,約瑟夫環
9、反問
二面
0、自我介紹
1、項目技術點詳解
2、寫過什麼自定義View
3、OkHttp代碼看過嗎,用了什麼設計模式
4、MVC、MVP區別,項目中的實現。
5、LiveData和EventBus的相關討論,真的是討論,暢所欲言
6、看過哪些源碼
7、SharedPreference相關
8、Android動畫了解嗎,用過什麼
9、TCP、UDP區別,面試時的語音用的是什麼,爲什麼要這麼用。
10、代碼題,5個線程對一個int進行累加到1000.
11、反問
三面(50mins):
0、自我介紹
1、算法,跳棋盤
2、瀏覽器輸入URL到渲染全過程
3、Http請求報文響應報文
4、http2.0有哪些優化
5、用過哪些網絡庫
6、OkHttp的Intercepter
7、Android持久化方式
8、Java線程同步的數據結構
9、反問
社招和校招面試技巧總結
經過了這你年的磨礪,除了硬實力之外,有一些需要自己注意的技巧分享出來:
1、簡歷不要投太早,容易因爲太久沒被處理導致心態崩潰。因爲我之前2月底投了一波,但是那時候很多廠簡歷篩選工作還沒開始,搞得自己無名焦慮,頭髮又少了。
2、不要給面試官一種你在背知識點的感覺,要結合實現進行分析。我這裏有一句話:數據結構決定算法、算法決定數據結構。就拿TCP舉例,你要是遇到TCP的頭部結構有什麼的問題,是不是就懵了,覺得這是靠背誦的。但是你套上這句話,聯想一下知識點:SACK確認機制、滑動窗口、全雙工通道、套接字結構……是不是就能夠理解爲什麼需要那些頭部結構了,都是有對應的功能需要實現纔會出現這些結構的。遇事不決拿結構分析。
3、多看源碼,源碼裏面有很多註釋,很多時候看看註釋就知道這個類是幹什麼的了,然後再往下跟,會有助於自己理解邏輯。更重要的是讓面試官知道你這種跟源碼的學習方式。
4、調整好心態,不要因爲某些廠把自己掛了就覺得自己不行。這是我被掛多了之後的心得,此處不留爺自有留爺處。
5、面心儀的公司之前先面幾家其他公司,小公司或者同等體量的公司。
6、面試一次覆盤一次,整理自己發揮不好的點。不能說一次問你不會兩次問你還不會吧,那不是能力問題,那是態度問題。而且很多廠是有面試記錄的,二三面轉挑你面試不好的問題問你。
7、表現自己對於計算機、碼代碼的熱情以及願意鑽研的精神。這裏說的熱情不是讓你自我介紹的時候說喜歡碼代碼,而是不經意見透露一些。比如有維護個人博客、比如一直在維護個人github、比如在遇到問題的時候提了各種解決方案最後根據某種選擇策略決定了最終方案、比如最近遇到的問題以及現在解決到了哪一步……
自行下載直達領取鏈接:【點擊資料下載】
尾聲
當然上面講的都是技術方向上的發展,當然對一些技術棧水平和技術積累到一定程度後你也可以往技術管理和產品方向發展,當然你也可以選擇創業,如果你有足夠好的idea和心理準備。
當然大部分人停留在中高級水平,然後一直停滯不前,加上外部各種環境,產生了各種焦慮,所以很矛盾,這時候你最好的狀態是快速往高級水平發展,當然這裏是比較難的,這個坎也是比較難邁過去的。因爲Android知識體系比較龐大和複雜的,涉及到計算機知識領域的方方面面。
但是隻要堅持,讓自己成T字形人才發展,時間會證明一切!!1
B站Android重點難點進階學習視頻
滿滿誠意:【實戰MVVM和Jetpack的完美結合讓頁面開發不再煩惱】
【1.什麼是插件化】
【2.插件化能解決的問題及與組件化的區別】
【3.常用插件化框架對比】
.
.
.
【13.手寫實現插件的資源加載】
點擊配套【設計思想解讀開源框架】學習筆記,學習路線獲取!