五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

2023年企業(yè)Java面試題精選

2023-05-25 15:55 作者:老派灬  | 我要投稿


前言:因?yàn)槲臋n為pdf格式,轉(zhuǎn)化后可能出現(xiàn)錯(cuò)字或亂碼,

內(nèi)容過(guò)多大家可能也不能一直停留在這個(gè)界面,我直接無(wú)償分享給大家

獲取方法:

關(guān)注后,后臺(tái)私信白嫖就可以了.


正片開(kāi)始!

目錄

一、性能優(yōu)化面試專欄

1.1、tomcat性能優(yōu)化整理

1.2、JVM性能優(yōu)化整理

1.3、MysqI性能優(yōu)化整理

二-、微服務(wù)架構(gòu)面試專欄

2.1、SpringCloud面試整理

2.2、SpringBoot面試整理

2.3、Dubbo面試整理

三、并發(fā)編程高級(jí)面試專欄

四、開(kāi)源框架面試題專欄

4.1、Spring面試整理

4.2、SpringMVC面試整理

4.3、MyBatis面試整理

五、分布式面試專欄

5.1、分布式限流面試整理

5.2、分布式通訊面試整理

5.3、分布式數(shù)據(jù)庫(kù)面試整理

一、性能優(yōu)化專欄

1.1、 tomcat性能優(yōu)化整理

1、你怎樣給tomcat調(diào)優(yōu)

1. JVM參數(shù)調(diào)優(yōu): -Xms<s ize>表示JVM初始化堆的大小,-????

Xmx<size>表示JVM堆的最大值。這兩個(gè)值的大小一般根據(jù)需要進(jìn)行設(shè)

置。當(dāng)應(yīng)用程序需要的內(nèi)存超出堆的最大值時(shí)虛擬機(jī)就會(huì)提示內(nèi)存溢出,

并且導(dǎo)致應(yīng)用服務(wù)崩潰。因此一般建議堆的最大值設(shè)置為可用內(nèi)存的最大

值的80%。在catalina.bat 中,設(shè)置JAVA _OPTS= '-Xms256m-

Xmx512m',表示初始化內(nèi)存為256MB, 可以使用的最大內(nèi)存為512MB。

2.禁用DNS查詢

當(dāng)web應(yīng)用程序向要記錄客戶端的信息時(shí),它也會(huì)記錄客戶端的IP地址或

者通過(guò)域名服務(wù)器查找機(jī)器名轉(zhuǎn)換為IP地址。DNS查詢需要占用網(wǎng)絡(luò),并

且包括可能從很多很遠(yuǎn)的服務(wù)器或者不起作用的服務(wù)器上去獲取對(duì)應(yīng)的IP

的過(guò)程,這樣會(huì)消耗-定的時(shí)間。 為了消除DNS查詢對(duì)性能的影響我們可

以關(guān)閉DNS查詢,方式是修改| server . xml文件中的enableLookups 參數(shù)值

3.調(diào)整線程數(shù)

通過(guò)應(yīng)用程序的連接器(Con nector)進(jìn)行 性能控制的的參數(shù)是創(chuàng)建的

處理請(qǐng)求的線程數(shù)。Tomcat 使用線程池加速響應(yīng)速度來(lái)處理請(qǐng)求。在

Java中線程是程序運(yùn)行時(shí)的路徑,是在一個(gè)程序中與其它控制線程無(wú)關(guān)

的、能夠獨(dú)立運(yùn)行的代碼段。它們共享相同的地址空間。多線程幫助程序

員寫(xiě)出CPU最大利用率的高效程序,使空閑時(shí)間保持最低,從而接更多的

請(qǐng)求。

| Tomcat4中可以通過(guò)修改minProcessors和maxProcessors的值來(lái)控

制線程數(shù)。這些值在安裝后就已經(jīng)設(shè)定為默認(rèn)值并且是足夠使用的,但是

隨著站點(diǎn)的擴(kuò)容而改大這些值。minProcessors 服務(wù)器啟動(dòng)時(shí)創(chuàng)建的處

理請(qǐng)求的線程數(shù)應(yīng)該足夠處理一個(gè)小量的負(fù)載。也就是說(shuō),如果-天內(nèi)每

秒僅發(fā)生5次單擊事件,并且每個(gè)請(qǐng)求任務(wù)處理需要1秒鐘,那么預(yù)先設(shè)置

線程數(shù)為5就足夠了。但在你的站點(diǎn)訪問(wèn)量較大時(shí)就需要設(shè)置更大的線程

