已拿Offer!百度、字節跳動等後臺面經

我畫你猜:大鵬文章中的一句詩詞,謎底結尾揭曉java

轉眼已經工做入職一年的時間了,仍是有很是多收穫的,感謝這一年的時光,感謝全部遇到的人,讓我變成更好的本身。web

正所謂滿園春色關不住,一枝紅杏出牆來,帶着滿滿的收穫我開始了大規模的面試,拿到了大部分 Offer。面試

在發出來面試經歷以前,簡單談談我這一年中做爲職場新人的收穫和反思。redis

職場收穫

適應公司技術

進入職場後,會先去適應公司的技術棧和工具,這些其實並不難,在瞭解和學習的過程當中也能增加見識。算法

適應人際關係

除此以外,要適應同事之間的人際關係,而且要積極主動接受每一份兒交代過來的工做,由於每一個人都會在心裏給他人貼標籤,若是某我的作事不靠譜,你們都會避而遠之,因此最開始的時候要給你們留下好印象,便於往後協做。spring

多作日誌記錄

我在剛剛入職時,交給了我一個很小的功能迭代,聽師兄介紹完背景以後,就開始進行開發,而且完成自測,代碼 cr 和完成的發佈流程,同時在作的過程當中,記錄了一篇日誌,以避免下次作的時候忘記,作事情嚴謹細心也會給別人留下好印象。數據庫

敢於承擔責任

在承擔責任方面其實我有不少作的不夠的地方,有過主導需求的機會,可是沒能把握住,還有一部分交給個人工做,聽任自流,並無徹底積極去推動。這裏須要提醒你們的就是不管什麼樣的工做交給你了就要多多用心,積極主動,敢於承擔。數組

作好向上管理

另一個,初入職場和學生時代有個很不一樣的地方,我以爲也是最須要牢記的。markdown

在學校作事情要對本身負責,在職場作事情要對直屬 leader 負責,也就是所謂的向上管理。數據結構

在學校的時候,不管是學習上課、參加學生會工做、參加課外興趣班,本質都是爲了自我提高,在讀大學期間有所收穫,畢業的時候回首沒有虛度光陰。

在職場裏面,須要每一個人在本身的工做崗位上對集體有產出,爲公司創造價值,在這樣的狀況下,你的直屬 leader 決定了你的工做內容和產出價值,而我的的產出價值又會直接彙報給直屬 leader,由 leader 合併你們的工做產生更大的價值,因此對直屬 leader 負責,向上管理很是重要。

技術推進業務

做爲技術人員的產出,一般仍是要看如何利用技術去提高價值的。不可以徹底去考業務來推進技術開發,要有技術推進業務的思考。舉個例子:

  • 業務推技術:好比說產品經理說要增長一個頁面,而後開發人員就去開發這個頁面,這就是業務在推進技術。
  • 技術推業務:由於技術改造,使得開發頁面的效率提高了 10 倍,而後開發人員和產品經理說,你的夢想實現了,花 1 個需求的時間就能夠開發 10 個需求了,這就是技術在推進業務。

做爲開發工程師,就是要發現技術中的痛點,解決掉以後提高自我價值。

面經

百度

第一次面試

  1. maven 打包的時候須要配置什麼才能將包打進去
  2. spring boot 都有哪些註解
  3. 描述下如何反轉鏈表
  4. 如何用 java 的寫一個 web 應用,操做數據庫,要注意什麼
  5. 若是多個應用寫同一份兒文件,如何纔可以不出錯誤?
  6. spring 的 aop 是怎麼實現的,用最通俗的話講明白

第二次面試

  1. cpp 瞭解多少,講講指針和引用的區別
  2. 智能指針的實現原理
  3. 多態的理解
  4. 多態底層是如何實現的
  5. epoll 這些有印象麼
  6. IO 模型都有哪些
  7. 寫一個代碼比較版本號,好比 1.1.0 和 1.0.1
  8. 內核態和用戶態區別

拼多多

