碩士211,零基礎自學Java,一年拿到BAT三家offer(附面經)

引言

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

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

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

4、個人學習方法,並不一定適合每個人。

5、 學習都是自己擠時間的,過程不表。

背景

本人本科一本雙非墊底的那種,碩士211。本碩電子通信,完全0基礎,轉行一年。

起步

1、實話說,剛決定轉行的時候完全零基礎一開始真的啥也不會,甚至不知道怎麼去學習。的確,計算機資源很多,自學足夠的但是完全不知道怎麼去用去學習啊!

啥是leetcode?

啥是github?

啥是IDEA?

各種疑問,怎麼操作啊?點哪個啊?身邊沒有人教啊。

有時候真的只是懂的人點兩下的事情,自己搞要一下午。媽個雞,第一個月真是完全浪費時間,差點原地放棄。

調整戰略

1、戰略上堅定信心:既然那麼多人都可以做程序員,甚至高中生都可以,別人可以我肯定也可以。

2、戰術上制定計劃:培訓班看視頻我也看視頻咯,對,就是各種視頻。(現在想想自己甚至就是培訓班出來的)

視頻的好處是快速入門,猶如身邊有老師手把手教,一步一步操作給你看。很重要一點,培訓班老師上課非常認真,真的是面向高中生水平講課。完全不用擔心有卡頓,看不懂。記得某門課老師還在講啥是二進制和排列組合,,,,

這樣,我先把面經給大家:

騰訊雲

面的CSIG下面的騰訊雲,技術棧是Java,不過幾乎不咋問Java。

一面(電話)(50分鐘)

  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. 問了一些簡單技術問題。主要考察邏輯表達和整體的素質。

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

hr(電話)(15分鐘)

  1. 家庭情況

  2. 面騰訊原因,還有面其他公司麼

  3. 興趣愛好

  4. 業務介紹

  5. 口頭offer

阿里

各部門簡歷面

  1. volatile的底層如何實現,怎麼就能保住可見性了?

  2. 三個線程如何實現交替打印ABC

  3. 線程池有哪些創建方式和安全性問題

  4. 有哪些線程池的類型

  5. 線程池中LinkedBlockingQueue滿了的話,線程會怎麼樣

  6. 線程池的底層原理和實現方法

  7. 線程之間的交互方式有哪些?有沒有線程交互的封裝類 (join)

  8. 算法:堆排序、棧實現隊列、反轉鏈表

  9. Java鎖機制,都說一下~

  10. 除了@ResponseBody,controller層如何標準返回給前端所要的數據類型?你會怎麼實現?

  11. 異常捕獲處理

  12. Spring MVC的原理和流程

  13. HashMap和ConcurrentHashMap哪個效率更高?爲什麼?

  14. Redis的緩存淘汰策略有哪些?

  15. Java內存模型說一下

  16. mybatis如何進行類型轉換

  17. mybatis的xml有什麼標籤

  18. MySQL鎖機制

  19. 如何修改linux的文件權限

  20. jvm的回收算法

  21. 你會怎麼設計數據庫表結構

  22. 數據庫有哪些索引?

  23. 如何防止sql注入

  24. 抽象類和接口有什麼不同

  25. myql間歇鎖的實現原理

  26. future的底層實現異步原理

  27. SpringBoot Starter原理

  28. rpc原理

  29. 多個服務端上下線怎麼感知

  30. 緩存和數據一致性,怎麼處理。流式計算

  31. 多線程講一下,FutureTask

  32. Java和mysql的鎖介紹,樂觀鎖和悲觀鎖

  33. 分佈式一致性講一講

  34. 分佈式鎖的實現方式,zk實現和redis實現哪個比較好

  35. 多點登陸怎麼實現

  36. 把樂觀鎖加在數據庫上面,怎麼實現

  37. 項目介紹

  38. 降級處理hystrix瞭解過麼

  39. 兩次點擊,怎麼防止重複下訂單

  40. ioc原理詳細講講,源碼看過麼

  41. 靜態代理和動態代理的區別

  42. JUC說說你知道的東西

  43. B+樹的葉子節點

菜鳥

一面

  1. Java內存模型

  2. full gc怎麼觸發

  3. gc算法

  4. 高吞吐量的話用哪種gc算法

  5. ConcurrentHashMap和HashMap

  6. JDK8的stream的操作

  7. volatile原理

  8. 有參與過開源的項目

  9. 項目介紹

  10. 線程池原理,拒絕策略,核心線程數

  11. 1億個手機號碼,判斷重複

  12. 是否有寫過小工具

  13. 單元測試介紹一下,多模塊依賴怎麼單元測試。Mockito

