已拿Offer!百度、字節(jié)跳動等后臺面經(jīng)
我畫你猜:大鵬文章中的一句詩詞,謎底結(jié)尾揭曉

轉(zhuǎn)眼已經(jīng)工作入職一年的時間了,還是有非常多收獲的,感謝這一年的時光,感謝所有遇到的人,讓我變成更好的自己。
正所謂滿園春色關(guān)不住,一枝紅杏出墻來,帶著滿滿的收獲我開始了大規(guī)模的面試,拿到了大部分 Offer。
在發(fā)出來面試經(jīng)歷之前,簡單談?wù)勎疫@一年中作為職場新人的收獲和反思。
職場收獲
適應(yīng)公司技術(shù)
進(jìn)入職場后,會先去適應(yīng)公司的技術(shù)棧和工具,這些其實并不難,在了解和學(xué)習(xí)的過程中也能增長見識。
適應(yīng)人際關(guān)系
除此之外,要適應(yīng)同事之間的人際關(guān)系,并且要積極主動接受每一份兒交代過來的工作,因為每個人都會在內(nèi)心給他人貼標(biāo)簽,如果某個人做事不靠譜,大家都會避而遠(yuǎn)之,所以最開始的時候要給大家留下好印象,便于日后協(xié)作。
多做日志記錄
我在剛剛?cè)肼殨r,交給了我一個很小的功能迭代,聽師兄介紹完背景之后,就開始進(jìn)行開發(fā),并且完成自測,代碼 cr 和完成的發(fā)布流程,同時在做的過程中,記錄了一篇日志,以免下次做的時候忘記,做事情嚴(yán)謹(jǐn)細(xì)心也會給別人留下好印象。
勇于承擔(dān)責(zé)任
在承擔(dān)責(zé)任方面其實我有很多做的不夠的地方,有過主導(dǎo)需求的機(jī)會,但是沒能把握住,還有一部分交給我的工作,放任自流,并沒有完全積極去推進(jìn)。這里需要提醒大家的就是無論什么樣的工作交給你了就要多多用心,積極主動,勇于承擔(dān)。
做好向上管理
另外一個,初入職場和學(xué)生時代有個很不同的地方,我覺得也是最需要牢記的。
在學(xué)校做事情要對自己負(fù)責(zé),在職場做事情要對直屬 leader 負(fù)責(zé),也就是所謂的向上管理。
在學(xué)校的時候,無論是學(xué)習(xí)上課、參加學(xué)生會工作、參加課外興趣班,本質(zhì)都是為了自我提升,在讀大學(xué)期間有所收獲,畢業(yè)的時候回首沒有虛度光陰。
在職場里面,需要每個人在自己的工作崗位上對集體有產(chǎn)出,為公司創(chuàng)造價值,在這樣的情況下,你的直屬 leader 決定了你的工作內(nèi)容和產(chǎn)出價值,而個人的產(chǎn)出價值又會直接匯報給直屬 leader,由 leader 合并大家的工作產(chǎn)生更大的價值,所以對直屬 leader 負(fù)責(zé),向上管理非常重要。
技術(shù)推動業(yè)務(wù)
作為技術(shù)人員的產(chǎn)出,通常還是要看如何利用技術(shù)去提升價值的。不能夠完全去考業(yè)務(wù)來推動技術(shù)開發(fā),要有技術(shù)推動業(yè)務(wù)的思考。舉個例子:
- 業(yè)務(wù)推技術(shù):比如說產(chǎn)品經(jīng)理說要增加一個頁面,然后開發(fā)人員就去開發(fā)這個頁面,這就是業(yè)務(wù)在推動技術(shù)。
- 技術(shù)推業(yè)務(wù):因為技術(shù)改造,使得開發(fā)頁面的效率提升了 10 倍,然后開發(fā)人員和產(chǎn)品經(jīng)理說,你的夢想實現(xiàn)了,花 1 個需求的時間就可以開發(fā) 10 個需求了,這就是技術(shù)在推動業(yè)務(wù)。
作為開發(fā)工程師,就是要發(fā)現(xiàn)技術(shù)中的痛點,解決掉之后提升自我價值。
面經(jīng)
百度
第一次面試
- maven 打包的時候需要配置什么才能將包打進(jìn)去
- spring boot 都有哪些注解
- 描述下如何反轉(zhuǎn)鏈表
- 如何用 java 的寫一個 web 應(yīng)用,操作數(shù)據(jù)庫,要注意什么
- 如果多個應(yīng)用寫同一份兒文件,如何才能夠不出錯誤?
- spring 的 aop 是怎么實現(xiàn)的,用最通俗的話講明白
第二次面試
- cpp 了解多少,講講指針和引用的區(qū)別
- 智能指針的實現(xiàn)原理
- 多態(tài)的理解
- 多態(tài)底層是如何實現(xiàn)的
- epoll 這些有印象么
- IO 模型都有哪些
- 寫一個代碼比較版本號,比如 1.1.0 和 1.0.1
- 內(nèi)核態(tài)和用戶態(tài)區(qū)別
拼多多
第一次面試
- 1 個有序的數(shù)組,里面包含了 N 個數(shù)字,分割成 M 段(M<=N),然后進(jìn)行亂序排列,如何快速恢復(fù)其順序
//?45?123?79
//?45?67?123?89
void?resort(int[]?arr,?int?N,?int?M)?{
}
主要思路是這樣的,先遍歷一遍,然后得到最基本的分割情況,根據(jù)分割大小,與 M 進(jìn)行判斷和比較,如果比 M 小,再進(jìn)行判斷是否存在大塊需要分割,再進(jìn)行兩兩比較,分割完成,標(biāo)記好分割點,最后進(jìn)行重組
第二次面試
- rpc 調(diào)用流程?
- rpc 調(diào)用中,A 調(diào)用 B,A 如何知道 B 是不是服務(wù)不可用了?
- rpc 調(diào)用如何判斷資源占用情況?
- 算法題,一棵二叉樹,找到所有到葉子節(jié)點和為 target 的路徑
- countDownLatch 的實現(xiàn)原理?
- 線程有多少種狀態(tài)?time_wait 狀態(tài)是什么意思?
第三次面試
- 如何設(shè)計 rpc,序列化怎么設(shè)計?
- 數(shù)據(jù)庫 mybatis 語句 insert 的時候會返回 id,那么這個 id 是如何返回的,如何能夠確認(rèn)這條數(shù)據(jù)是你插入的,從數(shù)據(jù)庫事務(wù)角度來看?
- 一個數(shù)組,[1,2,3,5,7,9,8,3,2],有一個值 k=8,如何判斷數(shù)組中是否存在該值,時間復(fù)雜度不超過 O(n)
- 垃圾回收為什么需要標(biāo)記的步驟,垃圾回收其實有四步,stop the world 原因是什么?
字節(jié)跳動
第一次面試
- redis 的基本數(shù)據(jù)結(jié)構(gòu)
- m 個有序數(shù)組,每個數(shù)組長度為 n,將 m 個數(shù)組生成 1 個有序數(shù)組,如何做?
使用堆排序,m 個排一次,然后補(bǔ)充數(shù)據(jù),最后得到結(jié)果
第二次面試
- 數(shù)據(jù)庫不使用 b+樹還可以使用什么數(shù)據(jù)結(jié)構(gòu)?
- 跳表如何判斷這個數(shù)據(jù)插在哪里?
- 跳表和 b+樹比哪個效率更高?
- 什么情況下不會使用索引?
- http 2.0 有什么優(yōu)點
- 外部調(diào)用為什么不使用 rpc 而使用 http 協(xié)議?http 協(xié)議有什么不可替代的么?
- 如果流量忽然很大,不使用限流的方式應(yīng)該怎么辦,也不擴(kuò)容?削峰
- 消息隊列消息順序不一致應(yīng)該怎么處理?
- 4 個數(shù)組,目標(biāo)值 target,每個數(shù)組各找一個數(shù),使得 4 個數(shù)和為 target,數(shù)組沒有順序,找到所有不重復(fù)的組合,要求時間復(fù)雜度 O(n^2)
shopee
- 對分布式事務(wù)有什么了解?
- redis 如何實現(xiàn)分布式鎖?
- 如何保持分布式一致性?
- 消息隊列重復(fù)消費怎么辦?
- 算法題
尋找第K大
限定語言:Python. C++. C#.?Java
有一個整數(shù)數(shù)組,請你根據(jù)快速排序的思路,找出數(shù)組中第K大的數(shù)。
給定一個整數(shù)數(shù)組a,同時給定它的大小n和要找的K(K在1到n之間),請返回第K大的數(shù),保證答案存在。
測試樣例:
[1,3,5,2,2],5,3
返回:2
- https 的執(zhí)行過程是怎么樣的
- 如何判斷兩個鏈表是否有交點,時間復(fù)雜度和空間復(fù)雜度
- 數(shù)據(jù)庫的事務(wù)隔離級別有什么?
- 數(shù)據(jù)庫如何實現(xiàn)可重復(fù)讀這個隔離級別的?
- 如何寫代碼判斷死鎖的存在?設(shè)計一個數(shù)據(jù)結(jié)構(gòu)出來
- redis 是如何做主從同步的?
- redis 持久化的方式都有什么,名稱都是什么?
- 如何解決循環(huán)依賴的?
- TCP 如何連接和斷開的?四次揮手的流程?
- 進(jìn)程間通信方式都有什么?有什么區(qū)別?
- 什么是數(shù)據(jù)庫事務(wù)?事務(wù)在哪些地方有應(yīng)用?
- 如何設(shè)計一個哈希結(jié)構(gòu),都要注意什么?

覺得畫直擊靈魂,歡迎點贊、在看和轉(zhuǎn)發(fā)
