
每一個程式員都擁有一座大廠夢,我也不例外,之前面試位元組跳動,竟然被演算法問倒了,很多演算法都沒解出來,解出來的也還不是最優解,才二面就涼涼了,回去之后也潛心復習了,準備了二戰,如今終于進入了位元組跳動,被錄用,定級2-2,
一、首站位元組被掛
對于這個獨角獸企業,LZ當時報了很大的期望,但是沒有確切的了解面試情況(對自己蜜汁自信),沒有了解到位元組對演算法這么看重,稍稍懈怠了下,沒想到直接掛了,位元組面試流程還是很快的,意識到不對的時候已經晚了……
- 給定一個整型陣列,查找三個元素相加等于0的所有三元組,要求去重
- 給定一個陣列,調整該陣列,使其滿足堆的性質(初始化建堆)
- 判斷一個鏈表是否為回文鏈表,說出你的思路并手寫代碼
- 你知道哪些排序演算法,這些演算法的時間復雜度分別是多少,解釋一下快排?
…
想起來的就這些了,當時被問得一臉懵逼,半小時憋不出幾行代碼來,浪費了一次寶貴的面試機會,
我個人其實也不是特別喜歡做題,好玩的事情太多了,但是沒辦法,現狀就是這樣,Android程式員這幾年太多了,競爭越來越激烈,就各種手段卡你唄,說不內卷那也是不可能的,我之前也是溫水煮青蛙,出去面試了才被教各種做人!
你沒有好的公司專案背景,只有做題,(除非學校,學歷,專案經驗,開源專案,公司背景等有不錯的優勢)
二、二戰位元組
位元組一面:
- Activity生命周期,每個回呼方法的作用是什么
- 事件的分發機制
- 記憶體泄漏
- 遇到過滑動沖突嗎?滑動沖突的解決方法
- Hashmap原理
- Hashmap擴容機制
- 手撕雙重校驗鎖,volatile的作用
- synchronized和volatile的區別
- 執行緒池的引數
- 例外機制
- synchronized修飾static 方法和修飾普通方法有什么區別
- 雙親委派模型,為什么要這樣
- sharedPreferences的原理,多行程下是否可以使用,apply和commit 有什么區別
- 演算法題:每k個反轉鏈表;一個長度為N的整形陣列,陣列中每個元素的取值范圍是[0,n-1],判斷該陣列否有重復的數,請說一下你的思路并手寫代碼…
位元組二面
- 四大基本組件和作用
- Activity生命周期,啟動模式,taskAffinity,橫豎屏轉換,onNewIntent
- Service兩種啟動模式,有什么區別,
- 廣播,廣播分類,普通廣播、異步廣播、有序廣播
- view的繪制流程
- Framelayout wrap_content TextView match_parent 怎么顯示
- 約束布局和RelativeLayout的區別
- 布局優化
- include、viewStub、merge 的使用和區別
- mvp、 mvc、mvvm
- 如何創建一個viewModel
- Handler
- ThreadLocal
- 演算法題:二叉樹查找,將這條路上的結點存盤;之字形列印二叉樹,使用輔助堆疊實作,實作完后問我:不使用輔助空間怎么做,回答遞回,并且遞回時記錄當前層數
位元組三面
1.配接器和裝飾模式各自特點和使用場景
2.視頻編解碼是怎么做的
3.三色球排序
…
四面(HR)
到這一步就是正常走流程了,就不敘述了……

三、二戰位元組前,我是如何復習的?
LZ其他技術掌握的還算牢靠,主要是演算法方面有些欠缺,復習時主攻的演算法,
從朋友那薅到一份《2021最新版資料結構與演算法?試題?冊》,硬著頭皮全部啃完了,不直接看答案,先自己思考,不然很容易忘記,實在不會的看題解,看看別人的解題方法,做完了之后總結思路和常見套路,

1.哈希
- 請說?說,Java中的HashMap的?作原理是什么?
- 介紹?下,什么是Hashmap?
- 講?講,如何構造?致性哈希演算法,
- 請談?談,hashCode() 和equals() ?法的重要性體現在什么地??
2.?叉樹
- 求?叉樹的最?深度
- 求?叉樹的最?深度
- 求?叉樹中節點的個數
- 求?叉樹中葉?節點的個數
- 求?叉樹中第k層節點的個數
- 判斷?叉樹是否是平衡?叉樹
- 判斷?叉樹是否是完全?叉樹
- 兩個?叉樹是否完全相同
- 翻轉?叉樹or鏡像?叉樹
- 兩個?叉樹是否互為鏡像
- 求兩個?叉樹的最低公共祖先節點
3.鏈表
- 談?談,bucket如果?鏈表存盤,它的缺點是什么?
- 有?個鏈表,奇數位升序偶數位降序,如何將鏈表變成升序?
- 如何反轉單鏈表
- 現在有?個單向鏈表,談?談,如何判斷鏈表中是否出現了環
- 隨機鏈表的復制

4.陣列
- 寫?個演算法,可以將?個?維陣列順時針旋轉90度,
- ?個陣列,除?個元素外其它都是兩兩相等,求那個元素?
- 找出陣列中和為S的?對組合,找出?組就?
- 求?個陣列中連續?向量的最?和
- 尋找?陣列中前K個最?的數
5.排序
- ?Java寫?個冒泡排序?
- 介紹?下,排序都有哪?種?法?請列舉出來
- 介紹?下,歸并排序的原理是什么?
- 介紹?下,堆排序的原理是什么?
- 談?談,如何得到?個資料流中的中位數
- 你知道哪些排序演算法,這些演算法的時間復雜度分別是多少,解釋?下快排?
6.堆與堆疊
- 請你解釋?下,記憶體中的堆疊(stack)、堆(heap) 和靜態區(static area) 的?法,
- 說?說,heap和stack有什么區別,
- 最?的k個數
- 滑動窗?最?值
- 丑數前
- 前K個?頻元素
- 有效的括號
- 最?堆疊
- 柱狀圖中最?的矩形

7.?級演算法
- 請你講講LRU演算法的實作原理?
- 為什么要設計 后綴運算式,有什么好處?
- 請你設計?個演算法,?來壓縮?段URL?
- 談?談,id全域唯?且?增,如何實作?
- 最后?個單詞的?度
8.動態規劃
- 斐波那契數
- 不同路徑
- 爬樓梯
- 零錢兌換
- 打家劫舍
- 編輯距離

由于篇幅限制,展示了部分內容截圖,需要這些檔案資料的,可以點贊支持一下我,然后【點擊這里】免費閱讀下載,
希望所有的程式員都能夠學習起來,努力實作我們的大廠夢!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/274778.html
標籤:其他
