面試相關經驗
Interview | JavaGuide(Java面試 + 學習指南)
同學1
7次面試 編程題匯總:
有序鏈表找中位數 (飛書1面)
m個有序數組合并 (飛書1面)
海量數據尋找TopK(口述) (飛書1面)
兩個有序數組取 TopK (飛書2面)
無序數組有多少個和為K的子數組 (飛書2面)
lc 147 (技術中臺3面)
Lc 142 (技術中臺3面)
Lc 210 (技術中臺1面)
Lc785 (技術中臺2面)
lc 321 (飛書3面)
lc 188(飛書3面)
K個鏈表反轉 (技術中臺1面)
手寫arrayblockingqueue (飛書4面)
手寫單例模式dcl (飛書4面)
賽🐎 25 匹馬 , 5 跑道,找top5(口述)(技術中臺3面)
飛機問題 (飛書3面)
藍眼睛問題(飛書4面)
面試題
飛書 一二面:
個人經歷
項目
了解NIO嗎
IO模型 select和epoll的區別
攔截器,***和過濾器區別
RESTful 和SOAP
get / post 區別
怎么跨域
csrf 預防,http/dns 劫持
rabbititmp怎么解決漏發,多發? 持久化怎么整?
redis 和mysql區別
mysql設計表時怎么去提高性能
對稱加密和非對稱加密,RSA 具體說說
DES 和 AES 區別
HTTPS 證書是啥?加密內容?
可以偽造證書嗎?中間人攻擊能預防嗎?
tcp怎么計算時間,RTT和RTO ?
UDP 偽首部多大,有啥,有啥用?
常見的擁塞控制算法 (BBR,RENO,BIC-tcp)
數據庫范式 ?BCNF?第四第五范式?
索引失效什么情況?
怎么設計索引?
DBA不知業務的情況下怎么設計索引?
limit優化
聯合索引最多多少個字段
數據庫的事務隔離級別
mvcc機制聊一下
linux指令 Kill原理
tcp 異常處理,什么時候有RST,
什么時候有PSH URG 的包
爬蟲對抗的解決方案
團隊成員矛盾怎么辦
怎么說服產品
怎么說服測試
和組長分歧怎么辦
做題
飛書 三四面:
項目相關
Http1.1 特點,缺點
http2.0 特點,缺點
http3.0 特點,缺點
QUIC 特點,缺點
對頭阻塞 tcp http的角度,分別講一下
BBR 怎么快,怎么實現,和之前的有什么區別
tcp 選項有什么
tcp 首部多大
分片和分段區別
tcp半打開和半關閉的區別
udp 存在的意義
怎么線程通訊
多線程的創建,怎么退出線程,退出進程
線程池的參數
線程池的狀態
死鎖怎么預防
出現了死鎖怎么辦
銀行家怎么實現
進程調度CFS
時鐘調度算法
慢查詢優化
ThreadLocal場景應用,spring里有用到嗎
JVM 構架,垃圾回收
怎么設計一個日志系統
磁盤調度算法有什么
linux 文件系統架構
inode 有什么信息
LINUX 怎么找文件
Linux 怎么看端口,
看tw狀態的進程load average 是什么,怎么看,怎么分析
linux 怎么做io檢測
linux 不同發行版有什么區別
你覺得 linux 比win 好在哪
字節序,網絡字節序是什么
需要主導項目怎么辦
怎么設計測試用例
怎么總結工作
優點缺點
興趣愛好
做題
面完三天掛(感謝信)。
被技術中臺撈起,一二面都挺開心
一二面:
tcp,http,https等常見問題
項目人均秒殺,面試官不耐煩了
Innodb 是如何解決幻讀的
redis cluster
16384為啥?
netty 模型
netty 優點
nginx 鯨群怎么解決
rabbitmq組建
dns欺騙怎么辦? arp欺騙?CSRF攻擊?xss攻擊?syn flood攻擊?應對方法
Spring Boot啟動流程以及生命周期
https://blog.csdn.net/u011277123/article/details/104476683
spring 事務怎么實現
ipc哪個快
B樹和b+樹分別有啥作用
JVM的內存模型
GC回收器JVM調優參數配置
Java中各種鎖聊一下,CAS機制
volatile有用過么,底層實現
數據庫 有什么log ?
mvcc 的作用
事務的實現原理
做題
三面 :
40 min 基本都是之前一二面的問題,什么鬼,太敷衍了,和字節無緣了,沒出結果但是看出來很敷衍了,再見
ipc哪個快 (2天前問過了啊)
B樹和b+樹分別介紹 (2天前問過了啊)
Java中各種 鎖 (2天前問過了啊)
CAS (2天前問過了啊)
volatile (2天前問過了啊)
同學2
http://t.csdnimg.cn/EeYpk
同學3
一面(4.22)
1.TIME_WAIT和CLOSE_WAIT區別
2.大量連接處于CLOSE_WAIT是什么原因
3.IO多路復用
4. ReentrantLook和Synchronized的區別
好像都比較常規,記不太清了。
智力題:25個馬5個賽道 最少比幾次得出最快的五只馬
算法題:拓撲 排序,力扣中課程表題目
二面(4.24)
聊了項目
1.事務隔離級別
2.MVCC機制
3.b+樹索引和哈希索引的優劣
好像都比較常規,記不太清了。
算法題:dfs判斷 島嶼數量,力扣上有
三面(4.24)
考察計算機網絡和操作系統較多
1.HTTP的請求方法有哪些
2.HTTP的狀態碼
3.HEAD方法有什么作用
4.HTTP各版本的不同
5.擁塞控制流程
6.RESTful
7.操作系統調度的方式
8.線程和進程區別
9.Redis主從復制
編程:實現設計模式中簡單工廠模式
算法題:給定一個數字n=34563,一個數組{5,4,1,3},求由數組中的數字組成的小于n的最大整數
(沒用遞歸做,我是先找n中小于該位的最大整數,如果找到,則后續數字直接取最大,如果最終沒有找到,就取比n位數-1的最大數字)
同學4
一面
1.自我介紹
2.操作系統進線程
3.Java中你認為哪些地方涉及到了線程通信,原理是啥
4.申請一塊內存的詳細過程
5.虛擬內存
6.缺頁中斷,頁面置換算法
7.磁盤調度算法
8.三次握手,四次揮手(為什么三次,四次)
9.泛洪攻擊怎么解決?
9.HTTP存在的問題,HTTPS的SSL握手過程
10.Redis單線程為什么這么快,然后深挖底層epoll(為什么單個線程監聽多個套接字不會阻塞)
11.Redis單線程潛在風險點
12.實際業務中怎么刪除bigkey
13.Redis的淘汰算法(LRU算法與常規LRU哪里不同)
14.然后就只剩15分鐘不到了,給了道hard:lc224
15.反問
二面
1.自我介紹
2.講講項目,思考業務是否可以優化
3.項目中提到了使用并行來提升效率,有沒有思考過并行后帶來的問題
4.Redis持久化
5.提到了AOF重寫,具體講一下
6.mysql索引優化
7.MVCC
8.算法題:lc44
三面
1.簡單介紹
2.為什么兩篇SCI,要轉開發
3.講一下你對Saas的理解
4.聊聊mysql的權限控制,怎么給新加入團隊的同學開數據庫權限
5.索引設計要考慮什么問題
6.了解分布式嗎
7.用過ngnix反向代理嗎
8.redis指令
9.講一下寫時復制
同學5
字節跳動-后端飛書-日常實習
7-1 一面(42min)
飛書面飛書,面試官提前上線,十分友好,第一次面試,嘴都瓢了。一面非常愉快,問的也比較基礎。
-
自我介紹
-
到崗、實習時間,下學期有課嗎?
-
項目
-
涉及多少張表
-
負責前端還是后端(全棧)
-
前后端分離API接口如何實現鑒權(JWT)
-
項目中Redis使用,如何解決Redis宕機后系統不可用(腳手架集成;集群、封裝Redis工具類并捕獲異常,查數據庫)
-
-
TCP 三次握手,每一次握手是為了做什么,為什么需要第三次握手
-
OSI 七層模型
-
應用層、傳輸層和網絡層常用協議
-
數據鏈路層傳輸什么信號(MAC幀,PPP幀?說了兩個)
-
HTTP 和 HTTPS 的區別(HTTPS=HTTP+SSL,加密傳輸,對稱/非對稱加密)
-
JWT包括那幾個部分(head、payload、signature)
-
數據庫三大范式
-
事務特性
-
事務隔離級別
-
MQ 消息重復消費解決方案(忘了,應該是設計業務冪等性、防重表)
-
Redis 緩存擊穿、緩存穿透和緩存雪崩區別
-
Spring AOP實現原理,為什么要使用AOP(動態代理,jdk,cglib;代碼重用巴拉巴拉)
-
抽象類與接口區別
-
屏幕共享,手寫快排(3min)
-
寫一個 Controller,RESTful API,接受兩個int 參數,返回相加結果,講解涉及注解原理
-
介紹部門情況
-
反問
-
學習方向
-
表現如何(應該問怎么改進的)
-
轉正?
-
什么時候有結果
-
7-5 二面(53min)
又是一個很和藹的面試官!我講了幾分鐘才發現麥沒開。。。
-
自我介紹(暗示面試官Java不錯)
-
項目
-
系統設計,包含模塊
-
Redis用來干什么(腳手架集成;緩存頁面、登錄過期校驗、JWT……)
-
腳手架為什么要用Redis實現登錄呢?(……SpringSecurity+JWT實現鑒權)
-
為什么用Redis作為緩存,不使用 應用服務器(Tomcat/JVM)作為緩存?(布吉島,舍友跟我說:應用服務器是本地緩存、Redis服務器是分布式緩存)
-
-
為什么要同時重寫equals和hashcode(Java開始了,八股文,順便講了一下HashMap)
-
Java NIO學過嘛,講講三大組件?(Selector、Channel、Buffer)
-
Buffer緩沖區原理(Buffer對象,數組/內存塊,直接寫入,寫入讀出Channel過程)
-
Java常見設計模式(單例、工廠、模板方法、動態代理……)
-
聽過策略模式嗎?(聽是聽過……嘿嘿,面試官說用的最多)
-
實現線程安全的單例模式注意點?(存在問題,雙重檢測,volatile、synchronized、私有構造器)
-
如何中斷一個正在運行的線程?(interrupt,忘記說volatile變量了)
-
如果不響應interrupt呢?(volatile變量?中斷synchronized方法是一個意思嗎?,面試官給我舉了個例子:迅雷暫停就是中斷,讓我思考思考)
-
MyBatis如何實現數據庫字段與JavaBean間映射(I/O流讀取XML文件,其中包含類全限定名,通過反射實例化對象)
-
如果是你實現,會使用什么技術實現數據庫映射到JavaBean?(反射,面試官一直嗯嗯嗯我也不知道對不對)
-
反射是是什么?不要說怎么使用,底層實現原理(運行期動態獲取/操作類;面試官解答:類型技術,Class作為實例模板,反射獲取Class類模板)
-
ThreadLocal用過嗎?用來干什么(線程本地變量,線程隔離;靜態內部類ThreadLocalMap、Entry繼承弱引用)
-
你說說為什么ThreadLocal會內存泄漏?(ThreadLocal弱引用,Java結束了)
-
HTTP請求響應包含什么內容(請求行/頭/體、響應行/頭/體)
-
跨域問題(協議/域名/端口號其中有不同,就存在跨域;@CrossOrigin、網關)
-
數據庫為什么要第一范式?(不會,后來查了下,不滿足就不是關系型數據庫?)
-
聯表查詢join原理,兩個表join為例(沒了解,Nested-Loop Join)
-
你自己如何實現呢?(兩張表=兩個對象,各取一個相同字段,等值連接,求并結果集)
-
搞個題吧,歸并排序(屏幕共享,嘿嘿,最后邊界問題直接跟面試官講思路了,嗚嗚)
-
我這邊問題完了,你有要問的嗎?
-
表現如何,有什么改進?(Java是OK的,數據庫有欠缺,基礎不夠扎實)
-
什么時候出結果(這兩天)
-
總結教訓,數據結構、算法一定要加強練習,數據庫理論實戰都要深入。
同學6
一面:
首先聊項目嗎,聊了差不多二十分鐘
問是了解Java多一些還是Python多一些
Java
final,和static關鍵字,作用于哪些地方,分別產生了什么效果
線程池的幾個參數
線程池中的keepAliveTime參數主要是作用于哪里的,還有一些關于線程池的基本知識
創建線程的幾種方法,分別在哪方面具有效果
synchronized和volatile還有retrantlock之間的區別
編程題:
反轉鏈表手寫
還有一個求數組中兩個數字相乘,求最大值,并打印出來
二面:
聊項目,聊了20分鐘,一些東西給我問卡了
聊學Java,看過哪幾本書
然后說Java并發編程主要講了哪些事情,我說保證線程安全,然后原子性,有序性,可見性一直聊
然后說到有序性,讓我舉個例子什么的,問用什么保證有序性,還有volatile修飾i的情況下,兩個線程并發訪問i會產生什么效果,這個得分情況答,沒回答太好
然后說手寫消費者生產者模型吧,我說不會,
又聊了下消費者生產者模型的事情(應該注意的點,沒怎么答上來)
然后問操作系統
問我對操作系統的了解,沒了解多少,就跟他簡單說了下,進程之間的通信方式
Http和Https的區別 SSL的對稱加密和非對稱加密作用于哪里的??(沒答上)
手寫打印二叉樹的深度,遞歸和非遞歸都寫了,并解釋非遞歸的代碼的含義
Throwble中的Error和Exception的區別
三面:
問的東西都很基礎,但是面試官很嚴肅,一時間不知道怎么辦好了。就不寫了,總之就很基礎。
同學7
1. 個人背景介紹
本人19年畢業,雙非碩士,軟件工程專業,1年工作經驗(銀行外圍系統,又老又久,無高并發場景)Java后端開發,無實習經歷,通過BOSS找的字節獵頭。
剛開始說是被飛書拒絕了,然后被教育撈起來了。
2. 一面
時間:9月24日 1小時
很基礎的知識點考察,涵蓋了IO,網絡等基本的理論知識,數據庫和多線程會結合個人的語言和使用過的軟件框架做提問,一面很基礎,基本都答上來
hashmap原理,底層實現,線程不安全的原因,怎么擴容,底層數組大小為什么是2^n,擴容死鎖產生的過程(不會), 1.7和1.8的區別
concurrenthashmap原理,結構,為什么線程安全,分段鎖怎么實現
synchronized和lock區別, volatile原理了解嗎
Lock底層實現原理, AQS怎么實現的
Redis數據類型,刪除策略,持久化方案,分布式方案,redis cluster方案原理(沒看具體的架構內容),分布式一致hash知道嗎?
IO模型:IO模型有哪些,select和epoll原理,select的缺點(搞Java,如果沒有高并發場景的經歷,IO這塊也就不怎么了解了,基本都是復習多線程的知識去了)
OSI模型(五層和七層)
介紹下tcp和udp
tcp握手,揮手
慢啟動,快速重傳,開蘇恢復
time-wait介紹下
innodb特點
innodb索引物理結構
主鍵,回表,覆蓋索引
與MyISAM對比
算法:三數之和,要求給出時間復雜度和空間復雜度,剛開始暴力三重循環,后來要求優化
3. 二面
時間:9月31日 1小時
結合項目經歷提問,面試官會結合簡歷和一面結果適當補充一些基本理論知識和常用框架的提問,個人對kafka不太了解,可能面試官不太滿意
項目經歷:分庫分表,不借助中間件怎么實現,MyCat了解過嗎(不了解),分庫和分表怎么選擇?結合項目場景討論劃分規則
其他 項目經歷,反射、注解的原理,有用過線程池嗎?Java線程池有哪幾種?Java線程池的構造參數?什么是阻塞隊列?Java有哪些阻塞隊列?
https建立連接的過程是怎樣的?
了解中間人攻擊和跨域攻擊嗎?
進程與線程的區別和聯系
進程的切換發生了什么
線程的切換為什么比進程的切換代價小
進程通信的方式和舉例
kafka的產生背景和在項目中的使用
topic和partition,partition是干什么的
Consumer Group是干什么的
怎么將partition分配到多個broker上?怎么動態調整partition和broker的數量?
rebalance什么時候發生,rebalance過程(這個真不知道)
Linux的shell用的怎么樣?grep、sed、awk有用過嗎?(只會grep...)
怎么監控機器性能?
Linux文件系統了解嗎?軟連接和硬連接?
矩陣順時針旋轉90°和逆時針旋轉90° 股票買賣(幾個變種問題沒做出來,但是基本的應該還行)
4. 三面
時間:10月9日 1小時
主要是系統設計,發散性問題, 另外,面試官吐槽了我的簡歷,建議簡歷老老實實套模板,不要花里胡哨,程序員的簡歷要整潔明了
kafka如何做到高可用(不會,面試官不太滿意,因為我的工作經歷沒有互聯網高并發,而且kafka的確沒怎么看)
設計熱榜,動態展示top K
N個線程交替打印,怎么實現,寫出來,跑一下
設計長短地址轉換
同學8
垃圾一本。
接到電話之后約了兩周以后,中間給我發了一封感謝信,我以為面試取消了,結果當天又收到了面試,沒有準備直接GG,水平太差還被以為是大二的。
1.說一下GC
大概說了gc就是垃圾回收,當一個對象不再被強引用或者軟引用內存不夠的時候會被gc回收。
大概有標記清除算法,沿著每個對象的引用鏈標記每個被引用的對象,遍歷完成后回收沒有被標記的對象。
缺點是回收之后內存和內存之間會產生很多碎片。
解決這個問題就是把內存分為兩半,每次清楚后將存活的對象全部放到另一半去來消除碎片,代價是內存變為了原來的兩半。
再一個就是分為了老年區、新生區,我講到這就被打斷說可以了。
2.hashmap
先問我了解過哈希表嗎,我說閱讀過源碼,如果是問問題我還挺有自信的,結果直接讓我簡單實現一個哈希表,我有點蒙了,看了很久都有點忘了,只記得一些重要的特性例如紅黑樹的調整,閾值等等,當然這里不需要寫出紅黑樹和擴容等等,但中間停停想想花了很長時間,最后面試官都等不及讓我直接講一下思路。
3.tcp udp
先問我了解過網絡嗎,我說了解過,之后問我tcp和udp有什么區別。
我回答tcp可以保證數據的完整性和安全,在數據丟失的時候會重發,udp主要是盡最大的努力傳輸數據,對數據的完整性和安全性不做保證,但是速度更快,所以對數據容錯比較大的時候可以使用udp,對數據敏感的使用tcp。
接著問我tcp怎么保證數據安全
本人因為一些原因科班知識比較薄弱,沒有回答出來,汗顏。。
4. Linux
os用過,但是用的Ubuntu圖形界面,對指令不熟悉。
5.Redis
redis是自學的,沒有在項目里用過,但是我還是準備挺多的,結果只問了一個問題。
問了redis緩存穿透是什么的
答:緩存穿透是個別攻擊用戶大量訪問不存在的數據,導致redis里都查詢不到,訪問直接落在服務器,讓服務器壓力大增以至崩潰的情況。
問:怎么解決這個問題?
答:設立一個黑名單,將在短時間內大量訪問無效數據的ip放在黑名單內,并禁止他的其他訪問
或者使用布隆過濾器來過濾訪問
不知道是回答得不好還是什么,沒有繼續詢問直接跳到下個問題了
6.內核態和用戶態
其實os我自認為學的還可以,結果直接給我干碎了。
這個我和同班同學核實了,我確實記得我的os老師沒有講過這方面的內容,我回顧ppt和考試都沒有看到這個,我直接麻了,只能說不太清楚。
被直接質疑是不是還沒上操作系統,麻了。
7.線程和進程
線程就是一個運行中的程序,是資源分配和調度的基本單位。
線程之間共享字元和溝通很麻煩。
線程是進程的一部分,共享線程的資源,溝通起來比較方便。
進程開銷大,線程開銷小。
8.寫一個排序算法
前面心態崩掉了,這里直接放棄了。。
9. 對項目有什么印象深刻的地方
?