??大家好,我是陳哈哈,北漂五年,相信大家和我一樣,
都有一個大廠夢,作為一名資深Java選手,深知面試重要性,接下來我準備用100天時間,基于Java崗面試中的高頻面試題,以每日3題的形式,帶你過一遍熱門面試題及恰如其分的解答,
??一路走來,隨著問題加深,發現不會的也愈來愈多,但底氣著實足了不少,相信不少朋友和我一樣,榷訓月累才是最有效的學習方式!想起高三時一個同學的座右銘:只有沉下去,才能浮上來,共勉(juan),

坐標:北京 國貿
作者:人民網小姐姐
車票
- 面試題1:tomcat的埠是多少,在哪修改的?
- 追問1:tomcat改過Https協議吧,說一下步驟
- 追問2:tomcat常用的埠如:8005、8009、8080、8443,請簡述一下各埠的作用
- 面試題2:tomcat的優化方式都有哪些?
- 面試題3:tomcat有幾種部署方式?
- 追問1:tomcat容器是如何創建servlet類實體?用到了什么原理?
- 每日小結
??本欄目Java開發崗高頻面試題主要出自以下各技術堆疊:Java基礎知識、集合容器、并發編程、JVM、Spring全家桶、MyBatis等ORMapping框架、MySQL資料庫、Redis快取、RabbitMQ訊息佇列、Linux操作技巧等,
??tomcat問題在面試中遇到的頻率雖然不高,但一般問到了你就蒙了,這是很傷的,今天通過一篇文章我們走一篇tomcat常問面試題,希望對你有用~
面試題1:tomcat的埠是多少,在哪修改的?
tomcat預設埠是8080;
修改tomcat 埠;
- 找到tomcat目錄下的conf檔案夾;
- 進入conf檔案夾找到server.xml檔案
- 打開server.xml檔案
- 在server.xml檔案里面找到Connector 標簽,把port=“8080”,改成需求埠即可,
<Connector port="8080" redirectPort="8443" connectionTimeout="20000" protocol="HTTP/1.1"/>
追問1:tomcat改過Https協議吧,說一下步驟
??如果tomcat服務需要修改成Https協,需要有以下幾步:
1、生成SSL證書,證書一般由公司購買;當然,老板不想花錢也可以我們程式員自己生成一個自簽名的證書;
2、修改tomcat/conf/Server.xml,首先將下方這行注釋掉:
<!-- <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> -->
然后將Http協議配置改為Https協議配置即可:
https協議:
<Connector port="8080" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:\tomcat\apache-tomcat-7.0.79\bin\test.keystore" keystorePass="123456" URIEncoding="utf-8"/>
http協議:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8"/>
也可以參考以下博文了解詳情:《https協議配置》
追問2:tomcat常用的埠如:8005、8009、8080、8443,請簡述一下各埠的作用
- 8005 ==> 8005埠是關閉tomcat行程所用
<Server shutdown="SHUTDOWN" port="8005">
-
8009 ==> HTTP等反向代理tomcat時就可以使用ajp協議反向代理到該埠
-
8080 ==>默認的HTTP監聽埠
<Connector port="8080" redirectPort="8443" connectionTimeout="20000" protocol="HTTP/1.1"/>
- 8443 ==> 默認的HTTPS監聽埠,(默認關閉)

瀕危物種大鯊筆
作者:hwg
面試題2:tomcat的優化方式都有哪些?
??tomcat默認引數是為開發環境制定,而不是生產環境,尤其是記憶體和執行緒的配置,默認都很低,容易成為性能瓶頸,這個問題是問tomcat這塊兒的高頻問題,大家可以留意一下,在實際作業中也可以投入使用,
tomcat記憶體優化
linux修改TOMCAT_HOME/bin/catalina.sh,在前面加入
JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"
windows修改TOMCAT_HOME/bin/catalina.bat,在前面加入
set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m
??這里將最大堆記憶體配置為:1024m,實際生產環境中,還是按照服務器具體硬體配置進行優化,
tomcat 執行緒優化
<Connector port="80" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700"
connectionTimeout="20000" redirectPort="8443" />
maxThreads=“600” ///最大執行緒數minSpareThreads=“100”///初始化時創建的執行緒數maxSpareThreads=“500”///一旦創建的執行緒超過這個值,Tomcat就會關閉不再需要的socket執行緒,acceptCount=“700”//指定當所有可以使用的處理請求的執行緒數都被使用時,可以放到處理佇列中的請求數,超過這個數的請求將不予處理
??這里是http connector的優化,如果使用apache和tomcat做集群的負載均衡,并且使用ajp協議做apache和tomcat的協議轉發,那么還需要優化ajp connector,
禁用DNS查詢
??DNS查詢需要占用網路,并且包括可能從很多很遠的服務器或者不起作用的服務器上去獲取對應的IP的程序,這樣會消耗一定的時間,
??enableLookups如果為true,則可以通過呼叫request.getRemoteHost()進行DNS查詢來得到遠程客戶端的實際主機名,若為false則不進行DNS查詢,而是回傳其ip地址,
設定session過期時間
conf\web.xml中通過引數指定:(單位為分鐘)
<session-config>
<session-timeout>180</session-timeout>
</session-config>

曾經我們山東引以為傲的互聯網公司,后來被約談了~當個人吧
作者:陳哈哈
面試題3:tomcat有幾種部署方式?
war包部署(常用)
??War包部署和Web目錄部署是一樣的,是不過是war包是經過壓縮的而已,只要將war包拷貝到tomcat的目錄下即可,不用解壓,如果沒有修改server組態檔,那么就拷貝到webapps目錄下,
通過Context描述檔案部署
1、在tomcat中的conf目錄下的server.xml檔案中,在節點中添加一個context,具體為:
<Context Path="/test"Docbase="E:\workPlace-2019\test" Debug="0" Reloadable="True"></Context>
2、增加自定義的Web部署檔案,
??在conf/Catalina/localhost/ 路徑下增加 demo.xml檔案,內容是Context節點,可以部署應用,xml檔案和上方寫法相同,
追問1:tomcat容器是如何創建servlet類實體?用到了什么原理?
??當容器啟動時,會讀取在webapps目錄下所有的web應用中的web.xml檔案,然后對xml檔案進行決議,并讀取servlet注冊資訊,然后,將每個應用中注冊的servlet類都進行加載,并通過反射的方式實體化,
??有時候也是在第一次請求時實體化,在servlet注冊時加上如果為正數,則在一開始就實體化,如果不寫或為負數,則第一次請求實體化,
每日小結
??今天我們復習了面試中常問的tomcat相關問題,今天的內容你做到心中有數了么?對了,如果你的朋友也在準備面試,請將這個系列扔給他,如果他認真對待,肯定會感謝你的!!好了,今天就到這里,學廢了的同學,記得在評論區留言:打卡,,給同學們以激勵,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/374856.html
標籤:其他
上一篇:期末復習筆記——樹和二叉樹
下一篇:醫院管理資料庫課程設計