二面

  1. 項目介紹

  2. dubbo、netty介紹原理

  3. 限流算法

  4. zk掛了怎麼辦

  5. 秒殺場景設計,應付突然的爆發流量

  6. redis的熱點key問題

  7. redis的更新策略(先操作數據庫還是先操作緩存)

  8. 分佈式數據一致性

  9. 一致性哈希

  10. 消息隊列原理介紹(不太會)

  11. full gc問題,怎麼排查

  12. jvm的回收策略

  13. ClassLoader原理和應用

  14. 註解的原理

  15. 數據庫原理,數據庫中間件,索引優化

  16. aop原理和應用

  17. 大數據相關,MapReduce

  18. 機器學習有了解麼?

  19. Java的新技術,以及技術最新進展

  20. Docker的原理

三面

1、全程項目

2、討論了一下數據庫表設計

四面

1、項目介紹

2、分佈式事務

3、Java三大特性

4、數據庫表設計

5、RPC原理

6、netty原理

7、降級策略和降級框架

HR

都是基礎問題

百度

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

信息中心

一面

算法:字符串反轉 、 倒着打印鏈表(爲什麼用遞歸比用棧差?) 、 單例模式

線程start 、 run方法區別

可以不通過構造函數創建對象嗎? object.clone() 反序列化

volatile關鍵字

Spring AOP原理(cglib 和 JDK的動態代理實現有什麼區別?)

重寫equals方法,爲什麼一定要重寫hashcode方法?

字符串 == 比較。輸出true還是false;

看了七八個程序,然後問輸出什麼?

HashMap 能不能存儲 null 能,放在第一個格子裏?concurrentHashMap 能不能存儲 null?

分佈式系統設計:現在有一個方法,可以給10臺服務器調用,如何統計一天內10臺電腦調用的次數和?

分佈式鎖的設計:每天早上8:00輸出前一天的業務報表發到老闆郵箱。如果現在有10臺服務器,如果設計這個定時任務?

法1:分佈式鎖。法2:通過外部發來一個http請求,傳給ngnix,通過ngnix自動進行分配到某一臺服務器上。

二面

你對哪方面知識比較自信?

HashMap初始容量多少?(16)爲啥要設計初始爲16?如果傳入容量10會怎麼樣?(還是會構建16容量的);

知道什麼異常?(說幾個)

http的狀態碼說幾個。403是什麼狀態? 

String有什麼方法? 

list,set集合在iterator輸出的時候能刪去值嗎? 

SimpleDateFormat是線程安全的嗎? 

手寫左連接。

聚合函數有哪些? 

三面

算法題:數組A和數組B,求 A並B - A交B;(說了幾種,好像不滿意不是最優解)

算法題:矩陣搜索(說完之後問優化,沒想到,提示二分搜索);

SSM的運作流程,說說你做的項目難點。

GET POST請求,url裏面的參數

說說索引,如果對每一列都建索引有什麼不好?

白盒測試、黑盒測試

Linux會嗎?

鳳巢

一面

算法題:手寫堆排序

Spring IOC原理 AOP原理,如何利用AOP實現日誌,寫過嗎?

Spring bean創建的方法 註解 @Service  xml配置  @bean

Java反射原理?

SpringBoot 裏面 @bean 解釋一下

Java內存模型和運行時數據區

Spring 中事務@Tranctional,出現異常回滾是怎麼實現的

數據庫MVCC原理

樂觀鎖和悲觀鎖概念

悲觀鎖的實際例子。 select * from table for update ...

樂觀鎖實際上有沒有加鎖?

用兩個線程去操作數據庫,樂觀鎖具體是什麼實現的?演示一遍,畫一畫

數據庫常用存儲引擎,區別,鎖範圍。

寫過單純的非web項目的 Spring工程, 用main實現的嗎?例子。

SSM 三層技術架構的總體流程

@component @service @controller 三個區別

mybatis中 # 和 $ 的區別?哪個會出現SQL注入?

JVM 新生代,老年代。survival是不是在任意時刻都只有一塊有對象?

JVM 垃圾收集器瞭解哪些?

二面

算法題: 實現一個四則運算計算器(兩個棧 + 優先級) , 冒泡排序

輸入一個網站的全過程。從計算機網絡到服務器內部技術實現流程。

日常怎麼學習。

頭條

去年找的面經,整理了一下。三面算法沒寫出來,掛了。

一面

  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

一些補充

學習方式:

我比較喜歡視頻快速入門-->書籍慢慢深入-->再動手實操。

個人認爲,學習不分方式,適合自己的就是好的,有些人比較歧視培訓班出來的,我關注的某技術大佬就是培訓班出來的,感覺非常強。

搜索資源:

有些人學的不夠快是找的資源方式不對。

多向師兄師姐打聽(這點就不用我多介紹了)

多加技術QQ羣討論(大家沒有好環境的話,可以找我,我拉你)

有什麼問題,歡迎留言溝通,在這裏也祝大家都能找到一個合適的工作~

特別聲明:本文素材來源於網絡,僅作爲分享學習之用,如有侵權,請聯繫刪除!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章