1. 程式人生 > >零基礎學習一年,拿到BAT三家offer(Java崗)

零基礎學習一年,拿到BAT三家offer(Java崗)

str object tcp的三次握手 href 網站 自信 反轉 hashcode jdk

引言

1、本文沒有公眾號和博客推廣,請放心

2、Java後臺開發的經驗,其他崗位沒有借鑒意義

3、純發經驗攢人品,不裝不宣傳,有問題留言大家一起討論,互幫互助!!

4、個人學習方法,並不一定適合每個人。不喜歡看視頻學習的就不用繼續往下看了。

5、 由於讀研都是自己擠時間的,過程不表,實驗室的內容就沒敘述了。

一面(電話)(50分鐘)面的CSIG下面的騰訊雲,技術棧是Java,不過幾乎不咋問Java。

1. 算法題:六七道,都是劍指offer難度
2. 半小時項目介紹 & 問答
3. 分布式相關:rpc原理、微服務架構
4. 海量數據問題:套路題
5. 計網:傳輸層、網絡層(必須要非常熟,ping的原理,tcp的三次握手、四次揮手、擁塞控制。UDP的不可靠、一對一、一對多)

6. 操作系統:虛擬內存、段式、頁式、進程調度算法
7. 數據一致性: 分布式數據一致性、緩存數據一致性
8. Java相關:線程池、HashMap、CopyOnWriteArrayList
9. Redis相關:復制原理、持久化原理
10. 雜談:最近看什麽書,實習地點。

二面(85分鐘)

1. 算法題:最長不重復字串
2. 半小時鐘項目介紹 & 問答
3. 操作系統:Linux的namespace(不會)、進程線程、線程通信方式、進程通信方式
4. 計算機網絡:傳輸層和網絡層,因為我項目做了鏈路層,也講了一下。
5. Java相關: 線程池
6. 數據庫相關: 一條連表查詢語句。數據庫索引原理
7. 海量數據問題: 套路題

8. 雜談:介紹了部門業務

三面(電話) (20分鐘)

1. 應該是大老板面試了,問的都很哲學:技術背景、學習方法、項目介紹
2. 問了一些簡單技術問題。主要考察邏輯表達和整體的素質。
2. 雜談:介紹了部門業務

hr(電話)(15分鐘)

1. 家庭情況
2. 面騰訊原因,還有面其他公司麽
3. 興趣愛好
4. 業務介紹
5. 口頭offer

百度是去年找日常實習的面經,面了兩個部門,整理了一下

信息中心

一面

  1. 算法:字符串反轉 、 倒著打印鏈表(為什麽用遞歸比用棧差?) 、 單例模式
  2. 線程start 、 run方法區別
  3. 可以不通過構造函數創建對象嗎? object.clone() 反序列化
  4. volatile關鍵字
  5. Spring AOP原理(cglib 和 JDK的動態代理實現有什麽區別?)
  6. 重寫equals方法,為什麽一定要重寫hashcode方法?
  7. 字符串 == 比較。輸出true還是false;
  8. 看了七八個程序,然後問輸出什麽?
  9. HashMap 能不能存儲 null 能,放在第一個格子裏?concurrentHashMap 能不能存儲 null?
  10. 分布式系統設計:現在有一個方法,可以給10臺服務器調用,如何統計一天內10臺電腦調用的次數和?
  11. 分布式鎖的設計:每天早上8:00輸出前一天的業務報表發到老板郵箱。如果現在有10臺服務器,如果設計這個定時任務?
    法1:分布式鎖。法2:通過外部發來一個http請求,傳給ngnix,通過ngnix自動進行分配到某一臺服務器上。

二面

  1. 你對哪方面知識比較自信?
  2. HashMap初始容量多少?(16)為啥要設計初始為16?如果傳入容量10會怎麽樣?(還是會構建16容量的);
  3. 知道什麽異常?(說幾個)
  4. http的狀態碼說幾個。403是什麽狀態?
  5. String有什麽方法?
  6. list,set集合在iterator輸出的時候能刪去值嗎?
  7. SimpleDateFormat是線程安全的嗎?
  8. 手寫左連接。
  9. 聚合函數有哪些?

