計算機類面試題目及答案_第1頁
計算機類面試題目及答案_第2頁
計算機類面試題目及答案_第3頁
計算機類面試題目及答案_第4頁
計算機類面試題目及答案_第5頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第 PAGE15 頁 共 NUMPAGES15 頁計算機類面試題目及答案Java多線程面試題目1、什么是線程?線程是操作系統可以進展運算調度的最小單位,它被包含在進程之中,是進程中的實際運作單位。程序員可以通過它進展多處理器編程,你可以使用多線程對運算密集型任務提速。比方,假如一個線程完成一個任務要100毫秒,那么用十個線程完成改任務只需10毫秒。2、線程和進程有什么區別?線程是進程的子集,一個進程可以有很多線程,每條線程并行執行不同的任務。不同的進程使用不同的內存空間,而所有的線程共享一片一樣的內存空間。每個線程都擁有單獨的棧內存用來存儲本地數據。3、如何在Java中實現線程?兩種方式:ja

2、va.lang.Thread 類的實例就是一個線程但是它需要調用java.lang.Runnable接口來執行,由于線程類本身就是調用的Runnable接口所以你可以繼承java.lang.Thread 類或者直接調用Runnable接口來重寫run方法實現線程。4、Java 關鍵字volatile 與 synchronized 作用與區別?Volatile:它所修飾的變量不保存拷貝,直接訪問主內存中的。在Java內存模型中,有main memory,每個線程也有自己的memory (例如存放器)。為了性能,一個線程會在自己的memory中保持要訪問的變量的副本。這樣就會出現同一個變量在某個瞬

3、間,在一個線程的memory中的值可能與另外一個線程memory中的值,或者main memory中的值不一致的情況。 一個變量聲明為volatile,就意味著這個變量是隨時會被其他線程修改的,因此不能將它cache在線程memory中。synchronized:當它用來修飾一個方法或者一個代碼塊的時候,可以保證在同一時刻最多只有一個線程執行該段代碼。一、當兩個并發線程訪問同一個對象object中的這個synchronized(this)同步代碼塊時,一個時間內只能有一個線程得到執行。另一個線程必須等待當前線程執行完這個代碼塊以后才能執行該代碼塊。二、然而,當一個線程訪問object的一個sy

4、nchronized(this)同步代碼塊時,另一個線程仍然可以訪問該object中的非synchronized(this)同步代碼塊。三、尤其關鍵的是,當一個線程訪問object的一個synchronized(this)同步代碼塊時,其他線程對object中所有其它synchronized(this)同步代碼塊的訪問將被阻塞。四、當一個線程訪問object的一個synchronized(this)同步代碼塊時,它就獲得了這個object的對象鎖。結果,其它線程對該object對象所有同步代碼局部的訪問都被暫時阻塞。五、以上規那么對其它對象鎖同樣適用。5、有哪些不同的線程生命周期?當我們在Ja

5、va程序中新建一個線程時,它的狀態是New。當我們調用線程的start方法時,狀態被改變為Runnable。線程調度器會為Runnable線程池中的線程分配CPU時間并且講它們的狀態改變為Running。其他的線程狀態還有Waiting,Blocked 和Dead。6、你對線程優先級的理解是什么?每一個線程都是有優先級的,一般來說,高優先級的線程在運行時會具有優先權,但這依賴于線程調度的實現,這個實現是和操作系統相關的(OS dependent)。我們可以定義線程的優先級,但是這并不能保證高優先級的線程會在低優先級的線程前執行。線程優先級是一個int變量(從1-10),1代表最低優先級,10代

6、表最高優先級。7、什么是死鎖(Deadlock)?如何分析p 和防止死鎖?死鎖是指兩個以上的線程永遠阻塞的情況,這種情況產生至少需要兩個以上的線程和兩個以上的資。分析p 死鎖,我們需要查看Java應用程序的線程轉儲。我們需要找出那些狀態為BLOCKED的線程和他們等待的資。每個資都有一個唯一的id,用這個id我們可以找出哪些線程已經擁有了它的對象鎖。防止嵌套鎖,只在需要的地方使用鎖和防止無限期等待是防止死鎖的通常方法。8、什么是線程平安?Vector是一個線程平安類嗎?假如你的代碼所在的進程中有多個線程在同時運行,而這些線程可能會同時運行這段代碼。假如每次運行結果和單線程運行的結果是一樣的,而

