#軟件開發(fā)筆面經(jīng)#我好菜好菜好菜項目部分就不說了,只寫一點八股。上來先畫uml圖時序圖泳道圖。1、RPC服務(wù)中,服務(wù)調(diào)用方如何快速知道某臺機器宕機?2、本地緩存何時更新,如何判斷是不是需要更新?我說根據(jù)redis的某個業(yè)務(wù)key和version判斷追問,redis宕機了呢?答:從數(shù)據(jù)庫拿。追問數(shù)據(jù)庫扛不?。?、布隆過濾器誤判問題知道嗎?怎么解決?4、線程池為啥io密集型是2*核心數(shù)?答:也可以是n*核心數(shù),n是平均io耗時和平均計算耗時的比例。5、線程池如果不用阻塞隊列,就用arrayList,如何控制核心線程阻塞?6、線程池工作原理?線程池如何停止?停止后線程會停嗎?使用stop后不久立即返回了嗎,如何判斷線程池中任務(wù)完全結(jié)束再往下走呢?7、kafka丟消息如何發(fā)現(xiàn)?怎么處理?8、如何解決數(shù)據(jù)庫并發(fā)覆蓋問題?答:事務(wù)+鎖,鎖怎么實現(xiàn)?可以是數(shù)據(jù)庫鎖或者分布式鎖。分布式鎖如何實現(xiàn)?redis或zookeeper,redis宕機?redlock,redlock假如加鎖成功5臺機器加了3個,但主節(jié)點宕機,又恢復(fù)然后變成從節(jié)點,現(xiàn)在只剩兩個機器有紅鎖了,其他線程來不就又能加鎖了?紅鎖釋放如何釋放?9、場景:做一個系統(tǒng),監(jiān)控任何服務(wù)網(wǎng)絡(luò)異?;蛘叻?wù)內(nèi)部異常,或者bug,使之能夠在分鐘級別發(fā)現(xiàn)系統(tǒng)內(nèi)有任何運行性異常。答:使用aop加注解埋點,進入服務(wù)埋點,退出服務(wù)或異常埋點,通過traceId判斷鏈路異常。10、Springboot核心原理是什么?容器如何實現(xiàn)?容器結(jié)構(gòu)怎么設(shè)計?key是什么?value是什么?value類型是什么?可不可以用泛型?11、linux了解嗎?進程間通信?如果用tcp模仿http如何實現(xiàn)?如何處理http分割?答了分界符,還有其他方法嗎?答:tlv,問:不是有個contentLength嗎?不能用嗎?為什么要加length字段?反問:如何知道contentlength位置?讓我去翻源碼。12、如何保證你發(fā)出去的http請求都沒丟失,答:TCP保證。怎么保證的?ack+超時重傳+滑動窗口??熘貍髁私鈫??如果發(fā)送方發(fā)了1,2,3,4,5,6接收方接到1,2,4,5,6 ,ack返回什么,然后發(fā)送方發(fā)什么?如果3,4,5,6都發(fā),如何保證報文不重復(fù),答滑動窗口。13、一個公網(wǎng)ip可以同時被多臺機器共有嗎?答:不能同時擁有。問那你設(shè)置路由器dns時是不是8.8.8.8,全球都用這個,如果只有一臺機器不久炸了?答nat或反向代理?也不行,只有一臺機器。答:讓我思考一下。然后說自己慢慢思考吧,就這樣了。我把面試官氣炸了寄寄。面完5分鐘收到電話,說晚上約時間補一下算法。更新:晚上那個面試官說是二面,手撕兩道題1、給定三個字符串s1、s2、s3,判斷s3是否可以由s1和s2的字符交替組成,如: s1 = abc s2 = fdg s3 = abfdcg res = true2、給定一個鏈表和一個樹,判斷樹中是否包含從上到下的序列=鏈表內(nèi)容。