週六晚上八點半突然接到了騰訊PCG的面試電話,還處於一臉懵逼的狀態,簡歷投的是WXG,然後莫名其妙被PCG撈起來了,然後記得提前批應該已經在三月份過去了,四月份應該是正式批了吧,但又沒有參加筆試,然後就莫名其妙參加電話面試了,面試時間大概一個小時。話不多說,面經奉上。
一、自我介紹
二、聊項目,說一下印象比較深刻的一些地方
三、因爲項目是跟數據庫相關的,之後就問了很多Mysql的問題
1、mysql底層存儲數據結構
答了B+樹和原理。
2、mysql索引的種類
B+樹索引、哈希索引、R-Tree索引、全文索引。
3、mysql的事務管理,如何設計一個事務系統
這個不太清楚,從事務四個特性ACID來答得。
四、有一個項目裏面用到了redis,然後又問了redis的問題
1、redis和mysql的區別
2、redis爲什麼快
五、寫代碼,給一個只包含ascii字符的字符串,計算每個字符出現的次數
這個很簡單,用了HashMap
六、接着代碼問了HashMap底層原理
jdk1.8前:數組+鏈表
jdk1.8後:數組+鏈表/紅黑樹
七、ConcurrentHashMap底層原理
jdk1.8前:分段鎖
jdk1.8後:sychronized+CAS,對每個鏈表頭節點或者紅黑樹根節點進行同步
八、接着ConcurrentHashMap問了CAS原理
比較交換,用的是硬件底層的CPU指令CAS,相當於無鎖,減少了線程上下文帶來的開銷。
九、Java其他的一些併發數據結構
原子類、讀寫鎖、信號量等。
十、問了阻塞隊列及其具體的實現有哪些
ArrayBlockingQueue、LinkedBlockingQueue等。
十一、AQS原理,如何保證併發
十二、web安全方面的問題,常見的web攻擊手段有哪些
答了xss和js腳本注入。
十三、對加密算法的瞭解
瞭解不多,就沒細問了。
十四、提問環節