更新時間:2020-01-07 14:42:40 來源:動力節點 瀏覽2781次
1、如何從FutureTask不阻塞獲取結果
get(long timeout,TimeUnit unit),超時則返回
輪詢,先通過isDone()判斷是否結束,然后調用get()
2、 blockingqueue如果存放了比較關鍵的數據,系統宕機該如何處理
其實這個是一個開放性問題,不同的人會給出不同的答案,大家可以自行發揮,也可以討論一下更好的答案。
將隊列持久化,比較麻煩,需要將生產數據持久化到磁盤,持久化成功才返回,消費者線程從磁盤加載數據到內存阻塞隊列中,維護消費offset,啟動時,根據消費offset從磁盤加載數據
加入消息隊列,保證消息不丟失,生成序列號,消費冪等,根據消費進程決定系統重啟后的生產狀態
3、簡單介紹下springMVC和struts2的區別有哪些?
1) springmvc的入口是一個servlet即前端控制器,而struts2入口是一個filter過慮器。2)springmvc是基于方法開發(一個url對應一個方法),請求參數傳遞到方法的形參,可以設計為單例或多例(建議單例),struts2是基于類開發,傳遞參數是通過類的屬性,只能設計為多例。3)Struts采用值棧存儲請求和響應的數據,通過OGNL存取數據, springmvc通過參數解析器是將request請求內容解析,并給方法形參賦值,將數據和視圖封裝成ModelAndView對象,最后又將ModelAndView中的模型數據通過reques域傳輸到頁面。Jsp視圖解析器默認使用jstl。
4、 NIO與傳統I/O的區別
1)節約線程,NIO由原來的每個線程都需要阻塞讀寫變成了由單線程(即Selector)負責處理多個channel注冊(register)的興趣事件(SelectionKey)集合(底層借助操作系統提供的epoll()),netty bossgroup處理accept連接(沒看明白為什么bossgroup設置多個thread的必要性),workergroup處理具體業務流程和數據讀寫
2)NIO提供非阻塞操作
3)傳統I/O 以流的方式處理數據,而 NIO 以塊的方式處理數據,NIO提供bytebuffer,分為堆內和堆外緩沖區,讀寫時均先放到該緩沖區中,然后由內核通過channel傳輸到對端,堆外緩沖區不走內核,提升了性能
5、list中存放可重復字符串,如何刪除某個字符串
1)調用iterator相關方法刪除
2)倒刪,防止正序刪除導致的數組重排,index跳過數組元素問題
以上就是動力節點Java培訓機構小編介紹的“2020年Java初級開發面試題”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
相關推薦
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習