<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          十個(gè)形象比喻,助你理解計(jì)算機(jī)面試必備的知識(shí)點(diǎn)

          共 3089字,需瀏覽 7分鐘

           ·

          2021-08-10 12:28

          前言

          大家好,我是撿田螺的小男孩。計(jì)算機(jī)編程的很多知識(shí)點(diǎn),往往在日常生活中就有類(lèi)似的例子。最近整理了十個(gè)非常形象生動(dòng)的生活例子,助大家理解這些計(jì)算機(jī)面試必備的知識(shí)點(diǎn)。

          1.如何理解HTTP的無(wú)狀態(tài)?

          每次HTTP請(qǐng)求都是獨(dú)立的,無(wú)相關(guān)的,默認(rèn)不需要保存上下文信息的。我們來(lái)看個(gè)便于理解的例子:

          有狀態(tài):

          • A:今天吃啥子?
          • B:羅非魚(yú)!
          • A:味道怎么樣呀?
          • B:還不錯(cuò),好香。

          無(wú)狀態(tài):

          • A:今天吃啥子?
          • B:羅非魚(yú)!
          • A:味道怎么樣呀?
          • B:?啊?啥?什么鬼?什么味道怎么樣?

          加下cookie這玩意

          • A:今天吃啥子?
          • B:羅非魚(yú)
          • A:你今天吃的羅非魚(yú)味道怎么樣呀?
          • B:還不錯(cuò),好香。

          2. 什么是序列化?什么是反序列化?

          • 序列化:把Java對(duì)象轉(zhuǎn)換為字節(jié)序列的過(guò)程
          • 反序列:把字節(jié)序列恢復(fù)為Java對(duì)象的過(guò)程

          作為大城市漂泊的碼農(nóng),搬家是常態(tài)。當(dāng)我們搬書(shū)桌時(shí),桌子太大了就通不過(guò)比較小的門(mén),因此我們需要把它拆開(kāi)再搬過(guò)去,這個(gè)拆桌子的過(guò)程就是序列化。而我們把書(shū)桌復(fù)原回來(lái)(安裝)的過(guò)程就是反序列化啦。

          3. 什么是限流?

          我們?nèi)粘i_(kāi)發(fā)中,經(jīng)常聽(tīng)到接口限流,QPS多少等等這些詞。那么,什么是限流呢?在計(jì)算機(jī)網(wǎng)絡(luò)中,限流就是控制網(wǎng)絡(luò)接口發(fā)送或接收請(qǐng)求的速率

          舉個(gè)生活的例子:一些熱門(mén)的旅游景區(qū),一般會(huì)對(duì)每日的旅游參觀人數(shù)有限制的,每天只會(huì)賣(mài)出固定數(shù)目的門(mén)票,比如5000張。假設(shè)在五一、國(guó)慶假期,你去晚了,可能當(dāng)天的票就已經(jīng)賣(mài)完了,就無(wú)法進(jìn)去游玩了。即使你最后能進(jìn)去,排隊(duì)也排到你懷疑人生。

          4. TCP 握手為什么是三次?不能是兩次?不能是四次?

          TCP握手為什么是三次呢?為了方便理解,我們以談戀愛(ài)為例子:兩個(gè)人能走到一起,最重要的事情就是相愛(ài),就是我愛(ài)你,并且我知道,你也愛(ài)我,接下來(lái)我們以此來(lái)模擬三次握手的過(guò)程:

          為什么握手不能是兩次呢?

          如果只有兩次握手,女孩子可能就不知道,她的那句我也愛(ài)你,男孩子是否收到,戀愛(ài)關(guān)系就不能愉快展開(kāi)。

          為什么握手不能是四次呢?

          因?yàn)槲帐植荒苁撬拇文兀恳驗(yàn)槿我呀?jīng)夠了,三次已經(jīng)能讓雙方都知道:你愛(ài)我,我也愛(ài)你。而四次就多余了。

          5. 線程池工作原理

          面試官如果要我們講下線程池工作原理的話(huà),大家講下以下這個(gè)流程圖就可以啦:

          為了形象描述線程池執(zhí)行,加深大家的理解,我打個(gè)比喻:

          • 核心線程比作公司正式員工
          • 非核心線程比作外包員工
          • 阻塞隊(duì)列比作需求池
          • 提交任務(wù)比作提需求
          • 當(dāng)產(chǎn)品提個(gè)需求,正式員工(核心線程)先接需求(執(zhí)行任務(wù))
          • 如果正式員工都有需求在做,即核心線程數(shù)已滿(mǎn)),產(chǎn)品就把需求先放需求池(阻塞隊(duì)列)。
          • 如果需求池(阻塞隊(duì)列)也滿(mǎn)了,但是這時(shí)候產(chǎn)品繼續(xù)提需求,怎么辦呢?那就請(qǐng)外包(非核心線程)來(lái)做。
          • 如果所有員工(最大線程數(shù)也滿(mǎn)了)都有需求在做了,那就執(zhí)行拒絕策略。
          • 如果外包員工把需求做完了,它經(jīng)過(guò)一段(keepAliveTime)空閑時(shí)間,就離開(kāi)公司了。

          6. TCP的流量窗口如何控制流量

          我們來(lái)看課堂上:這么一個(gè)場(chǎng)景,老師講課,學(xué)生做筆記。假設(shè)老師念一段話(huà),要求學(xué)生孩子們做筆記,記錄下來(lái)。

          第一種模式:

          • 老師說(shuō),"從前有個(gè)人, 她叫馬冬梅. 她喜歡夏洛, 而夏洛卻喜歡秋雅."
          • 學(xué)生寫(xiě)道,"從前有...", "老師你說(shuō)的太快啦,我跟不上"

          于是他們換了模式二

          • 老師說(shuō),"從"
          • 學(xué)生寫(xiě),"從". 學(xué)生說(shuō)"嗯"
          • 老師說(shuō),"前"
          • 學(xué)生寫(xiě),"前". 學(xué)生說(shuō)"嗯"
          • 老師說(shuō),"今天我還想早點(diǎn)下班呢..."

          于是他們又換了一種模式,模式三

          • 老師說(shuō),"從前有個(gè)人"
          • 學(xué)生寫(xiě),"從前有個(gè)人". 學(xué)生說(shuō)"嗯"
          • 老師說(shuō),"她叫馬冬梅".
          • 學(xué)生寫(xiě),"她叫馬...梅". 學(xué)生說(shuō)"馬什么梅?"
          • 老師說(shuō),"她叫馬冬梅".
          • 學(xué)生寫(xiě)"她叫馬冬...". 學(xué)生說(shuō)"馬冬什么?"
          • 老師,"....."
          • 學(xué)生說(shuō),"有的時(shí)候狀態(tài)好我能把5個(gè)字都記下來(lái), 有的時(shí)候狀態(tài)不好就記不下來(lái). 我狀態(tài)不好的時(shí)候你能不能慢一點(diǎn)呢

          于是他們換了模式四:

          • 老師說(shuō),"從前有個(gè)人"
          • 學(xué)生寫(xiě),"從前有個(gè)人". 學(xué)生說(shuō)"嗯, 再來(lái)5個(gè)"
          • 老師說(shuō),"她叫馬冬梅"
          • 學(xué)生寫(xiě),"她叫馬..梅". 學(xué)生說(shuō),"啥?重來(lái), 來(lái)2個(gè)"
          • 老師說(shuō),"她叫".學(xué)生寫(xiě),"她叫".
          • 學(xué)生說(shuō),"嗯,再來(lái)3個(gè)"
          • 老師說(shuō),"馬冬梅".
          • 學(xué)生寫(xiě),"馬冬梅".
          • 學(xué)生說(shuō),"嗯, 給我來(lái)20個(gè)"
          • 老師說(shuō),"她喜歡夏洛,而夏洛卻喜歡秋雅"
          • 學(xué)生寫(xiě)...

          因此呢

          • 第一種模式簡(jiǎn)單粗暴, 發(fā)的只管發(fā), 收的可能跟不上.
          • 第二種模式穩(wěn)定卻低效, 每發(fā)一個(gè), 必須等到確認(rèn)才再次發(fā)送, 等待時(shí)間比較多.
          • 第三種模式提高了效率, 分組進(jìn)行發(fā)送, 但是分組的大小該怎么決定呢?
          • 第四中模式才真正起到了流控的作用, 接收方認(rèn)為狀態(tài)好的時(shí)候, 讓發(fā)送方每次多發(fā)一點(diǎn). 接收方認(rèn)為狀態(tài)不好的時(shí)候(阻塞), 讓發(fā)送方每次少發(fā)送一點(diǎn)。

          7. BIO、NIO,AIO的區(qū)別

          • 同步阻塞(blocking-IO)簡(jiǎn)稱(chēng)BIO
          • 同步非阻塞(non-blocking-IO)簡(jiǎn)稱(chēng)NIO
          • 異步非阻塞(asynchronous-non-blocking-IO)簡(jiǎn)稱(chēng)AIO

          一個(gè)生活的例子

          • 小明去吃同仁四季的椰子雞,就這樣在那里排隊(duì),等了一小時(shí),然后才開(kāi)始吃火鍋。(BIO)
          • 小紅也去同仁四季的椰子雞,她一看要等挺久的,于是去逛會(huì)商場(chǎng),每次逛一下,就跑回來(lái)看看,是不是輪到她了。于是最后她既購(gòu)了物,又吃上椰子雞了。(NIO)
          • 小華一樣,去吃椰子雞,由于他是高級(jí)會(huì)員,所以店長(zhǎng)說(shuō),你去商場(chǎng)隨便逛會(huì)吧,等下有位置,我立馬打電話(huà)給你。于是小華不用干巴巴坐著等,也不用每過(guò)一會(huì)兒就跑回來(lái)看有沒(méi)有等到,最后也吃上了美味的椰子雞(AIO)

          8. 什么死鎖?

          死鎖是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過(guò)程中,由于競(jìng)爭(zhēng)資源或者由于彼此通信而造成的一種阻塞的現(xiàn)象,若無(wú)外力作用,它們都將無(wú)法推進(jìn)下去。

          假設(shè)你要開(kāi)車(chē)進(jìn)入一個(gè)村子,村口有條非常窄的路,只能容納一輛車(chē)過(guò)。這時(shí)候,迎面又駛來(lái)一輛車(chē),你們都走到一半,誰(shuí)也不想倒回去,于是各不相讓?zhuān)萑霟o(wú)盡的等待。

          9. TCP為什么需要四次揮手

          舉個(gè)例子吧,假設(shè)小明和小紅打電話(huà)聊天,通話(huà)差不多要結(jié)束時(shí)

          小紅說(shuō),“我沒(méi)啥要說(shuō)的了”。小明回答,“我知道了”。但是小明可能還有要說(shuō)的話(huà),小紅不能要求小明跟著自己的節(jié)奏結(jié)束通話(huà),于是小明可能又嘰嘰歪歪說(shuō)了一通,最后小明說(shuō)“我說(shuō)完了”,小紅回答“知道了”,這樣通話(huà)才算結(jié)束。

          10. select和 epoll的區(qū)別

          說(shuō)到select和epoll,相信大家都很熟悉了,它們都使用了IO多路復(fù)用機(jī)制。可以監(jiān)視多個(gè)描述符的讀/寫(xiě)等事件,一旦某個(gè)描述符就緒(一般是讀或者寫(xiě)事件發(fā)生了),就能夠?qū)l(fā)生的事件通知對(duì)應(yīng)的應(yīng)用程序去處理該事件。

          select 和 epoll 的本質(zhì)區(qū)別在哪里呢?

          • 當(dāng)套接字比較多的時(shí)候,每次select()都要通過(guò)遍歷FD_SETSIZE個(gè)Socket來(lái)完成調(diào)度,不管哪個(gè)Socket是活躍的,統(tǒng)統(tǒng)都遍歷一遍
          • epoll使用“事件”的就緒通知方式,給套接字注冊(cè)某個(gè)回調(diào)函數(shù),只有活躍可用的FD,自動(dòng)完成相關(guān)操作,避免了輪詢(xún),提升了效率。

          舉個(gè)生活類(lèi)似的例子:

          假如時(shí)光倒流,我們回到大學(xué)讀書(shū)。你去女生宿舍,找你女朋友。于是你找到了宿管大媽?zhuān)薰艽髬尵蜁?huì)帶著你,挨個(gè)房間去找,直到找到你女朋友(這就是select版);而epoll版版本呢,你來(lái)了,把你女朋友的名字和宿舍房號(hào)報(bào)給舍管大媽?zhuān)髬尵椭苯訋湍阏业侥闩笥选?/p>


          瀏覽 35
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩三级视频网站 | 大鸡巴AV| 亚洲午夜福利一区二区三区 | 国产操逼视频网 | 伊人成人影片 |