計算機(jī)網(wǎng)絡(luò)方面的面試題目
面試過程中,面試官會向應(yīng)聘者發(fā)問,而應(yīng)聘者的回答將成為面試官考慮是否接受他的重要依據(jù)。下面小編給大家?guī)碛嬎銠C(jī)網(wǎng)絡(luò)方面的面試題目參考,希望能幫助到大家!
python面試題
1、python下多線程的限制以及多進(jìn)程中傳遞參數(shù)的方式
python多線程有個全局解釋器鎖(global interpreter lock),這個鎖的意思是任一時間只能有一個線程使用解釋器,跟單cpu跑多個程序一個意思,大家都是輪著用的,這叫“并發(fā)”,不是“并行”。
多進(jìn)程間共享數(shù)據(jù),可以使用 multiprocessing.Value和multiprocessing.Array。
2、什么是lambda函數(shù)?它有什么好處?
lambda 函數(shù)是一個可以接收任意多個參數(shù)(包括可選參數(shù))并且返回單個表達(dá)式值的函數(shù)。lambda 函數(shù)不能包含命令,它們所包含的表達(dá)式不能超過一個。不要試圖向lambda 函數(shù)中塞入太多的東西;如果你需要更復(fù)雜的東西,應(yīng)該定義一個普通函數(shù),然后想讓它多長就多長。
3、Python是如何進(jìn)行類型轉(zhuǎn)換的?
①函數(shù)描述
② int(x [,base ]) 將x轉(zhuǎn)換為一個整數(shù)
③long(x [,base ]) 將x轉(zhuǎn)換為一個長整數(shù)
④float(x ) 將x轉(zhuǎn)換到一個浮點數(shù)
⑤complex(real [,imag ]) 創(chuàng)建一個復(fù)數(shù)
⑥str(x ) 將對象 x 轉(zhuǎn)換為字符串
⑦repr(x ) 將對象 x 轉(zhuǎn)換為表達(dá)式字符串
⑧eval(str ) 用來計算在字符串中的有效Python表達(dá)式,并返回一個對象
⑨t(yī)uple(s ) 將序列 s 轉(zhuǎn)換為一個元組
⑩list(s ) 將序列 s 轉(zhuǎn)換為一個列表
?chr(x ) 將一個整數(shù)轉(zhuǎn)換為一個字符
?unichr(x ) 將一個整數(shù)轉(zhuǎn)換為Unicode字符
?ord(x ) 將一個字符轉(zhuǎn)換為它的整數(shù)值
?hex(x ) 將一個整數(shù)轉(zhuǎn)換為一個十六進(jìn)制字符串
?oct(x ) 將一個整數(shù)轉(zhuǎn)換為一個八進(jìn)制字符串
4、python多線程與多進(jìn)程的區(qū)別
在UNIX平臺上,當(dāng)某個進(jìn)程終結(jié)之后,該進(jìn)程需要被其父進(jìn)程調(diào)用wait,否則進(jìn)程成為僵尸進(jìn)程(Zombie)。所以,有必要對每個Process對象調(diào)用join()方法 (實際上等同于wait)。對于多線程來說,由于只有一個進(jìn)程,所以不存在此必要性。
多進(jìn)程應(yīng)該避免共享資源。在多線程中,我們可以比較容易地共享資源,比如使用全局變量或者傳遞參數(shù)。在多進(jìn)程情況下,由于每個進(jìn)程有自己獨立的內(nèi)存空間,以上方法并不合適。此時我們可以通過共享內(nèi)存和Manager的方法來共享資源。但這樣做提高了程序的復(fù)雜度,并因為同步的需要而降低了程序的效率。
5、Python里面如何拷貝一個對象?
標(biāo)準(zhǔn)庫中的copy模塊提供了兩個方法來實現(xiàn)拷貝。一個方法是copy,它返回和參數(shù)包含內(nèi)容一樣的對象。使用deepcopy方法,對象中的屬性也被復(fù)制。
6、介紹一下except的用法和作用?
Python的except用來捕獲所有異常,因為Python里面的每次錯誤都會拋出一個異常,所以每個程序的錯誤都被當(dāng)作一個運(yùn)行時錯誤。
7、Python中pass語句的作用是什么?
pass語句什么也不做,一般作為占位符或者創(chuàng)建占位程序,pass語句不會執(zhí)行任何操作。
8、Python解釋器種類以及特點?
Python是一門解釋器語言,代碼想運(yùn)行,必須通過解釋器執(zhí)行,Python存在多種解釋器,分別基于不同語言開發(fā),每個解釋器有不同的特點,但都能正常運(yùn)行Python代碼,以下是常用的五種Python解釋器:
CPython:當(dāng)從Python官方網(wǎng)站下載并安裝好Python2.7后,就直接獲得了一個官方版本的解釋器:Cpython,這個解釋器是用C語言開發(fā)的,所以叫CPython,在命名行下運(yùn)行python,就是啟動CPython解釋器,CPython是使用最廣的Python解釋器。
IPython:IPython是基于CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所增強(qiáng),但是執(zhí)行Python代碼的功能和CPython是完全一樣的,好比很多國產(chǎn)瀏覽器雖然外觀不同,但內(nèi)核其實是調(diào)用了IE。
PyPy:PyPy是另一個Python解釋器,它的目標(biāo)是執(zhí)行速度,PyPy采用JIT技術(shù),對Python代進(jìn)行動態(tài)編譯,所以可以顯著提高Python代碼的執(zhí)行速度。
Jython:Jython是運(yùn)行在Java平臺上的Python解釋器,可以直接把Python代碼編譯成Java字節(jié)碼執(zhí)行。
IronPython:IronPython和Jython類似,只不過IronPython是運(yùn)行在微軟.Net平臺上的Python解釋器,可以直接把Python代碼編譯成.Net的字節(jié)碼。
在Python的解釋器中,使用廣泛的是CPython,對于Python的編譯,除了可以采用以上解釋器進(jìn)行編譯外,技術(shù)高超的開發(fā)者還可以按照自己的需求自行編寫Python解釋器來執(zhí)行Python代碼,十分的方便!
9、列舉布爾值為False的常見值?
0, [] , () , {} , '' , False , None
10、字符串、列表、元組、字典每個常用的5個方法?
字符串:repleace,strip,split,reverse,upper,lower,join.....
列表:append,pop,,remove,sort,count,index.....
元組:index,count,__len__(),__dir__()
字典:get,keys,values,pop,popitems,clear,,items.....
Tomcat面試題匯總及答案
一、Tomcat 的缺省端口是多少,怎么修改?
1)找到 Tomcat 目錄下的 conf 文件夾
2)進(jìn)入 conf 文件夾里面找到 server.xml 文件
3)打開 server.xml 文件
4)在 server.xml 文件里面找到下列信息
<connector p=""
redirectPort="8443" uriEncoding="utf-8"/>
port="8080"改成你想要的端口
二、tomcat 有哪幾種 Connector 運(yùn)行模式(優(yōu)化)?
bio:傳統(tǒng)的 Java I/O 操作,同步且阻塞 IO。maxThreads=”150”//Tomcat 使用線程來處理接收的每個請求。這個值表示
Tomcat 可創(chuàng)建的最大的線程數(shù)。默認(rèn)值 200??梢愿鶕?jù)機(jī)器的時期性能和內(nèi)存大小調(diào)整,一般可以在 400-500。最大可以在 800 左右。
minSpareThreads=”25”—Tomcat 初始化時創(chuàng)建的線程數(shù)。默認(rèn)值 4。如果當(dāng)前沒有空閑線程,且沒有超過 maxThreads,一次性創(chuàng)建的空閑線程數(shù)量。
Tomcat 初始化時創(chuàng)建的線程數(shù)量也由此值設(shè)置。maxSpareThreads=”75”–一旦創(chuàng)建的線程超過這個值,Tomcat 就會關(guān)閉不再需要的 socket 線程。默認(rèn)值 50。一旦創(chuàng)建的線程超過此數(shù)值,Tomcat 會關(guān)閉不再需要的線程。線程數(shù)可以大致上用 “同時在線人數(shù)每秒用戶操作次數(shù)系統(tǒng)平均操作時間” 來計算。
acceptCount=”100”—-指定當(dāng)所有可以使用的處理請求的線程數(shù)都被使用 時,可以放到處理隊列中的請求數(shù),超過這個數(shù)的請求將不予處理。默認(rèn)值 10。如果當(dāng)前可用線程數(shù)為 0,則將請求放入處理隊列中。這個值限定了請求隊列的大小,超過這個數(shù)值的請求將不予處理。connectionTimeout=”20000”–網(wǎng)絡(luò)連接超時,默認(rèn)值 20000,單位:毫秒。設(shè)置為 0 表示永不超時,這樣設(shè)置有隱患的。通??稍O(shè)置為 30000 毫秒。
nio:JDK1.4 開始支持,同步阻塞或同步非阻塞 IO。指定使用 NIO 模型來接受 HTTP 請求
protocol=”org.apache.coyote.http11.Http11NioProtocol” 指定使用 NIO 模型來接受 HTTP 請求。默認(rèn)是 BlockingIO,配置為 protocol=”HTTP/1.1” acceptorThreadCount=”2” 使用 NIO 模型時接收線程的數(shù)目
aio(nio.2):JDK7 開始支持,異步非阻塞 IO。
apr:Tomcat 將以 JNI 的形式調(diào)用 Apache HTTP 服務(wù)器的核心動態(tài)鏈接庫來處理文件讀取或網(wǎng)絡(luò)傳輸操作,從而大大地 提高 Tomcat 對靜態(tài)文件的處理性能。
三、Tomcat 有幾種部署方式?
1)直接把 Web 項目放在 webapps 下,Tomcat 會自動將其部署
2)在 server.xml 文件上配置節(jié)點,設(shè)置相關(guān)的屬性即可
3)通過 Catalina 來進(jìn)行配置:進(jìn)入到 conf\Catalina\localhost 文件下,創(chuàng)建一個xml 文件,該文件的名字就是站點的名字。
編寫 XML 的方式來進(jìn)行設(shè)置。
四、tomcat 容器是如何創(chuàng)建 servlet 類實例?用到了什么原理?
當(dāng)容器啟動時,會讀取在 webapps 目錄下所有的 web 應(yīng)用中的 web.xml 文件,然后對 xml 文件進(jìn)行解析,并讀取 servlet 注冊信息。然后,將每個應(yīng)用中注冊的 servlet 類都進(jìn)行加載, 并通過反射的方式實例化。
(有時候也是在第一次請求時實例化)在 servlet 注冊時加上如果為正數(shù),則在一開始就實例化,如果不寫或為負(fù)數(shù),則第一次請求實例化。
spring cloud面試題
問題一:說一下spring cloud?
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),如服務(wù)發(fā)現(xiàn)注冊、配置中心、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用Spring Boot的開發(fā)風(fēng)格做到一鍵啟動和部署。
Spring Cloud是將目前各家公司開發(fā)的比較成熟、經(jīng)得起實際考驗的服務(wù)框架組合起來,通過Spring Boot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實現(xiàn)原理,最終給開發(fā)者留出了一套簡單易懂、易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包。
問題二:使用Spring Cloud有什么優(yōu)勢?
使用Spring Boot開發(fā)分布式微服務(wù)時,我們面臨以下問題:
①與分布式系統(tǒng)相關(guān)的復(fù)雜性-這種開銷包括網(wǎng)絡(luò)問題,延遲開銷,帶寬問題,安全問題。
②服務(wù)發(fā)現(xiàn)-服務(wù)發(fā)現(xiàn)工具管理群集中的流程和服務(wù)如何查找和互相交談。它涉及一個服務(wù)目錄,在該目錄中注冊服務(wù),然后能夠查找并連接到該目錄中的服務(wù)。
③冗余-分布式系統(tǒng)中的冗余問題。
④負(fù)載平衡 --負(fù)載平衡改善跨多個計算資源的工作負(fù)荷,諸如計算機(jī),計算機(jī)集群,網(wǎng)絡(luò)鏈路,中央處理單元,或磁盤驅(qū)動器的分布。
⑤性能-問題 由于各種運(yùn)營開銷導(dǎo)致的性能問題。
⑥部署復(fù)雜性-Devops技能的要求。
問題三:Spring Cloud的核心組件及其工作原理
Eureka:各個服務(wù)啟動時,Eureka Client都會將服務(wù)注冊到Eureka Server,并且Eureka Client還可以反過來從Eureka Server拉取注冊表,從而知道其他服務(wù)在哪里;
Ribbon:服務(wù)間發(fā)起請求的時候,基于Ribbon做負(fù)載均衡,從一個服務(wù)的多臺機(jī)器中選擇一臺;
Feign:基于Feign的動態(tài)代理機(jī)制,根據(jù)注解和選擇的機(jī)器,拼接請求URL地址,發(fā)起請求;
Hystrix:發(fā)起請求是通過Hystrix的線程池來走的,不同的服務(wù)走不同的線程池,實現(xiàn)了不同服務(wù)調(diào)用的隔離,避免了服務(wù)雪崩的問題;
Zuul:如果前端、移動端要調(diào)用后端系統(tǒng),統(tǒng)一從Zuul網(wǎng)關(guān)進(jìn)入,由Zuul網(wǎng)關(guān)轉(zhuǎn)發(fā)請求給對應(yīng)的服務(wù)。
問題四:服務(wù)注冊和發(fā)現(xiàn)是什么意思?Spring Cloud如何實現(xiàn)?
當(dāng)我們開始一個項目時,我們通常在屬性文件中進(jìn)行所有的配置。隨著越來越多的服務(wù)開發(fā)和部署,添加和修改這些屬性變得更加復(fù)雜。有些服務(wù)可能會下降,而某些位置可能會發(fā)生變化。手動更改屬性可能會產(chǎn)生問題。
Eureka服務(wù)注冊和發(fā)現(xiàn)可以在這種情況下提供幫助。由于所有服務(wù)都在Eureka服務(wù)器上注冊并通過調(diào)用Eureka服務(wù)器完成查找,因此無需處理服務(wù)地點的任何更改和處理。
問題五:負(fù)載平衡的意義什么?
在計算中,負(fù)載平衡可以改善跨計算機(jī),計算機(jī)集群,網(wǎng)絡(luò)鏈接,中央處理單元或磁盤驅(qū)動器等多種計算資源的工作負(fù)載分布。負(fù)載平衡旨在優(yōu)化資源使用,最大化吞吐量,最小化響應(yīng)時間并避免任何單一資源的過載。
使用多個組件進(jìn)行負(fù)載平衡而不是單個組件可能會通過冗余來提高可靠性和可用性。負(fù)載平衡通常涉及專用軟件或硬件,例如多層交換機(jī)或域名系統(tǒng)服務(wù)器進(jìn)程。
問題六:什么是Netflix Feign?它的優(yōu)點是什么?
Feign是受到Retrofit,JAXRS-2.0和WebSocket啟發(fā)的java客戶端聯(lián)編程序。Feign的第一個目標(biāo)是將約束分母的復(fù)雜性統(tǒng)一到http apis,而不考慮其穩(wěn)定性。在employee-consumer的例子中,我們使用了employee-producer使用REST模板公開的REST服務(wù)。
但是我們必須編寫大量代碼才能執(zhí)行以下步驟
①使用功能區(qū)進(jìn)行負(fù)載平衡。
②獲取服務(wù)實例,然后獲取基本URL。
③利用REST模板來使用服務(wù)。
計算機(jī)網(wǎng)絡(luò)方面的面試題目相關(guān)文章:
★ 計算機(jī)網(wǎng)絡(luò)面試題及參考答案
★ 計算機(jī)網(wǎng)絡(luò)基礎(chǔ)知識(筆試題)