數(shù),指定為參數(shù)maxProcessors的值。maxProcessors 的值也是有上

限的,應(yīng)防止流量不可控制(或者惡意的服務(wù)攻擊),從而導(dǎo)致超出了虛

擬機(jī)使用內(nèi)存的大小。如果要加大并發(fā)連接數(shù),應(yīng)同時(shí)加大這兩個(gè)參

數(shù)。web server允許的最大連接數(shù)還受制于操作系統(tǒng)的內(nèi)核參數(shù)設(shè)置,

通常Windows是2000個(gè)左右,Linux是1000個(gè)左右 。

在Tomcat5對(duì)這些參數(shù)進(jìn)行了調(diào)整,請(qǐng)看下面屬性:

maxThreads Tomcat使用線程來(lái)處理接收的每個(gè)請(qǐng)求。這個(gè)值表示

Tomcat可創(chuàng)建的最大的線程數(shù)。

| acceptCount指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可

以放到處理隊(duì)列中的請(qǐng)求數(shù),超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理。

| connnection Timeout網(wǎng)絡(luò)連接超時(shí),單位:毫秒。設(shè)置為0表示永不

超時(shí),這樣設(shè)置有隱患的。通??稍O(shè)置為30000毫秒。

minSpareThreadsTomcat初始化時(shí)創(chuàng)建的線程數(shù)。

maxSpareThreads -旦創(chuàng)建的線程超過(guò)這個(gè)值,| Tomcat 就會(huì)關(guān)閉不再

需要的socket線程。

最好的方式是多設(shè)置幾次并且進(jìn)行測(cè)試,觀察響應(yīng)時(shí)間和內(nèi)存使用情況。

在不同的機(jī)器、操作系統(tǒng)或虛擬機(jī)組合的情況下可能會(huì)不同,而且并不是

所有人的web站點(diǎn)的流量都是-樣的,因此沒(méi)有-刀切的方案來(lái)確定線程

數(shù)的值。

2、如何加大comcat連接數(shù)

在tomcat配置文件server . xml中的<Connector/>

配置中,和連接數(shù)相關(guān)的參數(shù)有:

minProcessors |:最小空閑連接線程數(shù),用于提高系統(tǒng)處理性能,默認(rèn)

值為10

maxProcessors:最大連接線程數(shù),即:并發(fā)處理的最大請(qǐng)求數(shù),默認(rèn)

值為75

| acceptCount :允許的最大連接數(shù),應(yīng)大于等于maxProcessors,默

認(rèn)值為100

| enableLookups: 是否反查域名,取值為: true或false。 為了提高處理能

力,應(yīng)設(shè)置為false

| connect ionTimeout |: 網(wǎng)絡(luò)連接超時(shí),單位:毫秒。設(shè)置為0表示永不

超時(shí),這樣設(shè)置有隱患的。通??稍O(shè)置為30000毫秒。

其中和最大連接數(shù)相關(guān)的參數(shù)為maxProcessors和acceptCount。如果要加

大并發(fā)連接數(shù),應(yīng)同時(shí)加大這兩個(gè)參數(shù)。

web server 允許的最大連接數(shù)還受制于操作系統(tǒng)的內(nèi)核參數(shù)設(shè)置,通常

Windows是2000個(gè)左右,Linux是 1000個(gè)左右。tomcat5中的配置示例:

對(duì)于其他端口的偵聽(tīng)配置,以此類推。

3、怎樣加大tomcat的內(nèi)存

首先檢查程序有沒(méi)有限入死循環(huán)

這個(gè)問(wèn)題主要還是由這個(gè)問(wèn)題java. lang. OutOfMemoryError:Java

heap space

引起的。第一次出現(xiàn)這樣的的問(wèn)題以后,引發(fā)了其他的問(wèn)題。在網(wǎng)上一查

可能是JAVA的堆棧設(shè)置太小的原因。

跟據(jù)網(wǎng).上的答案大致有這兩種解決方法:

1、設(shè)置環(huán)境變量

解決方法:手動(dòng)設(shè)置Heap size

修改TOMCAT_ HOME/bin/catalina. sh

setJAVA_ _OPTS= -Xms32m- -Xmx512m

可以根據(jù)自己機(jī)器的內(nèi)存進(jìn)行更改。

2、java- -Xms32m- -Xmx800m className

就是在執(zhí)行JAVA類文件時(shí)加上這個(gè)參數(shù),其中className

是需要執(zhí)行的確類名。(包括包名) 這個(gè)解決問(wèn)題了。而且執(zhí)行的速度比