第一次面試

  1. 1 個有序的數組,裏面包含了 N 個數字,分割成 M 段(M<=N),而後進行亂序排列,如何快速恢復其順序
// 45 123 79
// 45 67 123 89 void resort(int[] arr, int N, int M) { } 複製代碼

主要思路是這樣的,先遍歷一遍,而後獲得最基本的分割狀況,根據分割大小,與 M 進行判斷和比較,若是比 M 小,再進行判斷是否存在大塊須要分割,再進行兩兩比較,分割完成,標記好分割點,最後進行重組

第二次面試

  1. rpc 調用流程?
  2. rpc 調用中,A 調用 B,A 如何知道 B 是否是服務不可用了?
  3. rpc 調用如何判斷資源佔用狀況?
  4. 算法題,一棵二叉樹,找到全部到葉子節點和爲 target 的路徑
  5. countDownLatch 的實現原理?
  6. 線程有多少種狀態?time_wait 狀態是什麼意思?

第三次面試

  1. 如何設計 rpc,序列化怎麼設計?
  2. 數據庫 mybatis 語句 insert 的時候會返回 id,那麼這個 id 是如何返回的,如何可以確認這條數據是你插入的,從數據庫事務角度來看?
  3. 一個數組,[1,2,3,5,7,9,8,3,2],有一個值 k=8,如何判斷數組中是否存在該值,時間複雜度不超過 O(n)
  4. 垃圾回收爲何須要標記的步驟,垃圾回收其實有四步,stop the world 緣由是什麼?

字節跳動

第一次面試

  1. redis 的基本數據結構
  2. m 個有序數組,每一個數組長度爲 n,將 m 個數組生成 1 個有序數組,如何作?

使用堆排序,m 個排一次,而後補充數據,最後獲得結果

第二次面試

  1. 數據庫不使用 b+樹還可使用什麼數據結構?
  2. 跳錶如何判斷這個數據插在哪裏?
  3. 跳錶和 b+樹比哪一個效率更高?
  4. 什麼狀況下不會使用索引?
  5. http 2.0 有什麼優勢
  6. 外部調用爲何不使用 rpc 而使用 http 協議?http 協議有什麼不可替代的麼?
  7. 若是流量突然很大,不使用限流的方式應該怎麼辦,也不擴容?削峯
  8. 消息隊列消息順序不一致應該怎麼處理?
  9. 4 個數組,目標值 target,每一個數組各找一個數,使得 4 個數和爲 target,數組沒有順序,找到全部不重複的組合,要求時間複雜度 O(n^2)

shopee

  1. 對分佈式事務有什麼瞭解?
  2. redis 如何實現分佈式鎖?
  3. 如何保持分佈式一致性?
  4. 消息隊列重複消費怎麼辦?
  5. 算法題
尋找第K大
限定語言:Python. C++. C#. Java 有一個整數數組,請你根據快速排序的思路,找出數組中第K大的數。 給定一個整數數組a,同時給定它的大小n和要找的K(K在1到n之間),請返回第K大的數,保證答案存在。 測試樣例: [1,3,5,2,2],5,3 返回:2 複製代碼
  1. https 的執行過程是怎麼樣的
  2. 如何判斷兩個鏈表是否有交點,時間複雜度和空間複雜度
  3. 數據庫的事務隔離級別有什麼?
  4. 數據庫如何實現可重複讀這個隔離級別的?
  5. 如何寫代碼判斷死鎖的存在?設計一個數據結構出來
  6. redis 是如何作主從同步的?
  7. redis 持久化的方式都有什麼,名稱都是什麼?
  8. 如何解決循環依賴的?
  9. TCP 如何鏈接和斷開的?四次揮手的流程?
  10. 進程間通訊方式都有什麼?有什麼區別?
  11. 什麼是數據庫事務?事務在哪些地方有應用?
  12. 如何設計一個哈希結構,都要注意什麼?

以爲畫直擊靈魂,歡迎點贊在看轉發

本文使用 mdnice 排版

相關文章
相關標籤/搜索