7、且其他的變量的值也和預期的是一樣的,就是線程平安的。一個線程平安的計數器類的同一個實例對象在被多個線程使用的情況下也不會出現計算失誤。很顯然你可以將集合類分成兩組,線程平安和非線程平安的。Vector 是用同步方法來實現線程平安的, 而和它相似的ArrayList不是線程平安的。9、Java中如何停頓一個線程?Java提供了很豐富的API但沒有為停頓線程提供API。JDK 1.0本來有一些像stop, suspend和resume的控制方法但是由于潛在的死鎖威脅因此在后續的JDK版本中他們被棄用了,之后Java API的設計者就沒有提供一個兼容且線程平安的方法來停頓一個線程。當run或者 ca

8、ll方法執行完的時候線程會自動完畢,假如要手動完畢一個線程,你可以用volatile 布爾變量來退出run方法的循環或者是取消任務來中斷線程。Kuberes面試題及答案1、什么是Kuberes?Kuberes是一個開容器管理工具,負責容器部署,容器擴縮容以及負載平衡。作為Google的創意之作,它提供了出色的社區,并與所有云提供商合作。因此,我們可以說Kuberes不是一個容器化平臺,而是一個多容器管理解決方案。2、Kuberes與Docker有什么關系?眾所周知,Docker提供容器的生命周期管理,Docker鏡像構建運行時容器。但是,由于這些單獨的容器必須通信,因此使用Kuberes。因此

9、,我們說Docker構建容器,這些容器通過Kuberes互相通信。因此,可以使用Kuberes手動關聯和編排在多個主機上運行的容器。3、什么是Container Orchestration?考慮一個應用程序有5-6個微效勞的場景。如今,這些微效勞被放在單獨的容器中,但假如沒有容器編排就無法進展通信。因此,由于編排意味著所有樂器在音樂中和諧共處,所以類似的容器編排意味著各個容器中的所有效勞協同工作以滿足單個效勞器的需求。4、Kuberes如何簡化容器化部署?由于典型應用程序將具有跨多個主機運行的容器集群,因此所有這些容器都需要互相通信。因此,要做到這一點,你需要一些可以負載平衡,擴展和監控容器的

10、東西。由于Kuberes與云無關并且可以在任何公共/私有提供商上運行,因此必須是您簡化容器化部署的選擇。5、您對Kuberes的集群理解多少?Kuberes背后的根底是我們可以施行所需的狀態管理,我的意思是我們可以提供特定配置的集群效勞,并且集群效勞將在根底架構中運行并運行該配置。因此,正如您所看到的,部署文件將具有提供應集群效勞所需的所有配置。如今,部署文件將被提供應API,然后由集群效勞決定如何在環境中安排這些pod,并確保正確運行的pod數量。因此,位于效勞前面的API,工作節點和節點運行的Kubelet進程,共同構成了Kuberes集群。6、Kuberes Architecture的不

11、同組件有哪些?Kuberes Architecture主要有兩個組件 - 主節點和工作節點。如以下圖所示,master和worker節點中包含許多內置組件。主節點具有kube-controller-manager,kube-apiserver,kube-scheduler等。而工作節點具有在每個節點上運行的kubelet和kube-proxy。7、您能否介紹一下Kuberes中主節點的工作情況?Kuberes master控制容器存在的節點和節點內部。如今,這些單獨的容器包含在容器內部和每個容器內部,您可以根據配置和要求擁有不同數量的容器。因此,假如必須部署pod,那么可以使用用戶界面或命令行

12、界面部署它們。然后,在節點上調度這些pod,并根據資需求,將pod分配給這些節點。kube-apiserver確保在Kuberes節點和主組件之間建立通信。8、kube-apiserver和kube-scheduler的作用是什么?kube -apiserver遵循橫向擴展架構,是主節點控制面板的前端。這將公開Kuberes主節點組件的所有API,并負責在Kuberes節點和Kuberes主組件之間建立通信。kube-scheduler負責工作節點上工作負載的分配和管理。因此,它根據資需求選擇最適宜的節點來運行未調度的pod,并跟蹤資利用率。它確保不在已滿的節點上調度工作負載。9、你對Kube

13、res的負載平衡器有什么理解?負載平衡器是暴露效勞的最常見和標準方式之一。根據工作環境使用兩種類型的負載平衡器,即內部負載平衡器或外部負載平衡器。內部負載平衡器自動平衡負載并使用所需配置分配容器,而外部負載平衡器將流量從外部負載引導至后端容器。10、Replica Set 和 Replication Controller之間有什么區別?Replica Set 和 Replication Controller幾乎完全一樣。它們都確保在任何給定時間運行指定數量的pod副本。不同之處在于復制pod使用的選擇器。Replica Set使用基于集合的選擇器,而Replication Controller

