java面試——2021校招字節跳動後臺面經

HashMapConcurrentHashMap 的區別?(不會,當時太菜了)

線程池(當時就說了怎麼用,連底層結構都答不上來,太丟人了)

數據庫的鎖(不會)

數據庫的三範式(不會,還瞎扯了一堆)

線程和進程的區別

緩存(簡單說了下瀏覽器緩存的作用)

算法題目1:隨機鏈表複製(秒了)

給定一個鏈表,節點數據結構如下,除了包含一個next指針,還包含一個rand指針,隨機指向鏈表的某一元素,或者爲空指針,實現一個函數,深複製這個鏈表,要求空間複雜度O(1)

算法題目2:滑動窗口算法(卡了蠻久)

給定m個不重複的字符[a,b,c,d], 以及一個長度爲n的字符串tbcacbdata, 問能否在這個字符串中找到應該長度爲m的連續子串,使得這個子串剛好由上面m個字符組成,順序無所謂,返回任意滿足條件的一個子串的起始位置,未找到返回-1。比如上面的這個例子,acbd,返回3。要求優化到O(N)

期間問了項目的問題:緩存一致性問題、MySQL樂觀鎖;問之前實習的一些問題,在實習的時候學到了什麼。

Redis 的過期策略、緩存雪崩、惰性刪除

MySQL索引、b+樹,爲什麼不用哈希map來存儲?

最左前綴原則  (A,B,C)的聯合索引,去查 B = 0 和 C = 0,還會使用索引嗎?

不會走索引,因爲在數據庫中的遵從的是最左前綴的原則。

SQL,求第二大的薪水

 select salary from emloyee order by salary desc limit 2;

 select max(Salary) as SecondHighestSalary  from Employee where Salary<(select max(Salary) from Employee);

1.使用子查詢和限定條件

select (

          select DISTINCT  Salary   //去重

           from Employee 

           ORDER BY Salary DESC       //降序排列

         limit 1 offset 1  //從第一條數據讀取(offset 1 ,但不包括第一條),往後讀取一條數據(limit 1 ),即第二條;

) as SecondHightestSalary;

給定一個排序鏈表,刪除所有重複的元素只留下原鏈表中沒有重複的元素。

 

懟項目(質疑我的緩存一致性操作,然後我口嗨用消息隊列解決併發問題)

手寫單例模式-懶漢模式

JAVA的鎖、樂觀鎖悲觀鎖(視頻卡出翔,面試官基本聽不到我說啥,然後說我們來先做題吧)

編程題1:最大島問題(我想了個分治,思路不對,直接爆炸,面試官還是不錯的,給我換了道題)

編程題2:股票利潤1(還要求寫測試用例,要求跑通)

編程題3:股票利潤2(可以買賣多次)(這兩題都秒了,面試前一晚正好想刷一刷dp的題,就刷了這兩題,所以說大家想到什麼一定要去學!!!)

TCP的四次揮手

HTTPS

分代回收在整個GC中處於什麼位置?

自我介紹、懟項目、Redis緩存

LRU在操作系統怎麼實現?

HashMap擴容底層實現

Git 底層實現;如何解決衝突?

設計題:關注系統怎麼設計?

              可以關注、取關別人

             可以查看關注、粉絲列表

             可以查看關注、粉絲數

快速判斷兩個人的關係

如果有大V(粉絲數很多),你的系統有沒有問題?或者說如果覺得沒問題,爲什麼沒問題?(存儲上,使用上)

編程題1:股票利潤1

編程題2:股票利潤3(可以買賣兩次)(查了下,就是股票利潤3,hard)

最近有看什麼書?接下來什麼打算?

先自我介紹一下。

講一下websocket?和http有什麼區別?

講到了建立連接,說說TCP三次握手。

第三次握手失敗會怎樣?

爲什麼需要三次?兩次可以嗎?

提到了SYN洪泛攻擊,講一下

瞭解HTTP/2.0嗎?

瞭解HTTPS嗎?

講一下nginx

談到了跨域,講一下跨域

談到了CORS,我們一般怎麼解決?

nginx在項目中怎樣部署負載均衡呢?

32機器,2億個整數中找不重複數字?

快速排序的原理、時間複雜度、空間複雜度

一個進程中,多個線程會共享哪些資源?

       A. 棧 B. 數據段 C. 寄存器 D.線程ID

多線程中以下哪些操作需要同步操作?(說白了就是哪些操作不具備原子性)

        A. x=y B. x++ C.x=x+1 D. x=1

如何輕量級實現進程間通信?(答了信號量,講了下實現)

中斷了解嗎?CPU在中斷時會幹嘛?

動態鏈接和靜態鏈接的比較(給了幾個選項,不太記得了,很簡單的)

設計題:設計高效的數據結構來實現下面的兩個方法

解釋下這兩個方法,ADD來加入一個事件,RUN來執行事件,有點像緩存這些事件,到點了把執行完的事件刪除。

問輸入www.qq.com然後按下回車,瀏覽器作爲客戶端會發生什麼?

瀏覽器的DNS緩存 -> 操作系統的DNS緩存 -> host文件 -> 本地DNS解析服務器,TCP三次握手 -> http傳輸數據 -> html文件、css文件渲染

第二次輸入www.qq.com,和第一次有什麼不同?

DNS緩存、http/1.0下長鏈接複用、靜態文件緩存、攜帶cookie

四次揮手(從狀態到報文控制標誌位去講具體流程)

爲什麼要四次、2MSL的作用

用過什麼抓包軟件?(wireshark、fiddle)

腦筋急轉彎:1到10層電梯,每層電梯門口有1顆鑽石,從1樓坐電梯到10樓,只能拿一次,怎麼拿才能拿到最大的鑽石?(我放棄治療,想不出來。)

項目上線了嗎?講項目上線後遇到過什麼BUG

問實習經歷

TCP和UDP的區別?

UDP不可靠的話,爲什麼可以用來發送文件?

TCP怎麼做流量控制?

發送窗口、接收窗口、擁塞窗口三者的關係

擁塞窗口的變化規律

HTTPS的S是什麼意思?

HTTPS的作用是什麼?

爲什麼要用fiddler?

fiddler能看到HTTPS中的內容嗎?

什麼是時間換空間?有例子嗎?

你覺得跟身邊的同學比起來你的優點是什麼?

有沒有解決過複雜的問題?

什麼是樂觀鎖?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章