新东方面试知识点记录
3.spring mvc 怎么接受http ?post 方式提交過來的xml數(shù)據(jù)?servlet中怎么接受?
?@RequestMapping(value="/jsonPrase",?headers = {"content-type=application/json","content-type=application/xml"})?
?? ???? @ResponseBody?
?? ???? public Object addUser(@RequestBody MsgTip tip) {?
4.8個(gè)常用的http狀態(tài)嗎及其含義
?成功2××? ?? ?? ? 成功處理了請(qǐng)求的狀態(tài)碼。
200? ?? ?? ?? ?? ?? ? 服務(wù)器已成功處理了請(qǐng)求并提供了請(qǐng)求的網(wǎng)頁(yè)。
204? ?? ?? ?? ?? ?? ? 服務(wù)器成功處理了請(qǐng)求,但沒有返回任何內(nèi)容。? ?? ?? ?? ?? ?? ?? ?? ??
重定向3××? ?? ? 每次請(qǐng)求中使用重定向不要超過 5 次。
301? ?? ?? ?? ?? ?? ? 請(qǐng)求的網(wǎng)頁(yè)已永久移動(dòng)到新位置。當(dāng)URLs發(fā)生變化時(shí),使用301代碼。搜索引擎索引中保存新的URL。
302? ?? ?? ?? ?? ?? ? 請(qǐng)求的網(wǎng)頁(yè)臨時(shí)移動(dòng)到新位置。搜索引擎索引中保存原來的URL。
304? ?? ?? ?? ?? ?? ? 如果網(wǎng)頁(yè)自請(qǐng)求者上次請(qǐng)求后沒有更新,則用304代碼告訴搜索引擎機(jī)器人,可節(jié)省帶寬和開銷。
客戶端錯(cuò)誤4××??表示請(qǐng)求可能出錯(cuò),妨礙了服務(wù)器的處理。
400? ?? ?? ?? ?? ?? ???服務(wù)器不理解請(qǐng)求的語(yǔ)法。
403? ?? ?? ?? ?? ?? ???服務(wù)器拒絕請(qǐng)求。
404? ?? ?? ?? ?? ?? ???服務(wù)器找不到請(qǐng)求的網(wǎng)頁(yè)。服務(wù)器上不存在的網(wǎng)頁(yè)經(jīng)常會(huì)返回此代碼。
410? ?? ?? ?? ?? ?? ???請(qǐng)求的資源永久刪除后,服務(wù)器返回此響應(yīng)。該代碼與 404(未找到)代碼相似,但在資源以前存在而現(xiàn)在不存在的情況下,有時(shí)用來替代404 代碼。如果資源已永久刪除,應(yīng)當(dāng)使用 301 指定資源的新位置。
服務(wù)器錯(cuò)誤5××? ?表示服務(wù)器在處理請(qǐng)求時(shí)發(fā)生內(nèi)部錯(cuò)誤。這些錯(cuò)誤可能是服務(wù)器本身的錯(cuò)誤,而不是請(qǐng)求出錯(cuò)。
500? ?? ?? ?? ?? ?? ?? ?服務(wù)器遇到錯(cuò)誤,無法完成請(qǐng)求。
503? ?? ?? ?? ?? ?? ?? ?服務(wù)器目前無法使用(由于超載或停機(jī)維護(hù))。通常,這只是暫時(shí)狀態(tài)。
5.說說對(duì)java nio的理解
Java NIO 由以下幾個(gè)核心部分組成:
- Channels
- Buffers
- Selectors
6.mysql 的jdbc driver 是怎么注冊(cè)到DriverManager中的
7.dubbo中異步調(diào)用怎么配置?怎么取消依賴服務(wù)的啟動(dòng)時(shí)檢查?
<dubbo:reference?id="demoServicemy2"???interface="com.test.dubboser.ServiceDemo2"> ?
?????<dubbo:method?name="getPerson"?async="true"?/> ?
</dubbo:reference> ?
關(guān)閉某個(gè)服務(wù)的啟動(dòng)時(shí)檢查:(沒有提供者時(shí)報(bào)錯(cuò))
<dubbo:reference interface="com.foo.BarService" check="false" />
關(guān)閉所有服務(wù)的啟動(dòng)時(shí)檢查:(沒有提供者時(shí)報(bào)錯(cuò))
<dubbo:consumer check="false" />
關(guān)閉注冊(cè)中心啟動(dòng)時(shí)檢查:(注冊(cè)訂閱失敗時(shí)報(bào)錯(cuò))
<dubbo:registry check="false" />
?
8.怎么通過zookerper 實(shí)現(xiàn)leader選擇?請(qǐng)寫出步驟
具體步驟
1、客戶端連接時(shí),在指定的目錄(這里假定為"/leader")創(chuàng)建一個(gè)EPHEMERAL_SEQUENTIAL的節(jié)點(diǎn),把內(nèi)網(wǎng)的IP數(shù)據(jù)存入創(chuàng)建節(jié)點(diǎn)。 2、獲取目錄的子點(diǎn)節(jié),并取得序列號(hào)最小的節(jié)點(diǎn),我們把這個(gè)節(jié)點(diǎn)設(shè)置為leader。當(dāng)此節(jié)點(diǎn)被刪除時(shí),證明leader斷線。 3、其它機(jī)器監(jiān)聽leader節(jié)點(diǎn),當(dāng)leader節(jié)點(diǎn)的刪除時(shí),再取目錄的最小子點(diǎn)節(jié)作為leader。9.maven profile怎么配置?引用場(chǎng)景是什么?
? ?mvn clean package -Pdev即構(gòu)建出生產(chǎn)環(huán)境需要的war包
10.MAVEN中怎么實(shí)現(xiàn)在發(fā)布時(shí)候編譯測(cè)試代碼?但不執(zhí)行測(cè)試用例?
在編譯的時(shí)候,加上"-Dmaven.test.skip=true"參數(shù)就好了
如果是eclipse執(zhí)行maven命令,可以配置該命令:Run as->Run Configurations->勾上Skip Tests
11.git中怎么修改最后一次提交點(diǎn)的說明信息
11.linux中怎么殺死占用80端口的進(jìn)程
第一步,輸入命令:netstat -tlnp列出系統(tǒng)里面監(jiān)聽網(wǎng)絡(luò)的TCP連接和相應(yīng)的進(jìn)程PID。
參數(shù)說明:
-t:表示列出TCP連接
-l:表示列出正在網(wǎng)絡(luò)監(jiān)聽的服務(wù)
-n:表示以端口號(hào)來顯示
-p:表示列出進(jìn)程PID kill -9 某個(gè)PID
12.kill 1234 ?kill -0 1234 kill -3 1234 kill -9 1234 區(qū)別
kill 殺死進(jìn)程
命令格式 kill -3 pid
kill -3 pid)用來打印Java進(jìn)程trace,并不會(huì)影響程序運(yùn)行,不用擔(dān)心他把程序殺死了;
kill -10 pid可觸發(fā)進(jìn)程進(jìn)行一次強(qiáng)制GC。
kill?-0 pid 不發(fā)送任何信號(hào),但是系統(tǒng)會(huì)進(jìn)行錯(cuò)誤檢查。
所以經(jīng)常用來檢查一個(gè)進(jìn)程是否存在,存在返回0;不存在返回1 ?
kill -9強(qiáng)行殺死進(jìn)程
13 。前序 中序 然后答后序 ? 前序是:根左右 中序: 左根右 后序:左右根
14.redis注意事項(xiàng)redis擊穿和redis高并發(fā)處理
緩存使用.png緩存擊穿:
查詢一個(gè)數(shù)據(jù)庫(kù)中不存在的數(shù)據(jù),比如商品詳情,查詢一個(gè)不存在的ID,每次都會(huì)訪問DB,如果有人惡意破壞,很可能直接對(duì)DB造成過大地壓力。
緩存擊穿的解決方案:
當(dāng)通過某一個(gè)key去查詢數(shù)據(jù)的時(shí)候,如果對(duì)應(yīng)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)都不存在,我們將此key對(duì)應(yīng)的value設(shè)置為一個(gè)默認(rèn)的值,比如“NULL”,并設(shè)置一個(gè)緩存的失效時(shí)間,這時(shí)在緩存失效之前,所有通過此key的訪問都被緩存擋住了。后面如果此key對(duì)應(yīng)的數(shù)據(jù)在DB中存在時(shí),緩存失效之后,通過此key再去訪問數(shù)據(jù),就能拿到新的value了。
緩存失效:
在高并發(fā)的環(huán)境下,如果此時(shí)key對(duì)應(yīng)的緩存失效,此時(shí)有多個(gè)進(jìn)程就會(huì)去同時(shí)去查詢DB,然后再去同時(shí)設(shè)置緩存。這個(gè)時(shí)候如果這個(gè)key是系統(tǒng)中的熱點(diǎn)key或者同時(shí)失效的數(shù)量比較多時(shí),DB訪問量會(huì)瞬間增大,造成過大的壓力。
緩存失效的解決方案:
- 將系統(tǒng)中key的緩存失效時(shí)間均勻地錯(cuò)開,防止統(tǒng)一時(shí)間點(diǎn)有大量的key對(duì)應(yīng)的緩存失效;
- 重新設(shè)計(jì)緩存的使用方式,當(dāng)我們通過key去查詢數(shù)據(jù)時(shí),首先查詢緩存,如果此時(shí)緩存中查詢不到,就通過分布式鎖進(jìn)行加鎖,取得鎖的進(jìn)程查DB并設(shè)置緩存,然后解鎖;其他進(jìn)程如果發(fā)現(xiàn)有鎖就等待,然后等解鎖后返回緩存數(shù)據(jù)或者再次查詢DB。
熱點(diǎn)key:
緩存中的某些Key(可能對(duì)應(yīng)用與某個(gè)促銷商品)對(duì)應(yīng)的value存儲(chǔ)在集群中一臺(tái)機(jī)器,使得所有流量涌向同一機(jī)器,成為系統(tǒng)的瓶頸,該問題的挑戰(zhàn)在于它無法通過增加機(jī)器容量來解決。
熱點(diǎn)key的解決方案:
- 客戶端熱點(diǎn)key緩存:將熱點(diǎn)key對(duì)應(yīng)value并緩存在客戶端本地,并且設(shè)置一個(gè)失效時(shí)間。對(duì)于每次讀請(qǐng)求,將首先檢查key是否存在于本地緩存中,如果存在則直接返回,如果不存在再去訪問分布式緩存的機(jī)器。
- 將熱點(diǎn)key分散為多個(gè)子key,然后存儲(chǔ)到緩存集群的不同機(jī)器上,這些子key對(duì)應(yīng)的value都和熱點(diǎn)key是一樣的。當(dāng)通過熱點(diǎn)key去查詢數(shù)據(jù)時(shí),通過某種hash算法隨機(jī)選擇一個(gè)子key,然后再去訪問緩存機(jī)器,將熱點(diǎn)分散到了多個(gè)子key上。
15.JVM oom內(nèi)存溢出怎么處理
? ?
三,常見內(nèi)存溢出錯(cuò)誤解決辦法
1,???OutOfMemoryError異常
除了程序計(jì)數(shù)器外,虛擬機(jī)內(nèi)存的其他幾個(gè)運(yùn)行時(shí)區(qū)域都有發(fā)生OutOfMemoryError(OOM)異常的可能,
Java Heap 溢出
一般的異常信息:java.lang.OutOfMemoryError:Java heap spacess
java堆用于存儲(chǔ)對(duì)象實(shí)例,我們只要不斷的創(chuàng)建對(duì)象,并且保證GC Roots到對(duì)象之間有可達(dá)路徑來避免垃圾回收機(jī)制清除這些對(duì)象,就會(huì)在對(duì)象數(shù)量達(dá)到最大堆容量限制后產(chǎn)生內(nèi)存溢出異常。
出現(xiàn)這種異常,一般手段是先通過內(nèi)存映像分析工具(如Eclipse Memory Analyzer)對(duì)dump出來的堆轉(zhuǎn)存快照進(jìn)行分析,重點(diǎn)是確認(rèn)內(nèi)存中的對(duì)象是否是必要的,先分清是因?yàn)閮?nèi)存泄漏(Memory Leak)還是內(nèi)存溢出(Memory Overflow)。
如果是內(nèi)存泄漏,可進(jìn)一步通過工具查看泄漏對(duì)象到GC Roots的引用鏈。于是就能找到泄漏對(duì)象時(shí)通過怎樣的路徑與GC Roots相關(guān)聯(lián)并導(dǎo)致垃圾收集器無法自動(dòng)回收。
如果不存在泄漏,那就應(yīng)該檢查虛擬機(jī)的參數(shù)(-Xmx與-Xms)的設(shè)置是否適當(dāng)。
2,???虛擬機(jī)棧和本地方法棧溢出
如果線程請(qǐng)求的棧深度大于虛擬機(jī)所允許的最大深度,將拋出StackOverflowError異常。
如果虛擬機(jī)在擴(kuò)展棧時(shí)無法申請(qǐng)到足夠的內(nèi)存空間,則拋出OutOfMemoryError異常
這里需要注意當(dāng)棧的大小越大可分配的線程數(shù)就越少。
3,???運(yùn)行時(shí)常量池溢出
異常信息:java.lang.OutOfMemoryError:PermGen space
如果要向運(yùn)行時(shí)常量池中添加內(nèi)容,最簡(jiǎn)單的做法就是使用String.intern()這個(gè)Native方法。該方法的作用是:如果池中已經(jīng)包含一個(gè)等于此String的字符串,則返回代表池中這個(gè)字符串的String對(duì)象;否則,將此String對(duì)象包含的字符串添加到常量池中,并且返回此String對(duì)象的引用。由于常量池分配在方法區(qū)內(nèi),我們可以通過-XX:PermSize和-XX:MaxPermSize限制方法區(qū)的大小,從而間接限制其中常量池的容量。
4,???方法區(qū)溢出
方法區(qū)用于存放Class的相關(guān)信息,如類名、訪問修飾符、常量池、字段描述、方法描述等。
異常信息:java.lang.OutOfMemoryError:PermGen space
方法區(qū)溢出也是一種常見的內(nèi)存溢出異常,一個(gè)類如果要被垃圾收集器回收,判定條件是很苛刻的。在經(jīng)常動(dòng)態(tài)生成大量Class的應(yīng)用中,要特別注意這點(diǎn)。
?
16.cdn怎么加速和怎么緩存
動(dòng)態(tài)內(nèi)容分發(fā)與復(fù)制技術(shù)
? ? ??大家都知道,網(wǎng)站訪問響應(yīng)速度取決于許多因素,如網(wǎng)絡(luò)的帶寬是否有瓶頸、傳輸途中的路由是否有阻塞和延遲、網(wǎng)站服務(wù)器的處理能力及訪問距離等。多數(shù)情況下,網(wǎng)站響應(yīng)速度和訪問者與網(wǎng)站服務(wù)器之間的距離有密切的關(guān)系。如果訪問者和網(wǎng)站之間的距離過遠(yuǎn)的話,它們之間的通信一樣需要經(jīng)過重重的路由轉(zhuǎn)發(fā)和處理,網(wǎng)絡(luò)延誤不可避免。一個(gè)有效的方法就是利用內(nèi)容分發(fā)與復(fù)制技術(shù),將占網(wǎng)站主體的大部分靜態(tài)網(wǎng)頁(yè)、圖像和流媒體數(shù)據(jù)分發(fā)復(fù)制到各地的加速節(jié)點(diǎn)上。所以動(dòng)態(tài)內(nèi)容分發(fā)與復(fù)制技術(shù)也是CDN所需的一個(gè)主要技術(shù)。
緩存技術(shù)
? ? ? ?緩存技術(shù)已經(jīng)不是一種新鮮技術(shù)。Web緩存服務(wù)通過幾種方式來改善用戶的響應(yīng)時(shí)間,如代理緩存服務(wù)、透明代理緩存服務(wù)、使用重定向服務(wù)的透明代理緩存服務(wù)等。通過Web緩存服務(wù),用戶訪問網(wǎng)頁(yè)時(shí)可以將廣域網(wǎng)的流量降至最低。對(duì)于公司內(nèi)聯(lián)網(wǎng)用戶來說,這意味著將內(nèi)容在本地緩存,而無須通過專用的廣域網(wǎng)來檢索網(wǎng)頁(yè)。對(duì)于Internet用戶來說,這意味著將內(nèi)容存儲(chǔ)在他們的ISP的緩存器中,而無須通過Internet來檢索網(wǎng)頁(yè)。這樣無疑會(huì)提高用戶的訪問速度。CDN的核心作用正是提高網(wǎng)絡(luò)的訪問速度,所以,緩存技術(shù)將是CDN所采用的又一個(gè)主要技術(shù)。
17.分布式鎖
?
轉(zhuǎn)載于:https://www.cnblogs.com/lvgg/p/6835999.html
總結(jié)
以上是生活随笔為你收集整理的新东方面试知识点记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql分组查询group by语句详
- 下一篇: 线段树(区间更改,区间查最值)模板