邁入2020年,我們開始了嶄新的一年,也要學會跟過去告別。對於2019年我的個人總結,唯有2個字:可惜!實際上,在2019年末之際,我去騰訊面試了一波,卻卡在了第三面,主要是關於“鎖”方面的面試題沒有答得太好,不過並不氣餒,今年春節比以往來得早一些,所以做好準備,春招二戰,我也相信自己是沒有太大的問題的。
下文的內容主要是分享一下我面試騰訊的一個面試題,以及我個人面試過後的一個知識梳理和總結。內容包括了許多的學習資料和文檔,有需要的朋友直接私信我【騰訊】即可免費領取~
騰訊Java崗面經:3面被掛,全敗在了“鎖”上
騰訊三面核心面試題:
- 進程和線程有什麼區別?進程之間的通信方式有哪些?線程呢?
- 什麼是死鎖,如何避免死鎖,死鎖和飢餓有什麼關係?可以給我手寫一個產生飢餓的情況嗎?如何避免死鎖,銀行家算法知道嗎?
- 怎麼設置一個key的過期時間?
- redis中的哈希槽你知道吧?
- 那他和一致性哈希有什麼區別呢?
- 一致性哈希裡的虛擬節點是什麼?
- 你用了分佈式鎖,那分佈式鎖有哪些實現方式?都有哪些優缺點?
- Synchronized和Lock哪個更好?
- HashMap中的get()方法是如何實現的?
- HashMap可以用在哪些場景?
- JVM,垃圾回收機制,內存劃分等
- SQL優化,常用的索引?
- 兩個10G的文件,裡面是一些url,內存只有1G,如何將這兩個文件合併,找到相同的url?
- 1000個多併發線程,10臺機器,每臺機器4核的,設計線程池大小。
- 代碼題:兩個有序數組,數組中存在重複數字,合併成一個有序數組,去除重複數字。
- 什麼情況會出現雪崩,以及如何應對?
- 負載均衡的原理
- 數據庫事務屬性
- 與同事溝通的時候,如果遇到衝突瞭如何解決?
- 工作中覺得哪方面欠缺?
騰訊面試題答案:
面試必備之“鎖”集合
01 面試必備之樂觀鎖和悲觀鎖
- 說一下什麼是樂觀鎖?什麼是悲觀鎖?
- 簡單描述一下悲觀鎖和樂觀鎖的使用場景
- 說一下樂觀鎖常見的實現方式
- 樂觀鎖有什麼缺點嗎?
- CAS與Synchronized的使用情景
02 面試必備之分佈式鎖
- 為什麼用分佈式鎖?
- 基於Redis實現分佈式鎖(實現原理)
- 基於zookeeper實現分佈式鎖
- 講講分佈式鎖的實現與應用場景
- 講一講分佈式鎖應該具備的條件
- Redis分佈式鎖如何續期?
- 為什麼用了分佈式鎖還出現超賣?
03 面試必備之MySQL鎖
- MySQL 中有哪幾種鎖?
- 說一下鎖的優化策略
- 什麼是鎖?說一下基本類型
- 如何加表鎖?
- 說一說MyISAM的併發鎖
- InnoDB鎖
- 說一下行鎖的實現
- 什麼是死鎖?鎖等待?如何優化這類問題?通過數據庫哪些表可以監控?
04 一個讀寫鎖面試題
- 一個Spring Bean類中有一個服務地址信息的成員變量,這個bean類中成員函數會根據服務地址調用其接口,同時這個服務地址信息可能會在運行時被用戶修改,這種情況下是否存在線程安全問題?
- 那有哪些方法解決這個問題?
- 簡單講一下Java讀寫鎖,你會怎麼用?
- 你知道Java讀寫鎖實現原理嗎?
面試題答案:
制定複習計劃,備戰春招,二戰騰訊,定拿offer
這次面試騰訊沒有拿到好的結果,實際上也在我的意料之中,表面是被“鎖”給搞暈了,實際上還是自己的知識儲備不足,因此準備春招二戰,一定要有一個系統性的學習計劃,把知識都要複習到位,做到查漏補缺。
(一)Java面試手冊
這份Java面試手冊,一共整理了350道一線大廠Java崗的核心面試題,基本上各個知識面都包括了,刷完這本面試手冊,差不多就能夠對大廠喜歡問什麼,做到心中有數了。
- 性能優化面試專欄(Tomcat+JVM+Mysql)
- 微服務架構面試專欄(SpringCloud+SpringBoot+Dubbo)
- 併發編程高級面試專欄
- 開源框架面試題專欄(Spring+SpringMVC+MyBatis)
- 分佈式面試專欄(分佈式限流+分佈式通訊+分佈式數據庫)
(2)閱讀學習筆記
關於一些技術知識點,實際上光看書本或面試題是很難加深理解的,所以我們平日可以閱讀一些大佬們寫的學習筆記。目前,我手上也整理了一些,這裡以Redis筆記和SpringBoot筆記為例吧。
- Redis學習筆記:
簡單來說redis就是一個數據庫不過與傳統數據庫不同的是redis的數據是存在內存中的所以存寫速度非常快,因此redis被廣泛應用於緩存方向。另外, redis也經常用來做分佈式鎖。redis 提供了多種數據類型來支持不同的業務場景。除此之外, redis支持事務、持久化、 LUA腳本、LRU驅動事件、多種集群方案。
這份Redis學習筆記,實際上對學習Redis是很有幫助的,能夠幫助你加快對Redis 的理解和應用。
- Spring Boot學習筆記
相信小夥伴們在使用 Spring 或 SpringMVC 的過程中,或多或少會被各種配置問題所牽絆,這些配置不僅徒增工作量,而且在跨平臺部署時容易出現問題。
因此,Spring Boot 應運而生,它集成了大量常用的第三方庫配置(例如 Jackson、JDBC、MongoDB、Redis、Mail 等等),這些第三方庫幾乎都可以零配置的開箱即用,可以幫助我們快速搭建一個項目,從而讓開發者能夠更加專注於業務邏輯。
這份Spring Boot學習筆記,能夠讓我們快速瞭解到SpringBoot,從入門到進階,深入理解。
(3)理清思路,提升信心
無論是學習還是面試,都要在自己腦海中有一個清晰的思路,也就是至少自己有一個知識性的脈絡在腦海中,這樣也能夠提升自己的自信心,應對面試官的種種。
關於思路,我自己也是整理了一個比較清晰的脈絡大綱,無論是現在的複習也好,還是日後工作以後不斷學習來提升自己,都會按照這個大綱一步一步,當我全部掌握時,相信這個臺階上升的不只一星半點。
- JVM和性能優化為例
寫在最後
馬上春招就要來臨,實際上春招的競爭力要比秋招大的多,畢竟還有考研考公大軍的注入,因此要想在春招中拔得頭籌,唯有提升自己的競爭力。
最後提醒一次:以上所有的資料均可以免費分享,有需要的朋友,只需要你轉發+評論此文,關注我,然後私信【騰訊】即可獲取關鍵詞~
閱讀更多 技術宅愛Java 的文章