沒(méi)有設(shè)置的時(shí)候快很多。如果在測(cè)試的時(shí)候可能會(huì)用Eclispe這時(shí)候就需要

在Eclipse ->run- arguments中的M arguments 中輸入| -Xms32m-

Xmx80m這個(gè)參數(shù)就可以了。

后來(lái)在Eclilpse中修改了啟動(dòng)參數(shù),在VMarguments

加入了-Xms32m- -Xmx800m,問(wèn)題解決。

一、java. lang . OutOfMemoryError:PermGen space

PermGen space 的全稱是Pe rmanent Generation space ,是指內(nèi)存的

永久保存區(qū)域,

這塊內(nèi)存主要是被JVM存放Class和Meta信息的,Class在被L oader時(shí)就會(huì)被

放到PermGen space 中,它和存放類實(shí)例(Instance)的Heap區(qū)域不

同,GC(Garbage Collection) 不會(huì)在主程序運(yùn)行期對(duì)PermGen space

進(jìn)行清理,所以如果你的應(yīng)用中有很多CL ASS的話,

就很可能出現(xiàn)PermGen space 錯(cuò)誤,這種錯(cuò)誤常見(jiàn)在web服務(wù)器對(duì)JSP進(jìn)

行preco mpile的時(shí)候。如果你的WEB APP下都用了大量的第三方j(luò)ar,

其大小超過(guò)了jvm默認(rèn)的大小(4M)那么就會(huì)產(chǎn)生此錯(cuò)誤信息了。

解決方法:手動(dòng)設(shè)置MaxPermSize大小修

改TOMCAT HOME/bin/catalina.sh

在"echo"Using CATALINA_ BASE: $CATALINA_ BASE"". 上面加入以下

行: JAVA _0PTS="-server- XX: PermSize=64M- XX:MaxPermSize=128m

建議:將相同的第三方j(luò)ar文件移置到tomcat/shared/lib目錄下,這樣

可以達(dá)到減少jar文檔重復(fù)占用內(nèi)存的目的。

二、java. lang. OutOfMemoryError:Java heap space

Heap size設(shè)置

JVM堆的設(shè)置是指java程序運(yùn)行過(guò)程中JVM可以調(diào)配使用的內(nèi)存空間的設(shè)

置.JVM在啟動(dòng)的時(shí)候會(huì)自動(dòng)設(shè)置Heap size 的值,

其初始空間(即-Xms)是物理內(nèi)存的1/64,最大空間| (-Xmx) 是物理內(nèi)存

的1/4??梢岳肑MM提供的-Xmn -Xms -Xmx 等選項(xiàng)可進(jìn)行設(shè)置。Heap

size的大小是Young Generat ion和TenuredGeneraion

之和。

提示:在JVM中如果98%的時(shí)間是用于GC且可用的Heap size 不足2%

的時(shí)候?qū)伋龃水惓P畔ⅰ?/p>

提示: Heap Size 最大不要超過(guò)可用物理內(nèi)存的80%,-般的要將一

Xms和I-Xmx選項(xiàng)設(shè)置為相同,而-Xmn為1/4的-Xmx值。

解決方法:手動(dòng)設(shè)置Heap size

修改TOMCAT_ HOME/bin/catalina. sh

在"echo"Us ing CATALINA_ BASE:$CATALINA BASE""上面加入以下行:

| JAVA_ 0PTS="-server-Xms800m- -Xmx800m- Xx:MaxNewSize=256m"

三、實(shí)例,以下給出1G內(nèi)存環(huán)境下java jvm的參數(shù)設(shè)置參考:?

JAVA_ OPTS="-server- -Xms800m- -Xmx800m- XX: PermSize=64M-

XX:MaxNewSize=256m- -XX:MaxPermSize=128m-

Dj ava . awt . headless=true"

很大的web工程,用tomcat默認(rèn)分 配的內(nèi)存空間無(wú)法啟動(dòng),如果不是在

myeclipse中啟動(dòng)tomcat可以對(duì)tomcat

這樣設(shè)置:

| TOMCAT_ HOME/bin/ catalina. bat中添加這樣-句話:

set JAVA_ 0PTS=- server-Xms2048m- -Xmx4096m- XX: PermSize=512M-

XX:MaxPermSize=1024M-Duser . t imezone=GMT+08

或者

| set JAVA OPTS= -Xmx1024M- Xms512M- Xx:MaxPermSize= 256m

如果要在myeclipse中啟動(dòng),上述的修改就不起作用了, 可如下設(shè)置:

Myeclipse- >preferences->myeclipse- >servers->tomcat-

>tomcatx.x->JDK面板中的Opt ional Java VM arguments 中添加:日

Xmx1024M- Xms512M- -XX:MaxPermSize=256m

以上是轉(zhuǎn)貼,但本人遇見(jiàn)的問(wèn)題是:在myeclipse中啟動(dòng)Tomcat時(shí), 提

示"ava. lang . OutOfMemoryError:Java heap space", 解決辦法就

是:Myeclipse- ->preferences- ->myec Lipse>servers->tomcat-

>tomcatx.x->JDK面板中的

Optional Java VM arguments 中添加: -Xmx1024M- -Xms512M-

XX:MaxPermSize=256m

4、tomcat中如何禁止列目錄下的文件

在| {tomcat_ home}/ conf/web. xml中,把itings參 數(shù)設(shè)置成false即可,

如下:

5、Tomcat有 幾種部署方式

tomcat中四種部署項(xiàng)目方法

第一種方法:

在tomcat中的conf目錄中,在server . xml中的,,<host/> 節(jié)點(diǎn)中

添加:

至于Context節(jié)點(diǎn)屬性,可詳細(xì)見(jiàn)相關(guān)文檔。

第二種方法:

將web項(xiàng)目文件件拷貝到webapps目錄中。

第三種方法:

很靈活,在conf目錄中,新建Catalina (注意大小寫(xiě))

\| localhost目錄,在該目錄中新建一個(gè)xml文件,名字可以隨意取,

只要和當(dāng)前文件中的文件名不重復(fù)就行了,該xml文件的內(nèi)容為:

第3個(gè)方法有個(gè)優(yōu)點(diǎn),可以定義別名。服務(wù)器端運(yùn)行的項(xiàng)目名稱

為path,外部訪問(wèn)的URL 則使用XML 的文件名。這個(gè)方法很方便的隱

藏了項(xiàng)目的名稱,對(duì)一些項(xiàng)目名稱被固定不能更換,但外部訪問(wèn)時(shí)又想換

個(gè)路徑,非常有效。

第2、3還有優(yōu)點(diǎn),可以定義一些個(gè)性配置,如數(shù)據(jù)源的配置等。

第四種辦法:

可以用tomcat 在線后臺(tái)管理器,一般tomcat都打開(kāi)了,直接上傳war

就可以

6. Tomcat的優(yōu)化經(jīng)驗(yàn)

| Tomcat作為web服務(wù)器,它的處理性能直接關(guān)系到用戶體驗(yàn), 下面是種

常見(jiàn)的優(yōu)化措施:

●去掉對(duì)web.xml的監(jiān)視,把jsp提前編輯成Servlet。有富余物理內(nèi)

存的情況,加大tomcat使用的jvm 的內(nèi)存。

●服務(wù)器資源

服務(wù)器所能提供CPU、內(nèi)存、硬盤(pán)的性能對(duì)處理能力有決定性影響。

●對(duì)于高并發(fā)情況下會(huì)有大量的運(yùn)算,那么CPU的速度會(huì)直接影響到處理

速度。

,內(nèi)存在大量數(shù)據(jù)處理的情況下,將會(huì)有較大的內(nèi)存容量需求,可以用

-Xmx -Xms- XX:MaxPermSize等參數(shù)對(duì)內(nèi)存不同功能塊進(jìn)行劃分。我們之

前就遇到過(guò)內(nèi)存分配不足,導(dǎo)致虛擬機(jī)-直處于full GC,從而導(dǎo)致處

理能力嚴(yán)重下降。

●硬盤(pán)主要問(wèn)題就是讀寫(xiě)性能,當(dāng)大量文件進(jìn)行讀寫(xiě)時(shí),磁盤(pán)極容易成為

性能瓶頸。最好的辦法還是利用下面提到的緩存。

●利用緩存和壓縮

對(duì)于靜態(tài)頁(yè)面最好是能夠緩存起來(lái),這樣就不必每次從磁盤(pán)上讀。這里我

們采用了Nginx作為緩存服務(wù)器,將圖片、css、 js文件都進(jìn)行了緩存,有

效的減少了后端tomcat的訪問(wèn)。另外,為了能加快網(wǎng)絡(luò)傳輸速度,開(kāi)啟

gzip壓縮也是必不可少的。但考慮到tomcat已經(jīng)需要處理很多東西了,所

以把這個(gè)壓縮的工作就交給前端的Nginx來(lái)完成。

