<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 長亮一面 視頻面試,時長1小時。 ## 總結 * 發現時間和能力不成正比,實力需要加強。 * 學習知識需要加深理解,不能只在表面或者靠背。 * 開源項目源碼需深入。 ### 開局自我介紹 面試官您好!我的名字叫xx,來自湖北武漢,軟件工程專業畢業。到目前為止,從事過2個行業,在浪潮做了5年電子政務,來平安做了1年人事行業。 ### 介紹最近的項目 HPaaS后端框架及IDE,參與后端框架設計,主導配套IDE的設計及實現。從代碼下載,代碼生成,代碼拖拽輔助,代碼編譯打包等功能實現,最后交由自動發布平臺通過流水線發布到k8s中部署。 ### 為什么離職? 一年內人事調動頻繁。 ### 為什么要用二叉樹? (為什么要用,其實就是在問優點) 數組插入太慢搜索快,鏈表查詢太慢插入快,二叉樹整合了二者的優點。 在樹中查找數據的速度和有序數組中查找一樣快,并且插入數據和刪除數據的速度和鏈表一樣。 ### Java并發有用到那些點 cas,volatile,synchronized,線程池等 (Future,Fork/Join等) ### volatile有什么特性 * 防止指令重排序(內存屏障實現的); * 保證變量在多線程(多核)可見性(當修改volatile變量時,虛擬機會給cpu發送一個信號告訴其他cpu這個變量已修改,當其他cpu調用這個變量時,就會先檢查是否有收到修改該變量的信號,有則重新從主存中讀取。volatile是無鎖的,類似于樂觀鎖的機制)。 ### 為什么用線程池? 多個任務需要并行執行,加快處理速度,提高系統吞吐;多線程方式會無法控制線程數量,且性能多浪費在線程創建和銷毀時;而使用線程池能解決這些問題。 因為線程創建和銷毀都會進行系統調用(用戶態和內核態來回切換,消耗資源),為了減少創建和銷毀的消耗,用線程池來管理線程,以及線程復用。 可參考:https://www.zhihu.com/question/41134816 1. 核心線程數(corePoolSize)不宜過多(若為3),線程池創建完后還沒有執行過任務時線程數是0。先執行1個任務,線程池會創建出來一個線程來執行該任務,此時線程數為1。 再執行第2個任務,線程池會創建第二個線程來執行該任務,此時線程數為2。且2個任務都執行完成,2個線程均空閑。 再執行第3個任務,線程池還是會創建第3個線程來執行該任務,此時線程數為3。 后續第4個任務,線程數已經達到了設置的核心線程數3,不會再創建,讓其中一個線程去執行該任務。 2. 又有很多任務來了,此時就需要一個工作隊列(WorkQueue)來讓任務排隊。(生產者消費者模式)工作隊列是一個有界的阻塞隊列,阻塞是指當隊列為空時,獲取任務的線程狀態是阻塞的(不占用cpu資源),等工作隊列有任務后,獲取任務的線程會被喚醒繼續運行。 3. *在 workQueue 已滿的條件下,如果當前線程池的線程數量 >= corePoolSize 且 <= maximumPoolSize,后續如果一直有其它線程丟任務進來,會一直創建線程,直到 maximumPoolSize。* ### 什么場景下用的呢 調度程序在網絡間傳送大文件,比如500M,傳輸接口限制每次只能發送4M大小的數據。 于是做分片,利用線程池并行發送分片數據。 ### 線程池里線程數擴縮容機制 始線程池里線程數是0,執行任務后,會創建到核心線程數大小。若工作隊列滿了,則創建到最大線程數大小。空閑后,則維護線程數到核心線程數大小。 ### 有線上環境問題處理的經驗嗎? 發現系統長時間運行后會內存溢出導致服務掛掉,后來發現是http調用工具里資源未釋放導致。 (是HttpClient嗎?需要關閉嗎?我回答要關閉) ### JVM類加載 加載,鏈接(驗證,準備,解析),初始化,使用,卸載。 ### JVM卸載一個類的要滿足什么前提條件 * 該類所有的實例都已經被回收。 * 加載該類的ClassLoader已經被回收。 * 該類對應的java.lang.Class對象沒有任何地方被引用。 ### 設計模式用了哪些 單例,適配器,觀察者,門面等。 分別說下是在什么場景下用的。 ### 設計模式6大原則 。。。。 ### 設計模式原則里的開閉原則是什么 。。。 ### IO模型有哪些 * BIO - 同步阻塞IO * NIO - 同步非阻塞IO * 多路復用器 select * poll * epoll * AIO - 異步IO ### 多路復用器是什么?帶來了什么好處? ### 為什么不用異步IO呢? ### CAP理論,你是如何理解的? ### ZK是CP還是AP什么的?為什么? ![](https://img.kancloud.cn/a0/16/a01650935de329e16bda226a2fab1799_1460x1212.png) ### 分布式鎖,請說說在什么場景下用到的呢? 在服務端多節點部署時,預約號保證順序時加了分布式鎖。 ### 不用分布式鎖,可以用其他方案代替嗎? 自己的答案:可以用消息隊列,順序消費后會寫結果,前端輪詢查詢結果。(方案有點重,我說應對高并發大流量時是這么做的) 查找資料后的答案:路由 + Java鎖機制。分析需要使用分布式鎖的業務流程,找到合適的路由規則,將請求路由到統一節點并且配合Java的鎖實現同步。 ### 有開源項目源碼研究和二次開發經驗嗎? 。。。(沒有,大多是使用) ### 對薪水有什么要求? 30k+
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看