大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 一線大廠總結出的Java項目經理面試題

一線大廠總結出的Java項目經理面試題

更新時間:2022-12-09 15:00:17 來源:動力節點 瀏覽2080次

你是否已經準備好跳槽了呢,是否期望自己拿到更高的薪資呢,是否有望獲得心儀的offer呢!那么,今天這套Java面試題是你不二之選,本篇題目總結了在各大一線互聯網公司面試官的出題經驗,深剖核心問題,多角度的去挖掘后,為大呈現出來的:

java項目經理面試題

資源回收

考慮到系統資源是有限的,對于線程池超出 corePoolSize 數量的空閑線程應進行回收操作。進行此操作存在一個問題,即回收時機。目前的實現方式是當線程空閑時間超過 keepAliveTime 后,進行回收。除了核心線程數之外的線程可以進行回收,核心線程內的空閑線程也可以進行回收。回收的前提是allowCoreThreadTimeOut屬性被設置為 true,通過public void allowCoreThreadTimeOut(boolean) 方法可以設置屬性值。

排隊策略

如 3.1.2 線程創建規則一節中規則 2 所說,當線程數量大于等于 corePoolSize,workQueue 未滿時,則緩存新任務。這里要考慮使用什么類型的容器緩存新任務,通過 JDK 文檔介紹,我們可知道有 3 中類型的容器可供使用,分別是同步隊列,有界隊列和無界隊列。對于有優先級的任務,這里還可以增加優先級隊列。以上所介紹的 4 中類型的隊列,對應的實現類如下:

| 實現類 | 類型 | 說明 |

| --- | --- | --- |

| SynchronousQueue | 同步隊列 | 該隊列不存儲元素,每個插入操作必須等待另一個線程調用移除操作,否則插入操作會一直阻塞 |

| ArrayBlockingQueue | 有界隊列 | 基于數組的阻塞隊列,按照 FIFO 原則對元素進行排序 |

| LinkedBlockingQueue | 無界隊列 | 基于鏈表的阻塞隊列,按照 FIFO 原則對元素進行排序 |

| PriorityBlockingQueue | 優先級隊列 | 具有優先級的阻塞隊列 |

拒絕策略

如 3.1.2 線程創建規則一節中規則 4 所說,線程數量大于等于 maximumPoolSize,且 workQueue 已滿,則使用拒絕策略處理新任務。Java 線程池提供了 4 中拒絕策略實現類,如下:

| 實現類 | 說明 |

| --- | --- |

| AbortPolicy | 丟棄新任務,并拋出?RejectedExecutionException |

| DiscardPolicy | 不做任何操作,直接丟棄新任務 |

| DiscardOldestPolicy | 丟棄隊列隊首的元素,并執行新任務 |

| CallerRunsPolicy | 由調用線程執行新任務 |

以上 4 個拒絕策略中,AbortPolicy 是線程池實現類所使用的策略。我們也可以通過方法public void setRejectedExecutionHandler(RejectedExecutionHandler)修改線程池決絕策略。

線程的創建與復用

在線程池的實現上,線程的創建是通過線程工廠接口ThreadFactory的實現類來完成的。默認情況下,線程池使用Executors.defaultThreadFactory()方法返回的線程工廠實現類。當然,我們也可以通過

public void setThreadFactory(ThreadFactory)方法進行動態修改。具體細節這里就不多說了,并不復雜,大家可以自己去看下源碼。

在線程池中,線程的復用是線程池的關鍵所在。這就要求線程在執行完一個任務后,不能立即退出。對應到具體實現上,工作線程在執行完一個任務后,會再次到任務隊列獲取新的任務。如果任務隊列中沒有任務,且 keepAliveTime 也未被設置,工作線程則會被一致阻塞下去。通過這種方式即可實現線程復用。

說完原理,再來看看線程的創建和復用的相關代碼(基于 JDK 1.8),如下:

`+----ThreadPoolExecutor.Worker.java Worker(Runnable firstTask) {


setState(-1);


this.firstTask = firstTask;


// 調用線程工廠創建線程


this.thread = getThreadFactory().newThread(this);


}


// Worker 實現了 Runnable 接口


public void run() {


runWorker(this);


}


+----ThreadPoolExecutor.java final void runWorker(Worker w) {


Thread wt = Thread.currentThread();


Runnable task = w.firstTask;


w.firstTask = null;


w.unlock();


boolean completedAbruptly = true;


try {


// 循環從任務隊列中獲取新任務


while (task != null || (task = getTask()) != null) {


w.lock();


// If pool is stopping, ensure thread is interrupted;


// if not, ensure thread is not interrupted.  This


// requires a recheck in second case to deal with


// shutdownNow race while clearing interrupt


if ((runStateAtLeast(ctl.get(), STOP) ||


(Thread.interrupted() &&


runStateAtLeast(ctl.get(), STOP))) &&


!wt.isInterrupted())


wt.interrupt();


try {


beforeExecute(wt, task);


Throwable thrown = null;


try {


// 執行新任務


task.run();


} catch (RuntimeException x) {


thrown = x; throw x;


} catch (Error x) {


thrown = x; throw x;


} catch (Throwable x) {


thrown = x; throw new Error(x);


} finally {


afterExecute(task, thrown);


}


} finally {


task = null;


w.completedTasks++;


w.unlock();


}


}


completedAbruptly = false;


} finally {


// 線程退出后,進行后續處理


processWorkerExit(w, completedAbruptly);


}


}`

以上就是“一線大廠總結出的Java項目經理面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久久国产精品福利免费 | 波多野结衣一区二区在线 | 日韩欧美亚洲综合 | 免费鲁丝片一级观看 | 亚洲国产一区二区三区a毛片 | 国产精品视频一区二区三区经 | 综合免费一区二区三区 | 高级毛片 | 欧美成人在线免费视频 | 尤物国产在线精品福利一区 | 性做久久久久久蜜桃花 | 欧美性禁片在线观看 | 久久99精品久久久久久国产人妖 | 美女做羞羞 | 久久精品欧美一区二区 | 97色在线观看免费视频 | 日韩精品一区二区三区中文精品 | 亚洲视频一区二区在线观看 | 成人网在线免费观看 | 国产成人v片视频在线观看 国产成人爱片免费观看视频 | 九九精品免视看国产成人 | 色婷婷免费视频 | 能在线观看的一区二区三区 | 欧美激情二区 | 欧美黄一片 | 亚洲精品久久99久久一区 | 天天拍夜夜拍 | 国产精品999在线 | 亚洲成在人线免费视频 | 久久精品国产四虎 | 青青青国产免费全部免费观看 | 国产免费专区 | 最近中文字幕无吗高清视频 | 欧美另类亚洲 | 久久爱综合久久爱com | 欧美开嫩苞实拍视频在线观看 | 中文字幕在线看 | 欧美国产成人精品一区二区三区 | 国产亚洲欧美在线 | 色综久久天天综合绕视看 | 成人欧美一区在线视频在线观看 |