除了文本可以用gzip壓縮,其實(shí)很多圖片也可以用圖像處理工具預(yù)先進(jìn)行

壓縮,找到一個(gè)平衡點(diǎn)可以讓畫(huà)質(zhì)損失很小而文件可以減小很多。曾經(jīng)我

就見(jiàn)過(guò)-個(gè)圖片從300多kb壓縮到幾十kb,自己幾乎看不出來(lái)區(qū)別。

●采用集群

單個(gè)服務(wù)器性能總是有限的,最好的辦法自然是實(shí)現(xiàn)橫向擴(kuò)展,那么組建

tomcat集群是有效提升性能的手段。我們還是采用了Nginx來(lái)作為請(qǐng)求分

流的服務(wù)器,后端多個(gè)tomcat共享session來(lái)協(xié)同工作??梢詤⒖贾皩?xiě)的

《利用nginx+tomcat+memcached組建web服務(wù)器負(fù)載均衡》。

●優(yōu)化tomcat參數(shù)

這里以tomcat7的參數(shù)配置為例,需要修改conf/serve.xmlI文件,主要是優(yōu)

化連接配置,關(guān)閉客戶端dns查詢。

1.2、JVM性能優(yōu)化專題

1. Java類加載過(guò)程

Java類加載需要經(jīng)歷一下7個(gè)過(guò)程:

1.加載

加載是類加載的第一個(gè)過(guò)程, 在這個(gè)階段,將完成一下三件 事情:

●通過(guò)一個(gè)類的全限定名獲取該類的二進(jìn)制流。

●將該二進(jìn)制流中的靜態(tài)存儲(chǔ)結(jié)構(gòu)轉(zhuǎn)化為方法去運(yùn)行時(shí)數(shù)據(jù)結(jié)

構(gòu)。

●在內(nèi)存中生成該類的Class對(duì)象,作為該類的數(shù)據(jù)訪問(wèn)入口。

2.驗(yàn)證

驗(yàn)證的目的是為了確保Class文件的字節(jié)流中的信息不回危害到

虛擬機(jī).在該階段主要完成以下四鐘驗(yàn)證:

●文件格式驗(yàn)證:驗(yàn)證字節(jié)流是否符合Class文件的規(guī)范,如主次版本號(hào)

是否在當(dāng)前虛擬機(jī)范圍內(nèi),常量池中的常量是否有不被支持的類型.

●元數(shù)據(jù)驗(yàn)證:對(duì)字節(jié)碼描述的信息進(jìn)行語(yǔ)義分析,如這個(gè)類是否有父類,

是否集成了不被繼承的類等。

●字節(jié)碼驗(yàn)證:是整個(gè)驗(yàn)證過(guò)程中最復(fù)雜的一個(gè)階段,通過(guò)驗(yàn)證數(shù)據(jù)流和

控制流的分析,確定程序語(yǔ)義是否正確,主要針對(duì)方法體的驗(yàn)證。如:方

法中的類型轉(zhuǎn)換是否正確,跳轉(zhuǎn)指令是否正確等。

●符號(hào)引用驗(yàn)證:這個(gè)動(dòng)作在后面的解析過(guò)程中發(fā)生,主要是為了確保解

析動(dòng)作能正確執(zhí)行。

3.準(zhǔn)備

準(zhǔn)備階段是為類的靜態(tài)變量分配內(nèi)存并將其初始化為默認(rèn)值,這些內(nèi)存都

將在方法區(qū)中進(jìn)行分配。準(zhǔn)備階段不分配類中的實(shí)例變量的內(nèi)存,實(shí)例變

量將會(huì)在對(duì)象實(shí)例化時(shí)隨著對(duì)象-起分 配在Java堆中。

內(nèi)容過(guò)多大家可能也不能一直停留在這個(gè)界面,我直接無(wú)償分享給大家

獲取方法:

關(guān)注后,后臺(tái)私信白嫖就可以了.

2023年企業(yè)Java面試題精選的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
桐乡市| 格尔木市| 五大连池市| 福鼎市| 荃湾区| 长泰县| 康乐县| 八宿县| 蓬安县| 故城县| 乐安县| 察哈| 攀枝花市| 都江堰市| 仪陇县| 通州市| 措美县| 健康| 商城县| 定兴县| 杭州市| 龙州县| 临城县| 连城县| 沭阳县| 汽车| 辽宁省| 孟村| 体育| 比如县| 罗定市| 洛隆县| 新丰县| 民权县| 保康县| 芦溪县| 百色市| 延津县| 永顺县| 赤峰市| 滦南县|