引言
1、本文沒有公衆號和博客推廣,請放心
2、Java後臺開發的經驗,其他崗位沒有借鑑意義
3、純發經驗攢人品,有問題留言大家一起討論,互幫互助!!
4、個人學習方法,並不一定適合每個人。
5、 學習都是自己擠時間的,過程不表。
背景
本人本科一本雙非墊底的那種,碩士211。本碩電子通信,完全0基礎,轉行一年。
起步
1、實話說,剛決定轉行的時候完全零基礎一開始真的啥也不會,甚至不知道怎麼去學習。的確,計算機資源很多,自學足夠的但是完全不知道怎麼去用去學習啊!
啥是leetcode?
啥是github?
啥是IDEA?
各種疑問,怎麼操作啊?點哪個啊?身邊沒有人教啊。
有時候真的只是懂的人點兩下的事情,自己搞要一下午。媽個雞,第一個月真是完全浪費時間,差點原地放棄。
調整戰略
1、戰略上堅定信心:既然那麼多人都可以做程序員,甚至高中生都可以,別人可以我肯定也可以。
2、戰術上制定計劃:培訓班看視頻我也看視頻咯,對,就是各種視頻。(現在想想自己甚至就是培訓班出來的)
視頻的好處是快速入門,猶如身邊有老師手把手教,一步一步操作給你看。很重要一點,培訓班老師上課非常認真,真的是面向高中生水平講課。完全不用擔心有卡頓,看不懂。記得某門課老師還在講啥是二進制和排列組合,,,,
這樣,我先把面經給大家:
騰訊雲
面的CSIG下面的騰訊雲,技術棧是Java,不過幾乎不咋問Java。
一面(電話)(50分鐘)
-
算法題:六七道,都是劍指offer難度
-
半小時項目介紹 & 問答
-
分佈式相關:rpc原理、微服務架構
-
海量數據問題:套路題
-
計網:傳輸層、網絡層(必須要非常熟,ping的原理,tcp的三次握手、四次揮手、擁塞控制。UDP的不可靠、一對一、一對多)
-
操作系統:虛擬內存、段式、頁式、進程調度算法
-
數據一致性: 分佈式數據一致性、緩存數據一致性
-
Java相關:線程池、HashMap、CopyOnWriteArrayList
-
Redis相關:複製原理、持久化原理
- 雜談:最近看什麼書,實習地點。
二面(視頻)(85分鐘)
-
算法題:最長不重複字串
-
半小時鐘項目介紹 & 問答
-
操作系統:Linux的namespace(不會)、進程線程、線程通信方式、進程通信方式
-
計算機網絡:傳輸層和網絡層,因爲我項目做了鏈路層,也講了一下。
-
Java相關: 線程池
-
數據庫相關: 一條連表查詢語句。數據庫索引原理
-
海量數據問題: 套路題
- 雜談:介紹了部門業務
三面(電話) (20分鐘)
-
應該是大老闆面試了,問的都很哲學:技術背景、學習方法、項目介紹
-
問了一些簡單技術問題。主要考察邏輯表達和整體的素質。
- 雜談:介紹了部門業務
hr(電話)(15分鐘)
-
家庭情況
-
面騰訊原因,還有面其他公司麼
-
興趣愛好
-
業務介紹
- 口頭offer
阿里
各部門簡歷面
-
volatile的底層如何實現,怎麼就能保住可見性了?
-
三個線程如何實現交替打印ABC
-
線程池有哪些創建方式和安全性問題
-
有哪些線程池的類型
-
線程池中LinkedBlockingQueue滿了的話,線程會怎麼樣
-
線程池的底層原理和實現方法
-
線程之間的交互方式有哪些?有沒有線程交互的封裝類 (join)
-
算法:堆排序、棧實現隊列、反轉鏈表
-
Java鎖機制,都說一下~
-
除了@ResponseBody,controller層如何標準返回給前端所要的數據類型?你會怎麼實現?
-
異常捕獲處理
-
Spring MVC的原理和流程
-
HashMap和ConcurrentHashMap哪個效率更高?爲什麼?
-
Redis的緩存淘汰策略有哪些?
-
Java內存模型說一下
-
mybatis如何進行類型轉換
-
mybatis的xml有什麼標籤
-
MySQL鎖機制
-
如何修改linux的文件權限
-
jvm的回收算法
-
你會怎麼設計數據庫表結構
-
數據庫有哪些索引?
-
如何防止sql注入
-
抽象類和接口有什麼不同
-
myql間歇鎖的實現原理
-
future的底層實現異步原理
-
SpringBoot Starter原理
-
rpc原理
-
多個服務端上下線怎麼感知
-
緩存和數據一致性,怎麼處理。流式計算
-
多線程講一下,FutureTask
-
Java和mysql的鎖介紹,樂觀鎖和悲觀鎖
-
分佈式一致性講一講
-
分佈式鎖的實現方式,zk實現和redis實現哪個比較好
-
多點登陸怎麼實現
-
把樂觀鎖加在數據庫上面,怎麼實現
-
項目介紹
-
降級處理hystrix瞭解過麼
-
兩次點擊,怎麼防止重複下訂單
-
ioc原理詳細講講,源碼看過麼
-
靜態代理和動態代理的區別
-
JUC說說你知道的東西
- B+樹的葉子節點
菜鳥
一面
-
Java內存模型
-
full gc怎麼觸發
-
gc算法
-
高吞吐量的話用哪種gc算法
-
ConcurrentHashMap和HashMap
-
JDK8的stream的操作
-
volatile原理
-
有參與過開源的項目
-
項目介紹
-
線程池原理,拒絕策略,核心線程數
-
1億個手機號碼,判斷重複
-
是否有寫過小工具
- 單元測試介紹一下,多模塊依賴怎麼單元測試。Mockito
二面
-
項目介紹
-
dubbo、netty介紹原理
-
限流算法
-
zk掛了怎麼辦
-
秒殺場景設計,應付突然的爆發流量
-
redis的熱點key問題
-
redis的更新策略(先操作數據庫還是先操作緩存)
-
分佈式數據一致性
-
一致性哈希
-
消息隊列原理介紹(不太會)
-
full gc問題,怎麼排查
-
jvm的回收策略
-
ClassLoader原理和應用
-
註解的原理
-
數據庫原理,數據庫中間件,索引優化
-
aop原理和應用
-
大數據相關,MapReduce
-
機器學習有了解麼?
-
Java的新技術,以及技術最新進展
- 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 垃圾收集器瞭解哪些?
二面
算法題: 實現一個四則運算計算器(兩個棧 + 優先級) , 冒泡排序
輸入一個網站的全過程。從計算機網絡到服務器內部技術實現流程。
日常怎麼學習。
頭條
去年找的面經,整理了一下。三面算法沒寫出來,掛了。
一面
-
算法題:二分搜索相關
-
概念題:解釋 分佈式、微服務、負載均衡、高可用
-
http是有狀態還是無狀態? TCP是有狀態還是無狀態?
-
客戶端禁用cookie怎麼辦? 你說的實現方式安全嗎?
-
SSL,http和https,https是有狀態還是無狀態?
-
String爲什麼設計成final不可變? 是怎麼實現不可變的?
-
自己能實現一個不可變的類嗎?
-
equals 和 hashcode 爲什麼要一起重寫?如果不重寫hashcode會出現什麼問題?
-
hashmap插入的時候,哈希衝突解決? 查找的時候,哈希衝突怎麼解決?
-
hashset是怎麼實現的? hashmap是怎麼實現hashset的?
-
多線程:併發和並行,原子類,CAS操作
-
mysql的索引:B+樹底層實現?B樹的底層實現?爲什麼要用B+樹而不用B樹?
-
最左前綴匹配具體是怎麼實現查找的?最左前綴匹配用了B+樹的哪些特性?
-
(a,b,c)聯合索引,爲什麼不能單用(b),而一定要用(a,b)?B+樹是怎麼實現的?
-
什麼是幻讀,不可重複讀?這些概念是在事務內還是事務外? 事務內
-
mysql怎麼實現可重複讀?設置了可重複讀隔離級別底層是怎麼實現的? (MVCC)
-
瞭解MVCC嗎?怎麼實現的?什麼是快照讀?快照讀能讀取到最新的嗎?快照讀和當前讀的區別?
- synchronized和reentrentlock哪個效率高?
二面
-
算法:實現一個緩存隊列 ,二叉樹的鏡像
-
進程和線程的區別?內存管理說一下你的瞭解。進程調度算法。
-
爲啥B+樹最後葉子節點需要用鏈表相連接? 便於區間查找
-
TCP狀態轉換圖,畫一下。
-
操作系統I/O模型瞭解嗎?epoll模型瞭解嗎?
-
CopyOnWriteArrayList的相關特性?
- ArrayList遍歷的時候能刪除元素嗎? 刪除的時候會報什麼異常?
三面
-
算法題: (1)樹的節點最大距離(2)區間覆蓋 例 [1 3] [2 5] [3 6]能否覆蓋[2 6]
-
Linux相關命令。
- 手寫SQL,join
一些補充
學習方式:
我比較喜歡視頻快速入門-->書籍慢慢深入-->再動手實操。
個人認爲,學習不分方式,適合自己的就是好的,有些人比較歧視培訓班出來的,我關注的某技術大佬就是培訓班出來的,感覺非常強。
搜索資源:
有些人學的不夠快是找的資源方式不對。
多向師兄師姐打聽(這點就不用我多介紹了)
多加技術QQ羣討論(大家沒有好環境的話,可以找我,我拉你)
有什麼問題,歡迎留言溝通,在這裏也祝大家都能找到一個合適的工作~
特別聲明:本文素材來源於網絡,僅作爲分享學習之用,如有侵權,請聯繫刪除!