寫在前面
今天是我來杭州找工作後參加的第一次現場面試,也算是工作以來第一次正式的技術面試,超級超級緊張!兩個面試官貌似都是做中介軟體和資料庫程式設計方向的,問的很多我都不太擅長,兩輪下來四個字總結那就是生無可戀。今天憑記憶總結一下,調整心態繼續征程吧!
問題整理
一、演算法
- 程式碼實現二叉樹的資料結構。
- 若二叉樹是XX(畫了一個),前序遍歷是什麼?如何程式碼實現?(寫了個遞迴)還有什麼其他的實現方式?
二、資料庫
- 寫SQL語句。有一個表三個欄位“姓名”、“科目”、“成績”,寫一個查詢語句查出至少三科成績為90分以上的學生姓名。
- 有A和B兩個表,join後會有多少種結果,SQL怎麼寫?
- 資料庫三正規化是什麼?
- ER圖。
- 索引。
- 事務是什麼?事務的特徵是哪些,如何理解?四種事務隔離級別是什麼?如何理解?四種隔離級別分別會發生什麼情況?在平時應該如何選擇?
- 死鎖是什麼?引發死鎖的情況。四個條件分別是什麼,如何理解?如何處理死鎖?
- 如果發現一條SQL查詢語句執行時間很長,應如何排查解決?
- 在業務中價錢欄位用什麼資料型別?
- 資料庫主從複製的原理?為什麼用主從複製,解決了什麼問題?
- 資料庫的鎖是怎麼實現的。
三、Redis
- 持久化的方式
- 是單執行緒的嗎?
- 在專案中用的是Redis叢集嗎?
四、Java
- ThreadLocal是什麼?什麼時候會選擇存在ThreadLocal中?為什麼?
- 確保執行緒安全的方法有哪些?
- synchronized加在靜態方法上和非靜態方法上區別是什麼?
- 想要實現下單後30分鐘未支付關閉訂單,如何實現?(我說了定時任務,面試官說還有其他方式嗎?大概是想要問Timer類吧?)
- 什麼是原子操作?
- 執行緒之間如何共享資料?
- CountDownLatch和CyclicBarrier分別是什麼?
- synchronized和ReentrantLock的區別?ReentrantLock叫可重入鎖,可重入是什麼意思?
- java有哪些Collection?
- 什麼時候用陣列,什麼時候用ArrayList?
- 異常處理機制:Throwable、Exception、Error的關係。
五、Spring相關
- IOC是什麼?
- Bean的生命週期
- 如果一個jar包過於老舊,maven庫上沒有,如何在springboot中使用?(大概是這意思,然而我並不知道)
- springboot是什麼?為什麼用springboot?
六、其他
- 三層架構和mvc架構的區別。
- 當你走在馬路上,要去坐公交車,發現要坐的公交車從你旁邊經過,你會怎麼做?(這是道智力題嗎?黑人問號臉?)
七、秒殺場景
- 分散式Session是如何實現的?
- 如何優化?除了分流和加快取,還有哪些思路?
- 超賣問題
八、職業規劃
- 自己的職業規劃是什麼?
- 平常通過什麼方式提升技術能力
九、簡歷上專案的各種問題
總結
面試官除了問是什麼,更多的是想知道我對這些的理解、實現原理和實際應用,也確實暴露出自己很多問題,最後就是一種被問蒙了的狀態。坦然接受結果,繼續努力吧!