什么是分布式鎖?在回答這個問題之前,我們先回答一下什么是鎖。
普通的鎖,即在單機多線程環境下,當多個線程需要訪問同一個變量或代碼片段時,被訪問的變量或代碼片段叫做臨界區域,我們需要控制線程一個一個的順序執行,否則會出現并發問題。
如何控制呢?就是設置一個各個線程都能看的見的標志。然后,每個線程想訪問臨界區域時,都要先查看標志,如果標志沒有被占用,則說明目前沒有線程在訪問臨界區域。如果標志被占用了,則說明目前有線程正在訪問臨界區域,則當前線程需要等待。
這個標志,就是鎖。
在單機多線程的java程序中,我們可以使用堆內存中的變量作為標志,因為多線程是共享堆內存的,堆內存中的變量對于各個線程都是可見的。
阿里巴巴一面
- 自我介紹這個就不說了,開頭必問的
- 說一下StringBuilder 和 StringBuffer
- Spring bean加載,實例化的過程
- Spring AOP源碼看過嗎
- java內存模型說一下
- 如果給你一個map,里面有很多很多對象,那么這個map存放在哪
- 了解GC算法嗎?
- 說一下CMS垃圾回收器
- B+樹和B樹的區別?
- haspmap底層講一講
- ConcurrentHashMap的底層實現?
- CAS是硬件實現還是軟件實現?
- volatile是鎖嗎?
- 淘寶和京東的區別,你覺得是什么?
項目相關:
- 介紹一下你簡歷上寫的項目?自己主要做了什么?
- 你覺得項目里給你最大的挑戰是什么?遇到了什么問題?如何解決的?從中學到了什么?
- 項目的架構圖能畫一下不?
- 覺得項目有哪些地方可以改進完善?
- 如果我有很多字段都需要建立索引,怎么辦?
- Mysql的存儲引擎,你用的是哪種?
代碼面:
- 設計一個多線程打印程序,第i個線程只打印i-1數字,比如第1個線程打印數字0,第2個線程只打印數字1,依次類推。任意給定一個數字序列,比如3382019835830,能夠使用該程序打印出來。
- 快速找出一個數組中的兩個數字,讓這兩個數字之和等于一個給定的值,為了簡化起見,我們假設這個數組中肯定存在至少一組符合要求的解。
阿里巴巴二面
- 又聊了項目
- 你說到你項目里用了UDP,你為什么不用TCP
- 那你詳細說一下TCP和UDP的區別
- 數據庫用的是什么(MySQL)
- 那你的數據量是多少(幾百萬)
- 那你這幾百萬條,做了什么查詢優化(索引)
- 怎么建的索引
- 為什么用時間和id來做索引?
- 數據庫的隔離級別
- 知道什么是主從復制嗎?
- 你說一下建立索引的規則
- JAVA類加載機制(加載驗證準備解析初始化,又說到雙親委派模型)
- 線程池所有參數講一講
- ConcurrentHashMap的底層實現
- RPC用過嗎?
- 消息隊列呢?
**總結:**前面問了一些基礎性的東西,然后就一直往深了問,問的也基本是有關項目的問題,因為之前做的本身就是一個小項目,也并沒有什么亮點,二面結束我就回去等通知了,結果也肯定是涼涼了。
汲取教訓,突破底層技術
其實每次面試不管成功還是失敗,都是一次很好的學習機會,所以一定要認真對待每次面試,從面試中總結經驗,在面試中掃盲,然后回家進行查漏補缺。
首先就是在面試結束后梳理自己的知識體系,這份大綱是目前一線大廠主流的技術,也是面試的重點,大家可以對照梳理自己的知識點,用來掃盲最好不過了
梳理完知識點后結合面試所問到的內容,大致可以看出是哪些不足,然后針對這些知識點再一步一步的深度挖掘,從這位讀者的面試看出,他應該可以深度學習一下數據庫方面的知識,那接下來我也就跟大家主要的分享一下關系型數據庫——MySQL的深度進階。
MySQL深度進階
MySQL基礎內容(稍微帶過)
- MySQL基本介紹
- MySQL架構組成
- MySQL存儲引擎簡介
- MySQL安全管理
- MySQL備份與恢復
MySQL性能優化
- 影響MySQLServer性能的相關因素
- MySQL數據庫鎖定機制
- MySQL數據庫Query的優化
- MySQL數據庫Schema設計的性能優化
- MySQLServer性能優化
- 常用存儲引擎優化
MySQL架構設計
- MySQL可擴展設計的基本原則
- 可擴展性設計之MySQLReplication
- 可擴展性設計之數據切分
- 可擴展性設計之Cache與Search的利用
- MySQLCluster
- 高可用設計之思路及方案
- 高可用設計之MySQL監控
總結
以上是字節二面的一些問題,面完之后其實挺后悔的,沒有提前把各個知識點都復習到位。現在重新好好復習手上的面試大全資料(含JAVA、MySQL、算法、Redis、JVM、架構、中間件、RabbitMQ、設計模式、Spring等),現在起閉關修煉半個月,爭取早日上岸!!!!
下面給大家分享下我的面試大全資料,如果你也有需要,可以戳這里即可免費領取我的這份復習資料
- 第一份是我的后端JAVA面試大全
后端JAVA面試大全
- 第二份是MySQL+Redis學習筆記+算法+JVM+JAVA核心知識整理
MySQL+Redis學習筆記算法+JVM+JAVA核心知識整理
- 第三份是Spring全家桶資料
中…(img-KnZMvItQ-1624083060471)]
MySQL+Redis學習筆記算法+JVM+JAVA核心知識整理
- 第三份是Spring全家桶資料
[外鏈圖片轉存中…(img-FgYmfehv-1624083060472)]
MySQL+Redis學習筆記算法+JVM+JAVA核心知識整理