騰訊Java崗面試,被“鎖”給搞暈了?這樣複習,春招二戰沒問題

邁入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和性能優化為例

寫在最後

馬上春招就要來臨,實際上春招的競爭力要比秋招大的多,畢竟還有考研考公大軍的注入,因此要想在春招中拔得頭籌,唯有提升自己的競爭力。

最後提醒一次:以上所有的資料均可以免費分享,有需要的朋友,只需要你轉發+評論此文,關注我,然後私信【騰訊】即可獲取關鍵詞~