在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    計(jì)算機(jī)行業(yè)IT面試題第1期

    了解哪些開(kāi)源的rpc框架?dubbo的調(diào)用過(guò)程簡(jiǎn)單說(shuō)一下?

    1、RMI,遠(yuǎn)程方法調(diào)用;2、Hessian,基于HTTP的遠(yuǎn)程方法調(diào)用;3、Dubbo支持多種協(xié)議

    dubbo調(diào)用過(guò)程:

    角色:provider提供者,registry注冊(cè)中心,consumer消費(fèi)者

    provider啟動(dòng):向registry注冊(cè)自己,能調(diào)用那些服務(wù)等

    consumer啟動(dòng):向registry注冊(cè)獲取provider列表,并進(jìn)行本地緩存(這也就是當(dāng)注冊(cè)中心掛掉,consumer還能進(jìn)行遠(yuǎn)程調(diào)用的原因)

    consumer進(jìn)行遠(yuǎn)程調(diào)用時(shí):先根據(jù)接口進(jìn)行代理找到最頂層Invoker,里面包含了可以調(diào)用的provider列表,也就是一堆invoker,通過(guò)loadBalance負(fù)載均衡選擇某一個(gè)具體的invoker,然后進(jìn)行filter過(guò)濾,具體的invoker使用執(zhí)行的協(xié)議protocol發(fā)送數(shù)據(jù)到指定的provider,provider經(jīng)過(guò)相同的協(xié)議解析數(shù)據(jù),然后找到執(zhí)行的invoker,調(diào)用具體實(shí)現(xiàn)的方法返回執(zhí)行結(jié)果

    補(bǔ)充:dubbo底層調(diào)用原理

    shiro框架記住我的功能是怎么實(shí)現(xiàn)的??

    在執(zhí)行onSuccessfulLogin(token,info,logggedIn)方法中,有一個(gè)remeberSerializedIdentity()方法,該方法將用戶信息,構(gòu)造為一個(gè)SimpleCookie存放到request和response中實(shí)現(xiàn)記住我的功能

    tcp協(xié)議建立連接、釋放連接的過(guò)程。

    tcp是傳輸層協(xié)議,建立連接需要進(jìn)行三次握手,釋放連接需要四次揮手

    建立連接:

    client發(fā)送SYN(seq=1000)到server 第一次握手

    server發(fā)送SYN+ACK(seq=2000,ack=1001=client發(fā)送的seq+1)到client 第二次握手

    client發(fā)送ACK(ack=2001=server發(fā)送的seq+1)到server 第三次握手

    釋放連接:

    client發(fā)送FIN(seq=5000)到server 第一次揮手 我沒(méi)有數(shù)據(jù)發(fā)送了,我想關(guān)閉連接了

    server發(fā)送ACK(seq=6000,ack=5001=client發(fā)送的seq+1)到client 第二次揮手 知道了,我還沒(méi)準(zhǔn)備好

    server發(fā)送FIN(seq=6001,ack=5001=client發(fā)送的seq+1)到client 第三次揮手 我也可以關(guān)閉連接了

    client發(fā)送ACK(seq=5001=自己第一次發(fā)送的seq+1,ack=6002=server發(fā)送的seq+1)到server 第四次揮手,知道了拜拜。

    http、https的區(qū)別?

    https協(xié)議需要到ca申請(qǐng)證書(shū),一般免費(fèi)證書(shū)很少,需要交費(fèi)。

    http是超文本傳輸協(xié)議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協(xié)議

    http和https使用的是完全不同的連接方式用的端口也不一樣,前者是80,后者是443。

    http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的

    HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議 要比http協(xié)議安全

    https加密的機(jī)制了解過(guò)嗎?

    采用對(duì)稱加密+非對(duì)稱加密的方式:

    服務(wù)器持有公鑰A,私鑰A

    1.服務(wù)器將公鑰A通過(guò)明文方式發(fā)送給瀏覽器

    2.瀏覽器生成對(duì)稱加密的秘鑰C,使用公鑰A加密后發(fā)送給服務(wù)器

    3.服務(wù)器使用私鑰A將拿到的密文解密成秘鑰C

    4.之后瀏覽器跟服務(wù)器之間的數(shù)據(jù)傳遞都使用秘鑰C加解密方式進(jìn)行傳輸

    看著好像沒(méi)問(wèn)題,請(qǐng)看下面的流程

    1.服務(wù)器將公鑰A通過(guò)明文方式發(fā)送給瀏覽器

    中間人劫持到公鑰A,中間人有公鑰B和私鑰B,他將公鑰B傳送給瀏覽器,自己保留公鑰A

    2.瀏覽器生成對(duì)稱加密的秘鑰C,使用公鑰B加密后發(fā)送給服務(wù)器

    中間人拿到瀏覽器生成的秘鑰C的密文,使用自己的私鑰B進(jìn)行解密,拿到了密鑰C,他再使用公鑰A加密密鑰C,發(fā)送到服務(wù)器

    3.服務(wù)器使用私鑰A將拿到的密文解密成秘鑰C

    4.之后瀏覽器跟服務(wù)器之間的數(shù)據(jù)傳遞都使用秘鑰C加解密方式進(jìn)行傳輸

    到這里瀏覽器,中間人,服務(wù)器都有了秘鑰C,意思是瀏覽器與服務(wù)器進(jìn)行數(shù)據(jù)交互,中間人都可以解析成明文

    這里就引入了CA證書(shū),CA證書(shū)包含了網(wǎng)站信息,公鑰信息,服務(wù)器傳遞給瀏覽器的就是證書(shū)

    補(bǔ)充:https加密原理

    創(chuàng)建線程有哪幾種方式?

    1.直接繼承Thread

    2.實(shí)現(xiàn)Runnable接口

    2.實(shí)現(xiàn)Callable接口

    Runnable和Callable創(chuàng)建線程有什么區(qū)別?

    Runnable:沒(méi)有返回值,外面不能捕獲到異常

    Callable:有返回值,外面可以捕獲到異常

    線程池哪幾種?分別說(shuō)一下?

    corePoolSize:核心線程數(shù),如果他們創(chuàng)建了,它們會(huì)一直存在于線程池中,直到線程池關(guān)閉

    maximunPoolSize:線程池可創(chuàng)建的最大線程數(shù)(核心線程與輔線程總和),這個(gè)值必須大于corePoolSize的值,否則會(huì)拋IllegalArgumentException

    keepAliveTime:輔線程的空閑等待時(shí)間,一個(gè)輔線程等待多少時(shí)間還沒(méi)有任務(wù)給它處理,它就被銷(xiāo)毀

    unit:keepAliveTime的單位(天,小時(shí),分鐘,秒,毫秒等等)

    workQueue:任務(wù)等待隊(duì)列,如果需要處理的任務(wù)大于線程池中的線程數(shù),未處理的任務(wù)會(huì)暫存在任務(wù)隊(duì)列(ps:不一定會(huì)保存任務(wù)到隊(duì)列,需要根據(jù)當(dāng)前任務(wù)隊(duì)列的類(lèi)型來(lái)判斷,后面詳細(xì)講解)

    threadFactory:線程創(chuàng)建工廠,一般使用默認(rèn)(Executors.defaultThreadFactory())即可,可以自定義

    handler:拒接策略,如果線程池中線程都在處理任務(wù),任務(wù)隊(duì)列中保存的任務(wù)也達(dá)到最大值,不能再接收任務(wù)了,如何拒絕

    補(bǔ)充:java之ThreadPoolExecutor

    Java里面的鎖有哪些?

    樂(lè)觀說(shuō):cas

    悲觀鎖:每次讀寫(xiě)數(shù)據(jù)都怕被別人修改,就加上鎖

    自旋鎖:如果別的線程占用了資源,自旋一段時(shí)間,不直接進(jìn)入阻塞,自旋期間獲取到資源就不用進(jìn)行上下文切換,提高效率

    可重入鎖:線程A占用了資源B,線程A需要再訪問(wèn)資源B可以直接訪問(wèn),可重入

    公平鎖:資源等待隊(duì)列,誰(shuí)先來(lái),下次先把資源交給誰(shuí)

    非公平鎖:隨機(jī)分配資源給某個(gè)線程,可能導(dǎo)致某個(gè)線程一直分配不到資源,饑餓等待

    補(bǔ)充:java中的鎖總結(jié)

    說(shuō)說(shuō)volatile 關(guān)鍵字的作用?

    保證了可見(jiàn)性,有序性(禁止指令重排)

    一般的變量在使用時(shí),線程會(huì)將變量的值拷貝一份到自己的工作內(nèi)存,這就會(huì)導(dǎo)致有的線程更新了數(shù)據(jù),還未刷新到主內(nèi)存,別的線程使用的還是原來(lái)的舊數(shù)據(jù),導(dǎo)致程序的最終值與期望值相差很大,使用volatile關(guān)鍵之修飾的變量,線程每次使用變量時(shí),都會(huì)直接到主內(nèi)存中取,保證了可見(jiàn)性,一個(gè)線程對(duì)該變量的修改,對(duì)其他線程來(lái)說(shuō)是立即可見(jiàn)的

    mysql有哪些鎖?

    行鎖(Record Locks)

    間隙鎖(Gap Locks)

    臨鍵鎖(Next-key Locks)

    共享鎖/排他鎖(Shared and Exclusive Locks)

    意向共享鎖/意向排他鎖(Intention Shared and Exclusive Locks)

    插入意向鎖(Insert Intention Locks)

    自增鎖(Auto-inc Locks)

    補(bǔ)充:mysql中的鎖

    select for update是表鎖還是行鎖?

    如果查詢條件用了索引/主鍵,那么select ….. for update就會(huì)進(jìn)行行鎖。

    如果是普通字段(沒(méi)有索引/主鍵),那么select ….. for update就會(huì)進(jìn)行鎖表。

    加了索引一定會(huì)走索引嗎?索引失效的情況有哪些?

    不一定會(huì)走索引,有很多索引失效的情況:

    1.like后匹配,例如’%張’

    2.組合索引,沒(méi)有按照順序使用,例如age,name,address, 查詢時(shí)直接使用name

    3.如果字段為字符串類(lèi)型,一定要加引號(hào),否則存在隱式轉(zhuǎn)換

    4.對(duì)字段進(jìn)行了計(jì)算或者使用函數(shù)的,例如left(name,2) = ‘xxx’

    補(bǔ)充:mysql索引失效的幾種情況

    如果我想要強(qiáng)制走某個(gè)索引,能實(shí)現(xiàn)嗎?

    使用force index關(guān)鍵字

    select*from table force index(index1,index2)

    說(shuō)一下Spring bean的生命周期?bean什么時(shí)候會(huì)被銷(xiāo)毀呢?

    生命周期:

    1.實(shí)例化

    2.設(shè)置屬性

    3.如果實(shí)現(xiàn)了BeanNameware就調(diào)用setBeanName

    4.如果實(shí)現(xiàn)了BeanFactoryAware就調(diào)用setBeanFactory

    5.如果實(shí)現(xiàn)了ApplicationContextAware就調(diào)用setApplicationContext

    6.如果實(shí)現(xiàn)了BeanPostProcessor就調(diào)用postProcessorBeforeInitalization

    7.如果實(shí)現(xiàn)了InitailzingBean方法就調(diào)用afterPropertiesSet

    8.如果實(shí)現(xiàn)了BeanPostProcessor就調(diào)用postProcessorAfterInitalization

    9.如果實(shí)現(xiàn)了DisposableBean就調(diào)用destroy方法

    什么時(shí)候銷(xiāo)毀:

    singleton的會(huì)存放到上下文銷(xiāo)毀時(shí),才會(huì)銷(xiāo)毀

    prototype 又叫多例模式,用的時(shí)候就new一下,用完就沒(méi)有了。

    session 存在這一次會(huì)話 session 中,session沒(méi)有過(guò)期它就一直存在,session過(guò)期后它就沒(méi)了。

    request 存在這一次請(qǐng)求中,請(qǐng)求結(jié)束了它就結(jié)束。

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    上一篇 2022年6月16日 21:17
    下一篇 2022年6月16日 21:18

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息