好久沒有來更新我的面試題了,不知道關(guān)注我的小伙伴有沒有失聯(lián)翱皆蟆?袖瞻!呼叫司致!
好了開始我們今天的正題分享!
1虏辫、如何從FutureTask不阻塞獲取結(jié)果
get(long timeout,TimeUnit unit)蚌吸,超時則返回
輪詢锈拨,先通過isDone()判斷是否結(jié)束砌庄,然后調(diào)用get()
2、 blockingqueue如果存放了比較關(guān)鍵的數(shù)據(jù)奕枢,系統(tǒng)宕機(jī)該如何處理
其實(shí)這個是一個開放性問題娄昆,不同的人會給出不同的答案,大家可以自行發(fā)揮缝彬,也可以討論一下更好的答案萌焰。
將隊列持久化,比較麻煩谷浅,需要將生產(chǎn)數(shù)據(jù)持久化到磁盤扒俯,持久化成功才返回,消費(fèi)者線程從磁盤加載數(shù)據(jù)到內(nèi)存阻塞隊列中一疯,維護(hù)消費(fèi)offset撼玄,啟動時,根據(jù)消費(fèi)offset從磁盤加載數(shù)據(jù)
加入消息隊列墩邀,保證消息不丟失掌猛,生成序列號,消費(fèi)冪等眉睹,根據(jù)消費(fèi)進(jìn)程決定系統(tǒng)重啟后的生產(chǎn)狀態(tài)
3荔茬、簡單介紹下springMVC和struts2的區(qū)別有哪些?1) springmvc的入口是一個servlet即前端控制器废膘,而struts2入口是一個filter過慮器。2)springmvc是基于方法開發(fā)(一個url對應(yīng)一個方法)慕蔚,請求參數(shù)傳遞到方法的形參丐黄,可以設(shè)計為單例或多例(建議單例),struts2是基于類開發(fā)孔飒,傳遞參數(shù)是通過類的屬性孵稽,只能設(shè)計為多例。3)Struts采用值棧存儲請求和響應(yīng)的數(shù)據(jù)十偶,通過OGNL存取數(shù)據(jù)菩鲜, springmvc通過參數(shù)解析器是將request請求內(nèi)容解析,并給方法形參賦值惦积,將數(shù)據(jù)和視圖封裝成ModelAndView對象接校,最后又將ModelAndView中的模型數(shù)據(jù)通過reques域傳輸?shù)巾撁妗sp視圖解析器默認(rèn)使用jstl狮崩。
4蛛勉、 NIO與傳統(tǒng)I/O的區(qū)別
1)節(jié)約線程,NIO由原來的每個線程都需要阻塞讀寫變成了由單線程(即Selector)負(fù)責(zé)處理多個channel注冊(register)的興趣事件(SelectionKey)集合(底層借助操作系統(tǒng)提供的epoll())睦柴,netty bossgroup處理accept連接(沒看明白為什么bossgroup設(shè)置多個thread的必要性)诽凌,workergroup處理具體業(yè)務(wù)流程和數(shù)據(jù)讀寫
2)NIO提供非阻塞操作
3)傳統(tǒng)I/O 以流的方式處理數(shù)據(jù),而 NIO 以塊的方式處理數(shù)據(jù)坦敌,NIO提供bytebuffer侣诵,分為堆內(nèi)和堆外緩沖區(qū),讀寫時均先放到該緩沖區(qū)中狱窘,然后由內(nèi)核通過channel傳輸?shù)綄Χ硕潘常淹饩彌_區(qū)不走內(nèi)核,提升了性能
5蘸炸、list中存放可重復(fù)字符串躬络,如何刪除某個字符串
1)調(diào)用iterator相關(guān)方法刪除
2)倒刪,防止正序刪除導(dǎo)致的數(shù)組重排搭儒,index跳過數(shù)組元素問題
未完待續(xù)~