14、使用基于權限的選擇器。Equity-Based選擇器:這種類型的選擇器允許按標簽鍵和值進展過濾。因此,在外行術語中,基于Equity的選擇器將僅查找與標簽具有完全一樣短語的pod。例如:假設您的標簽鍵表示app = nginx,那么,使用此選擇器,您只能查找標簽應用程序等于nginx的那些pod。Selector-Based選擇器:此類型的選擇器允許根據一組值過濾鍵。因此,換句話說,基于Selector的選擇器將查找已在集合中提及其標簽的pod。例如:假設您的標簽鍵在(nginx,NPS,Apache)中顯示應用程序。然后,使用此選擇器,假如您的應用程序等于任何nginx,NPS或Apache

15、,那么選擇器將其視為真實結果。Tomcat面試題及答案一、Tomcat 的缺省端口是多少,怎么修改?1)找到 Tomcat 目錄下的 conf 文件夾2)進入 conf 文件夾里面找到 server.xml 文件3)翻開 server.xml 文件4)在 server.xml 文件里面找到以下信息port=“8080”改成你想要的端口二、tomcat 有哪幾種 Connector 運行形式(優化)?bio:傳統的 Java I/O 操作,同步且阻塞 IO。maxThreads=”150”/Tomcat 使用線程來處理接收的每個懇求。這個值表示Tomcat 可創立的最大的線程數。默認值 200。

16、可以根據機器的時期性能和內存大小調整,一般可以在 400-500。最大可以在 800 左右。minSpareThreads=”25”Tomcat 初始化時創立的線程數。默認值 4。假如當前沒有空閑線程,且沒有超過 maxThreads,一次性創立的空閑線程數量。Tomcat 初始化時創立的線程數量也由此值設置。maxSpareThreads=”75”一旦創立的線程超過這個值,Tomcat 就會關閉不再需要的 socket 線程。默認值 50。一旦創立的線程超過此數值,Tomcat 會關閉不再需要的線程。線程數可以大致上用 “同時在線人數每秒用戶操作次數系統平均操作時間” 來計算。acceptC

17、ount=”100”-指定當所有可以使用的處理懇求的線程數都被使用 時,可以放到處理隊列中的懇求數,超過這個數的懇求將不予處理。默認值 10。假如當前可用線程數為 0,那么將懇求放入處理隊列中。這個值限定了懇求隊列的大小,超過這個數值的懇求將不予處理。connectionTimeout=”20000”網絡連接超時,默認值 20000,單位:毫秒。設置為 0 表示永不超時,這樣設置有隱患的。通常可設置為 30000 毫秒。nio:JDK1.4 開場支持,同步阻塞或同步非阻塞 IO。指定使用 NIO 模型來承受 懇求懇求。默認是 BlockingIO,配置為 protocol=”/1.1” acc

18、eptorThreadCount=”2” 使用 NIO 模型時接收線程的數目aio(nio.2):JDK7 開場支持,異步非阻塞 IO。apr:Tomcat 將以 JNI 的形式調用 Apache 效勞器的核心動態鏈接庫來處理文件讀取或網絡傳輸操作,從而大大地 進步 Tomcat 對靜態文件的處理性能。三、Tomcat 有幾種部署方式?1)直接把 Web 工程放在 webapps 下,Tomcat 會自動將其部署2)在 server.xml 文件上配置節點,設置相關的屬性即可3)通過 Catalina 來進展配置:進入到 confCatalinalocalhost 文件下,創立一個xml 文件

19、,該文件的名字就是站點的名字。編寫 XML 的方式來進展設置。四、tomcat 容器是如何創立 servlet 類實例?用到了什么原理?當容器啟動時,會讀取在 webapps 目錄下所有的 web 應用中的 web.xml 文件,然后對 xml 文件進展解析,并讀取 servlet 注冊信息。然后,將每個應用中注冊的 servlet 類都進展加載, 并通過反射的方式實例化。(有時候也是在第一次懇求時實例化)在 servlet 注冊時加上假如為正數,那么在一開場就實例化,假如不寫或為負數,那么第一次懇務實例化。五、tomcat 如何優化?1、優化連接配置.這里以 tomcat7 的參數配置為例,需要修改 conf/server.xml文件,修改連接數,關閉客戶端 dns 查詢。參數解釋:URIEncoding=”UTF-8:使得 tomc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論