三面

  1. 算法題:數組A和數組B,求 A並B - A交B;(說了幾種,好像不滿意不是最優解)
  2. 算法題:矩陣搜索(說完之後問優化,沒想到,提示二分搜索);
  3. SSM的運作流程,說說你做的項目難點。
  4. GET POST請求,url裏面的參數
  5. 說說索引,如果對每一列都建索引有什麽不好?
  6. 白盒測試、黑盒測試
  7. Linux會嗎?

鳳巢

一面

  1. 算法題:手寫堆排序
  2. Spring IOC原理 AOP原理,如何利用AOP實現日誌,寫過嗎?
  3. Spring bean創建的方法 註解 @Service xml配置 @bean
  4. Java反射原理?
  5. SpringBoot 裏面 @bean 解釋一下
  6. Java內存模型和運行時數據區
  7. Spring 中事務@Tranctional,出現異常回滾是怎麽實現的
  8. 數據庫MVCC原理
  9. 樂觀鎖和悲觀鎖概念
  10. 悲觀鎖的實際例子。 select * from table for update ...
  11. 樂觀鎖實際上有沒有加鎖?
  12. 用兩個線程去操作數據庫,樂觀鎖具體是什麽實現的?演示一遍,畫一畫
  13. 數據庫常用存儲引擎,區別,鎖範圍。
  14. 寫過單純的非web項目的 Spring工程, 用main實現的嗎?例子。
  15. SSM 三層技術架構的總體流程
  16. @component @service @controller 三個區別
  17. mybatis中 # 和 $ 的區別?哪個會出現SQL註入?
  18. JVM 新生代,老年代。survival是不是在任意時刻都只有一塊有對象?
  19. JVM 垃圾收集器了解哪些?

二面

  1. 算法題: 實現一個四則運算計算器(兩個棧 + 優先級) , 冒泡排序
  2. 輸入一個網站的全過程。從計算機網絡到服務器內部技術實現流程。
  3. 日常怎麽學習。

###頭條面試

一面

1. 算法題:二分搜索相關
2. 概念題:解釋 分布式、微服務、負載均衡、高可用
3. http是有狀態還是無狀態? TCP是有狀態還是無狀態?
4. 客戶端禁用cookie怎麽辦? 你說的實現方式安全嗎?
5. SSL,http和https,https是有狀態還是無狀態?
6. String為什麽設計成final不可變? 是怎麽實現不可變的?
7. 自己能實現一個不可變的類嗎?
8. equals 和 hashcode 為什麽要一起重寫?如果不重寫hashcode會出現什麽問題?
9. hashmap插入的時候,哈希沖突解決? 查找的時候,哈希沖突怎麽解決?
10. hashset是怎麽實現的? hashmap是怎麽實現hashset的?
11. 多線程:並發和並行,原子類,CAS操作
12. mysql的索引:B+樹底層實現?B樹的底層實現?為什麽要用B+樹而不用B樹?
13. 最左前綴匹配具體是怎麽實現查找的?最左前綴匹配用了B+樹的哪些特性?
14. (a,b,c)聯合索引,為什麽不能單用(b),而一定要用(a,b)?B+樹是怎麽實現的?
15. 什麽是幻讀,不可重復讀?這些概念是在事務內還是事務外? 事務內
16. mysql怎麽實現可重復讀?設置了可重復讀隔離級別底層是怎麽實現的? (MVCC)
17. 了解MVCC嗎?怎麽實現的?什麽是快照讀?快照讀能讀取到最新的嗎?快照讀和當前讀的區別?
18. synchronized和reentrentlock哪個效率高?

二面

1. 算法:實現一個緩存隊列 ,二叉樹的鏡像
2. 進程和線程的區別?內存管理說一下你的了解。進程調度算法。
3. 為啥B+樹最後葉子節點需要用鏈表相連接? 便於區間查找
4. TCP狀態轉換圖,畫一下。
5. 操作系統I/O模型了解嗎?epoll模型了解嗎?
6. CopyOnWriteArrayList的相關特性?
7. ArrayList遍歷的時候能刪除元素嗎? 刪除的時候會報什麽異常?

三面

1. 算法題: (1)樹的節點最大距離(2)區間覆蓋 例 [1 3] [2 5] [3 6]能否覆蓋[2 6]
2. Linux相關命令。
3. 手寫SQL,join

零基礎學習一年,拿到BAT三家offer(Java崗)