#軟件開發(fā)筆面經(jīng)#**項目:**你的項目里redis都用了那些數(shù)據(jù)結構 set zset hash表,少說了個bitsmap。zset底層原理,解釋下跳表。redis中set,zset,hash表 的區(qū)別。消息隊列的作用,除了異步還有什么,解耦削峰填谷。加入消息隊列會增大系統(tǒng)的負載,當時沒有想其他的方案來替換消息隊列嗎?沒,很多地方要用到,接著問還有什么地方用到消息隊列?訂單微服務支付成功給課程微服務加入課表,那么我如果強烈要求實時,不用消息隊列怎么實現(xiàn)?項目中還用到了spring cloud的feign實現(xiàn)不同微服務調用,還可以通過rpc框架。說一下消息隊列的原理消息如何實現(xiàn)有序? 這個只答了使用消息序號,還有使用單一消費者、分區(qū)隊列、消息序號、延遲消費和事務消息Arraylist擴容為什么是1.5倍,答了可能跟負載因子有關,答錯了,應該是,減少數(shù)組復制的開銷,性能和內(nèi)存利用率的一個折中。學校:你的研究方向在你研究方向取得的一個最重大的突破或者成果你用技術解決過生活中的一個問題**八股:**接口,抽象方法,內(nèi)部類有什么區(qū)別 這個只有點忘記了,面試官提示在什么場景下會用到抽象類在后端返回給前端數(shù)據(jù)的時候,如何選擇arraylist,linkedlist,set這種java內(nèi)存模型,java對象的生命周期 這個忘了: Java對象的生命周期包括創(chuàng)建、應用、不可見、不可達、收集、終結和空間重分配等階段。線程池解釋,線程池你常用的阻塞隊列是什么?為什么不用無界的,無界的阻塞隊列會有什么問題?看過線程池底層源碼嗎?底層源碼沒看過。堆內(nèi)存的分布,垃圾回收機制以及區(qū)別cpu高負載如何解決問題?沒答全,top→進程pid→top -hp→ 線程pid→jstackcpu高負載可能是哪些原因造成的?這個答錯了,答的死鎖,應該有死循環(huán),頻繁的GC操作,上下文切換過于頻繁等。