欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

給個(gè)offer就要 level
獲贊
43
粉絲
55
關(guān)注
6
看過(guò) TA
366
門頭溝學(xué)院
2026
C++
IP屬地:上海
正在認(rèn)真學(xué)習(xí)計(jì)算機(jī)的小趴菜~
私信
關(guān)注
0 點(diǎn)贊 評(píng)論 收藏
分享
04-20 22:11
已編輯
門頭溝學(xué)院 C++
1. C++中的內(nèi)存分布?2. 在成員函數(shù)中調(diào)用delete this會(huì)出現(xiàn)什么問(wèn)題呢?對(duì)象還可以使用嗎?3. 如果在類的析構(gòu)函數(shù)調(diào)用delete this會(huì)出現(xiàn)什么問(wèn)題?4. 類對(duì)象的內(nèi)存大小手那些因素影響?1. 包括堆、棧、全局/靜態(tài)變量區(qū)、常量區(qū)、代碼區(qū);在執(zhí)行函數(shù)的時(shí)候,函數(shù)內(nèi)部變量的存儲(chǔ)單元可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時(shí)這些存儲(chǔ)單元自動(dòng)釋放。堆區(qū)是由用戶采用new創(chuàng)建并使用delete釋放,需要人為手動(dòng)釋放,如果忘記,可能會(huì)造成內(nèi)存泄漏;全局/靜態(tài)變量區(qū)一般存儲(chǔ)全局的變量和由static聲明的變量;常量區(qū)指的是不可以更改的變量;代碼區(qū)存放程序的二進(jìn)制代碼;2. 在類對(duì)象的內(nèi)存空間中,只有數(shù)據(jù)成員和虛函數(shù)表指針,并不包含代碼內(nèi)容,類的成員函數(shù)單獨(dú)放在代碼段中。調(diào)用了delete this指針后,會(huì)將類對(duì)象的內(nèi)存空間釋放;后續(xù)只要不要涉及到this指針的內(nèi)容,都能夠正常運(yùn)行;3. 會(huì)導(dǎo)致堆棧溢出;因?yàn)闀?huì)反復(fù)調(diào)用本對(duì)象的析構(gòu)函數(shù),導(dǎo)致無(wú)限循環(huán);4. 類的非靜態(tài)成員變量大小;內(nèi)存對(duì)齊另外分配的空間大小;擁有虛函數(shù)的話,會(huì)在類對(duì)象中插入vptr指針;如果該類是派生類的話,會(huì)繼承基類部分的數(shù)據(jù)成員;
0 點(diǎn)贊 評(píng)論 收藏
分享
04-02 21:12
已編輯
門頭溝學(xué)院 C++
1. 讀寫鎖如何實(shí)現(xiàn)?2. 如何實(shí)現(xiàn)線程池?線程池里放了多個(gè)任務(wù)后,這些任務(wù)怎么分配到各線程的?3.哈希表的原理是什么?4.怎么實(shí)現(xiàn)對(duì)一個(gè)樹(shù)結(jié)構(gòu)進(jìn)行廣度優(yōu)先遍歷?5.棧內(nèi)存和堆內(nèi)存的區(qū)別?棧為什么分配速度快?它具體怎么分配?6.當(dāng)使用new創(chuàng)建一個(gè)新的數(shù)組,它指針是虛擬地址還是物理地址?什么時(shí)候回真正映射到物理內(nèi)存?7.https加密原理是怎么樣的?8.如果有個(gè)假冒服務(wù)器,它也可以跟你握手嗎?1. 讀寫鎖是一種并發(fā)控制機(jī)制,允許多個(gè)線程同時(shí)讀取共享資源,但寫操作需要獨(dú)占訪問(wèn);初始化一個(gè)互斥鎖(用于保護(hù)共享轉(zhuǎn)態(tài)),初始化一個(gè)條件變量(用于阻塞等待的線程);讀鎖:如果沒(méi)有寫線程正在訪問(wèn),允許讀線程進(jìn)入;寫鎖:如果沒(méi)有讀線程或?qū)懢€程正在訪問(wèn),允許寫線程進(jìn)入;解鎖:讀線程解鎖時(shí),介紹讀取計(jì)數(shù);寫線程解鎖時(shí),通知等待的線程;2. 線程池,通過(guò)三個(gè)類實(shí)現(xiàn),(1)線程類,用于控制線程的啟動(dòng)和停止,以及維護(hù)一個(gè)指向事件循環(huán)的指針;(2)程池類:用于管理線程,包括初始化線程數(shù)量,已經(jīng)放置一個(gè)任務(wù)隊(duì)列,每來(lái)一個(gè)事件就放到隊(duì)列里,如果有空閑線程就喚醒去執(zhí)行;(3)任務(wù)函數(shù)的接口類,寫一個(gè)基類,自己通過(guò)子類來(lái)自定義函數(shù);線程池收到任務(wù)后,會(huì)把任務(wù)放到共享的任務(wù)隊(duì)列里面,每個(gè)線程會(huì)在循環(huán)里去拿任務(wù),拿到任務(wù)時(shí)要加鎖互斥,誰(shuí)先拿到就執(zhí)行。另外還可以考慮給任務(wù)添加優(yōu)先級(jí)3. 通過(guò)哈希函數(shù)將將鍵值映射到數(shù)組索引,再用數(shù)組存儲(chǔ)鍵值對(duì)。舉例:像C++中的unorder_map,使用鏈地址法解決沖突,在哈希沖突時(shí)把多個(gè)元素放到同一個(gè)桶里鏈表中。當(dāng)存儲(chǔ)的元素跟數(shù)組大小的比值超過(guò)一定閾值,會(huì)進(jìn)行自動(dòng)擴(kuò)容;4.  廣度優(yōu)先遍歷就是對(duì)每一層進(jìn)行遍歷,用隊(duì)列實(shí)現(xiàn);先把根節(jié)點(diǎn)入隊(duì),出隊(duì)時(shí)訪問(wèn),然后把它的子節(jié)點(diǎn)按順序入隊(duì),一直到隊(duì)列為空;5. 棧由操作系統(tǒng)自動(dòng)分配回收,存儲(chǔ)函數(shù)的現(xiàn)參、局部變量、返回地址等;堆是通過(guò)new/delete或者malloc/free由程序自己分配釋放,能分配更大的內(nèi)存,但可能會(huì)出現(xiàn)內(nèi)存碎片等問(wèn)題;操作系統(tǒng)在底層對(duì)棧提供支持,會(huì)分配專門的寄存器存放棧的地址,另外它的入棧出棧操作也十分簡(jiǎn)單,并且由專門的指令執(zhí)行,所以下來(lái)會(huì)很快;堆的操作是由C/C++函數(shù)庫(kù)提供,在分配內(nèi)存的時(shí)候需要一定的算法尋找合適大小的內(nèi)存。并且獲取堆的內(nèi)容需要兩次訪問(wèn),第一次訪問(wèn)指針,第二次根據(jù)指針保存的地址訪問(wèn)內(nèi)存,因此堆比較慢。6. 并不是物理內(nèi)存,而是虛擬地址,后面需要通過(guò)頁(yè)表和MMU(內(nèi)存管理單元)來(lái)映射到物理內(nèi)存;操作系統(tǒng)采用懶加載策略,只有在程序訪問(wèn)這塊內(nèi)存時(shí),才會(huì)將虛擬內(nèi)存頁(yè)映射到物理內(nèi)存。也就是說(shuō),程序觸發(fā)缺頁(yè)中斷時(shí),操作系統(tǒng)才會(huì)分配物理內(nèi)存并更新頁(yè)表來(lái)完成映射。7. 客戶端會(huì)發(fā)送一個(gè)Client random + TLS版本號(hào) + 支持的密碼套件列表的信息給服務(wù)端,服務(wù)器回應(yīng)一個(gè)Server random + 自己的數(shù)字證書;客戶端通過(guò)證書認(rèn)證機(jī)構(gòu)(CA)來(lái)驗(yàn)證證書是否合法,確認(rèn)服務(wù)器身份后,用服務(wù)器的公鑰加密一個(gè)pre-master發(fā)回給服務(wù)器;服務(wù)器用私鑰解密得到該數(shù);后面的就使用這個(gè)生成的會(huì)話秘鑰client random + Server random + pre-master進(jìn)行對(duì)稱加密傳輸;8. 如果是一個(gè)假冒服務(wù)器,它的證書沒(méi)有權(quán)威CA的簽名,或者證書域名不匹配,客戶端會(huì)提示不信任,阻止連接。CA:是證書頒發(fā)機(jī)構(gòu),負(fù)責(zé)簽發(fā);證書:由CA頒發(fā)的電子文件,包含公鑰、身份信息和CA的簽名等;
0 點(diǎn)贊 評(píng)論 收藏
分享
1. 什么是虛函數(shù)、純虛函數(shù)?2. 什么函數(shù)不能聲明為虛函數(shù),析構(gòu)為什么要聲明為虛函數(shù)?3. 沒(méi)有虛函數(shù)的話,C++如何實(shí)現(xiàn)多態(tài)4. 同一個(gè)類的不同對(duì)象的虛函數(shù)表是同一個(gè)嗎5. 基類的虛函數(shù)表存放在內(nèi)存的什么區(qū),虛表指針vptr的初始化時(shí)間?6. 虛函數(shù)內(nèi)部調(diào)用非虛函數(shù)是調(diào)用指針類還是對(duì)象類?7. 純虛函數(shù)?使用場(chǎng)景有哪些?8. 純虛繼承解決什么問(wèn)題?1. 虛函數(shù)是在面向?qū)ο缶幊讨杏糜趯?shí)現(xiàn)動(dòng)態(tài)多態(tài)特性的機(jī)制;通過(guò)將基類的成員函數(shù)聲明為虛函數(shù),可以在派生類中重寫這些函數(shù),從而根據(jù)對(duì)象的實(shí)際類型確定調(diào)用函數(shù)版本;純虛函數(shù)是一個(gè)在基類聲明的虛函數(shù),但沒(méi)有在基類中提供實(shí)現(xiàn)。通過(guò)在函數(shù)聲明的結(jié)尾使用=0來(lái)標(biāo)記;2. 構(gòu)造函數(shù):因?yàn)樵趯?duì)象構(gòu)建之前還未創(chuàng)建虛函數(shù)表;靜態(tài)函數(shù):靜態(tài)函數(shù)沒(méi)有this指針,與對(duì)象無(wú)關(guān),不能聲明為虛函數(shù);內(nèi)聯(lián)函數(shù):虛函數(shù)可以是內(nèi)聯(lián)的,但是當(dāng)虛函數(shù)表現(xiàn)為多態(tài)的時(shí)候不可以是內(nèi)聯(lián),因?yàn)閮?nèi)聯(lián)是發(fā)生在編譯期間的,而動(dòng)態(tài)是發(fā)生在運(yùn)行狀態(tài);析構(gòu)函數(shù)可以是虛函數(shù),而且建議都這么做,當(dāng)將基類中的析構(gòu)函數(shù)聲明為虛函數(shù)的時(shí)候,在執(zhí)行析構(gòu)的時(shí)候,可以確保派生類的析構(gòu)函數(shù)也被執(zhí)行;3.  使用函數(shù)指針,使用模版(在編譯時(shí)實(shí)現(xiàn)多態(tài)),使用策略模式(運(yùn)行在運(yùn)行時(shí)選擇算法和行為);4. 同一個(gè)類的不同對(duì)象的虛函數(shù)表是相同的,因?yàn)樘摵瘮?shù)表是按類生成的,而不是按對(duì)象生成的。每個(gè)對(duì)象的虛函數(shù)指針指向類的虛函數(shù)表,從而實(shí)現(xiàn)多態(tài)調(diào)用;5. 存儲(chǔ)在常量區(qū)(只讀數(shù)據(jù)段),vptr的初始化發(fā)生在對(duì)象的構(gòu)造函數(shù)被調(diào)用時(shí);6. 當(dāng)一個(gè)虛函數(shù)內(nèi)部調(diào)用一個(gè)非虛函數(shù)時(shí),調(diào)用的是指針類型所指向的類中的函數(shù),而不是對(duì)象實(shí)際類型的類中的函數(shù);7. 純虛函數(shù)是C++中用于定義抽象基類的工具。一個(gè)包含純虛函數(shù)的類被稱為抽象類,不能被實(shí)例化。純虛函數(shù)的目的是讓基類定義一個(gè)接口,而不提供具體的實(shí)現(xiàn),具體的實(shí)現(xiàn)由派生類來(lái)完成。場(chǎng)景:定義通用接口、實(shí)現(xiàn)多態(tài)、延遲綁定;8. 純虛繼承(也稱為虛繼承)是C++中用于解決多重繼承帶來(lái)的某些問(wèn)題的一種機(jī)制。以下是純虛繼承主要解決的問(wèn)題:解決函數(shù)調(diào)用的歧義,避免成員變量的重復(fù),解決菱形繼承中的重復(fù)繼承問(wèn)題(菱形繼承是指一個(gè)派生類從兩個(gè)基類派生,而這兩個(gè)基類又有一個(gè)共同的基類。如果不使用純虛繼承,派生類會(huì)從兩個(gè)基類各集成一份共同基類的成員,導(dǎo)致重復(fù)繼承和訪問(wèn)歧義;純虛函數(shù)繼承確保派生類只繼承一份共同基類的成員);
0 點(diǎn)贊 評(píng)論 收藏
分享
03-25 14:40
已編輯
門頭溝學(xué)院 C++
1. 介紹下幾種典型的鎖2. 為什么不能把所有函數(shù)寫成內(nèi)聯(lián)函數(shù)?3. 虛函數(shù)的作用與多態(tài)?4. 虛函數(shù)的底層實(shí)現(xiàn)?1. 讀寫鎖:可以允許多個(gè)讀者同時(shí)進(jìn)行讀 寫者必須互斥 寫者優(yōu)先于讀者;互斥鎖:一次只能一個(gè)線程擁有互斥鎖,其它線程只有等待;條件變量:通過(guò)允許線程阻塞和等待另一個(gè)線程發(fā)送信號(hào),一般和互斥鎖一起使用;自旋鎖:如果進(jìn)程無(wú)法取得鎖,進(jìn)程不會(huì)立刻放棄CPU時(shí)間片,而是一直循環(huán)嘗試讀取鎖,直到獲取為止;2. 內(nèi)聯(lián)函數(shù)以代碼復(fù)雜為代價(jià),以省去函數(shù)調(diào)用的開(kāi)銷來(lái)提高執(zhí)行效率。如果你的內(nèi)聯(lián)函數(shù)代碼比較長(zhǎng),會(huì)消耗更多的內(nèi)存空間,函數(shù)體內(nèi)有循環(huán),函數(shù)執(zhí)行時(shí)間要比函數(shù)調(diào)用開(kāi)銷還大;3. 虛函數(shù)的主要作用是實(shí)現(xiàn)多態(tài)的機(jī)制。基類定義為虛函數(shù),子類對(duì)其進(jìn)行重寫該函數(shù),當(dāng)父類的指針指向子類對(duì)象的地址時(shí),父類指針根據(jù)賦給它的不同子類指針,動(dòng)態(tài)的調(diào)用子類的該函數(shù),而不是父類的函數(shù)。4. 虛函數(shù)的底層實(shí)現(xiàn)依懶虛函數(shù)表,虛表指針;每個(gè)類使用一個(gè)虛函數(shù)表,每個(gè)類對(duì)象用一個(gè)虛表指針。如果派生類重寫了基類的虛函數(shù),該派生類的虛函數(shù)表將保存重寫的虛函數(shù)的地址,而不是基類的虛函數(shù)地址。如果基類中虛函數(shù)沒(méi)有在派生類中重寫,那么派生類繼承基類中的虛方法,并且派生類中虛函數(shù)表將保存基類中未被重寫的虛函數(shù)地址。
0 點(diǎn)贊 評(píng)論 收藏
分享
03-22 19:36
已編輯
門頭溝學(xué)院 C++
未爾科技 實(shí)習(xí) 日薪200+10餐補(bǔ) 雙非碩
0 點(diǎn)贊 評(píng)論 收藏
分享
03-22 11:53
已編輯
門頭溝學(xué)院 C++
1. 被free回收的內(nèi)存是立即返回給操作系統(tǒng)嗎?2. sizeof和strlen的區(qū)別?3. new/delete、malloc/free的區(qū)別4. 堆快一點(diǎn)還是棧快一點(diǎn)?5. 在main執(zhí)行之前和執(zhí)行之后執(zhí)行的代碼可能是什么?6. final和override的關(guān)鍵字?7. 拷貝初始化和直接初始化?8. select、poll、epoll9.Reactor?10. 阻塞、非阻塞、同步、異步?11. Proactor?1. 被free回收的內(nèi)存首先會(huì)被ptmalloc使用雙鏈表保存起來(lái),當(dāng)有用戶申請(qǐng)內(nèi)存的時(shí)候,會(huì)直接從這里面找出合適的內(nèi)存進(jìn)行返回。這樣可以避免操作系統(tǒng)的頻繁調(diào)用,另外它還會(huì)將小內(nèi)存進(jìn)行合并,防止產(chǎn)生過(guò)多的內(nèi)存碎片;2. sizeof是運(yùn)算符,strlen是庫(kù)函數(shù)。sizeof的參數(shù)可以是任何數(shù)據(jù)的類型或數(shù)據(jù),strlen的參數(shù)只能是字符串的指針,且結(jié)束符為'\0'的字符;3. 前者是C++運(yùn)算符,后者是C/C++庫(kù)函數(shù);new自動(dòng)計(jì)算要分配的內(nèi)存對(duì)象,malloc需要計(jì)算;new是類型安全的,malloc不是;調(diào)用new的給自定義對(duì)象分配內(nèi)存的時(shí)候,會(huì)調(diào)用構(gòu)造函數(shù)并分配相應(yīng)的內(nèi)存,delete的時(shí)候會(huì)釋放內(nèi)存并執(zhí)行析構(gòu);4.  棧快一點(diǎn),操作系統(tǒng)堆棧提供支持,有分配專門的寄存器存放棧的地址,棧的出入棧也十分簡(jiǎn)單,并且有專門的指令執(zhí)行,所以棧的效率更高更快;而堆在分配的內(nèi)存的時(shí)候要使用算法尋找合適大小的內(nèi)存,并且在獲取堆的內(nèi)容的時(shí)候需要兩次訪問(wèn),一次指針,一直是指針保存的地址5. 初始化全局變量和靜態(tài)變量,即.data段數(shù)據(jù),將未初始化的全局變量進(jìn)行賦值;全局對(duì)象初始化;將argc、argv傳遞給main函數(shù);___attribute___(constructor);結(jié)束后,全局的析構(gòu)函數(shù)會(huì)在main函數(shù)執(zhí)行完后析構(gòu),可用一個(gè)atexit注冊(cè)一個(gè)函數(shù)會(huì)在main函數(shù)之后執(zhí)行;___attribute___(destructor)6. override的關(guān)鍵字,指定了子類的這個(gè)虛函數(shù)必須重寫父類的,如果函數(shù)名不小心打錯(cuò)了,編譯器會(huì)進(jìn)行報(bào)錯(cuò),不會(huì)通過(guò);當(dāng)不希望某個(gè)類被繼承、或不希望虛函數(shù)被重寫可以在類名和虛函數(shù)后面添加final關(guān)鍵字;7. 直接初始化直接調(diào)用與實(shí)參匹配的構(gòu)造函數(shù);拷貝初始化首先使用指定構(gòu)造函數(shù)創(chuàng)建一個(gè)臨時(shí)對(duì)象,然后用拷貝構(gòu)造函數(shù)將那個(gè)零食對(duì)象拷貝到正在創(chuàng)建的對(duì)象;8. select函數(shù)將已連接的socket都放到一個(gè)文件描述符集合,然后調(diào)用select函數(shù)將文件描述符拷貝到內(nèi)核中,去遍歷進(jìn)行檢測(cè)那個(gè)套接字發(fā)生事件,將其進(jìn)行標(biāo)記,后續(xù)再?gòu)?fù)制到用戶態(tài),進(jìn)行遍歷找到標(biāo)記的套接字。這其中發(fā)生了2次遍歷文件描述符集合和2次拷貝文件描述符集合。poll突破文件描述符個(gè)數(shù)的限制(1024),通過(guò)一個(gè)動(dòng)態(tài)數(shù)組,以鏈表的形式管理。其它與select還是一樣的。epoll通過(guò)在內(nèi)核中使用紅黑樹(shù)來(lái)跟蹤進(jìn)程所有待檢測(cè)的文件描述符,把需要監(jiān)控的socket通過(guò)epoll_ctl函數(shù)加入到內(nèi)核中的紅黑樹(shù),第二,epoll使用時(shí)間驅(qū)動(dòng)的機(jī)制,內(nèi)核里維護(hù)了一個(gè)鏈表來(lái)記錄就緒事件,當(dāng)某個(gè)socket事件發(fā)生時(shí),通過(guò)回調(diào)函數(shù)內(nèi)核將其加入到就緒事件列表中,當(dāng)用戶調(diào)用epoll_wait函數(shù)時(shí),只會(huì)返回有事件發(fā)生的文件描述符的個(gè)數(shù)。9. reactor模型是 I/O 多路復(fù)用監(jiān)聽(tīng)事件,收到事件后,根據(jù)事件類型分配(Dispatch)給某個(gè)進(jìn)程 / 線程。單reactor單進(jìn)程:reactor對(duì)象通過(guò)epoll監(jiān)聽(tīng)事件,收到事件后通過(guò)dispatch進(jìn)行分發(fā),如果是連接建立的事件交個(gè)Acceptor對(duì)象進(jìn)行處理,如果不是就交給Handle對(duì)象通過(guò)read->業(yè)務(wù)處理->send的流程來(lái)完成完整的業(yè)務(wù)流程。單reactor多線程:對(duì)于不是連接建立事件,則交由Handler對(duì)象處理,他不負(fù)責(zé)業(yè)務(wù)處理,只負(fù)責(zé)數(shù)據(jù)的接受和發(fā)送,數(shù)據(jù)會(huì)發(fā)送給線程池來(lái)進(jìn)行業(yè)務(wù)處理,處理完成后將業(yè)務(wù)結(jié)果返回給handler對(duì)象,然后發(fā)送給client;多reactor多線程:主線程只負(fù)責(zé)接受新連接,子線程負(fù)責(zé)完成后續(xù)的業(yè)務(wù)處理。主線程只需要把新連接傳給子線程,子線程進(jìn)行業(yè)務(wù)處理后,直接可以將處理結(jié)果發(fā)送給客戶端。10. 阻塞I/O:當(dāng)用戶執(zhí)行read,線程會(huì)被阻塞,一直等到內(nèi)核數(shù)據(jù)準(zhǔn)備好[1],并把數(shù)據(jù)從內(nèi)核緩沖區(qū)拷貝到應(yīng)用緩沖區(qū)中[2],當(dāng)拷貝完成,read才返回。非阻塞I/O:可以在數(shù)據(jù)未準(zhǔn)備好久立即返回,然后應(yīng)用程序不斷輪訓(xùn)內(nèi)核,直到數(shù)據(jù)準(zhǔn)備好,[2]操作還是要的;異步I/O:上面的[1]和[2]的步驟都不需要等待,都交由內(nèi)核完成。11. Reactor模式是基于待完成的I/O事件,而Proactor模式是基于[已完成]的I/O事件。
0 點(diǎn)贊 評(píng)論 收藏
分享
03-22 11:39
已編輯
門頭溝學(xué)院 C++
1.核心態(tài)與用戶態(tài)?4.智能指針的原理、常用的智能指針及實(shí)現(xiàn)?1.內(nèi)核態(tài)和用戶態(tài)是操作系統(tǒng)中兩種不同的CPU執(zhí)行模式,它們的主要區(qū)別在于權(quán)限、資源訪問(wèn)能力和安全性。內(nèi)核態(tài)擁有最高權(quán)限,可以執(zhí)行所有系統(tǒng)資源,錯(cuò)誤可能導(dǎo)致系統(tǒng)崩潰。用戶態(tài),較低權(quán)限,只能訪問(wèn)受限資源、錯(cuò)誤通常只導(dǎo)致進(jìn)程崩潰。4.動(dòng)態(tài)分配的資源,交給一個(gè)類對(duì)象去管理,當(dāng)類對(duì)象聲明周期結(jié)束時(shí),自動(dòng)調(diào)用析構(gòu)函數(shù)釋放資源。share_ptr的實(shí)現(xiàn)采用引用計(jì)數(shù)的方式,允許多個(gè)智能指針指向同一個(gè)動(dòng)態(tài)內(nèi)存對(duì)象,每當(dāng)增加一個(gè)智能指針指向該對(duì)象,引用計(jì)數(shù)就會(huì)加1,當(dāng)析構(gòu)一次就會(huì)進(jìn)行減1,當(dāng)引用計(jì)數(shù)為0的時(shí)候,就會(huì)對(duì)動(dòng)態(tài)內(nèi)存進(jìn)行釋放。unique_ptr采用獨(dú)享資源所有權(quán)語(yǔ)義,一個(gè)非空的unique_ptr總是擁有它所指向的資源。不支持拷貝和賦值的操作,可以進(jìn)行移動(dòng)。weak_ptr共享資源的觀察者,需要和shared_ptr一起使用,不影響資源的生命周期,以前的引用計(jì)數(shù)有一個(gè)問(wèn)題就是互相形成環(huán),這樣兩個(gè)指針指向的內(nèi)存都無(wú)方釋放,如果它和share_ptr同時(shí)指向,那么當(dāng)引用計(jì)數(shù)為0的時(shí)候就會(huì)資源釋放,不管是否還有weak_prt指向它。
0 點(diǎn)贊 評(píng)論 收藏
分享
1.如果在頭文件創(chuàng)建一個(gè)函數(shù)但是在源文件中沒(méi)有實(shí)現(xiàn)它,會(huì)有bug嗎?如果用到了會(huì)有bug嗎?在那個(gè)階段會(huì)報(bào)錯(cuò)2.如何解決循環(huán)包含的問(wèn)題?3.動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)的區(qū)別?4.當(dāng)使用結(jié)構(gòu)體或?qū)ο笞鳛閡nordermap、map中的key,會(huì)有哪些操作?5.TCP的三次握手以及完成連接隊(duì)列的創(chuàng)建時(shí)機(jī)?6.介紹一下accept的底層原理?7.TCP的四次揮手?8.MySQL InnoDB存儲(chǔ)數(shù)據(jù)采用什么結(jié)構(gòu)?B+樹(shù)的特征?B+樹(shù)有哪兩種類型(InnoDB)?聚集索引B+樹(shù)和輔助索引B+樹(shù)9.工廠模式解決了什么問(wèn)題?什么場(chǎng)景下使用? 為了影藏對(duì)象構(gòu)造的復(fù)雜,10. 在面對(duì)一個(gè)困難的問(wèn)題時(shí),你是怎么去分析的?解決的思路是什么?提出多個(gè)解決方案,哪一個(gè)方案最合適。這些都是重要加分項(xiàng),不要錯(cuò)過(guò)1. 函數(shù)沒(méi)有使用,在編譯、鏈接都不會(huì)出現(xiàn)錯(cuò)誤;函數(shù)使用了,編譯沒(méi)問(wèn)題,鏈接會(huì)出錯(cuò),如果該函數(shù)聲明為inline(流程簡(jiǎn)單、頻繁調(diào)用的函數(shù)),在編譯階段就會(huì)報(bào)錯(cuò)。2. 循環(huán)依賴 使用前置聲明(當(dāng)類結(jié)構(gòu)體被用做指針或引用時(shí),無(wú)需包含完整定義,前置聲明替代頭文件包含);依賴擴(kuò)散 pimpl慣用法;重復(fù)包含 pragma once 或頭文件保護(hù)宏。3. 靜態(tài)庫(kù)在編譯的時(shí)候會(huì)被直接鏈接到可執(zhí)行文件當(dāng)中,動(dòng)態(tài)庫(kù)是在運(yùn)行階段才會(huì)確定。靜態(tài)庫(kù)缺點(diǎn)就是會(huì)造成程序體量比較大,并且在可執(zhí)行文件后續(xù)的迭代更新中,每次都需要重新進(jìn)行編譯和鏈接可執(zhí)行文件,適合小型項(xiàng)目。動(dòng)態(tài)庫(kù)可執(zhí)行文件較小,多個(gè)程序共享同一份庫(kù)代碼,在后續(xù)的迭代中,只需要更新動(dòng)態(tài)庫(kù),方便代碼的維護(hù)性,適合大型項(xiàng)目。4. 對(duì)于unordermap需要重建一個(gè)哈希函數(shù)、重載==運(yùn)算符、對(duì)于map需要重載operator <或自定義比較函數(shù)5. 首先客戶端會(huì)發(fā)送一個(gè)SYN包請(qǐng)求建立連接,服務(wù)接受到之后返回一個(gè)SYN-ACK包,這個(gè)時(shí)候也會(huì)創(chuàng)建一個(gè)未完成連接隊(duì)列,將客戶端套接字加入進(jìn)去,客戶端收到服務(wù)端發(fā)來(lái)的包之后會(huì)發(fā)送一個(gè)ACK包,這個(gè)時(shí)候代表連接建立好了。此時(shí),就會(huì)把客戶單的套接字從未完成連接隊(duì)列移除,移動(dòng)到完成連接隊(duì)列。6.當(dāng)客戶端發(fā)起連接請(qǐng)求時(shí),服務(wù)端和客戶端會(huì)通過(guò)TCP進(jìn)行三次握手建立連接,完成之后,客戶端的連接會(huì)被放入已完成連接隊(duì)列,等待服務(wù)調(diào)用accept處理。之后。accept會(huì)從完成連接隊(duì)列中取出一個(gè)客戶端連接,并創(chuàng)建一個(gè)新的套接字文件描述符,用于客戶端通信。7.主動(dòng)關(guān)閉方(客戶端)發(fā)送一個(gè)FIN報(bào)文給服務(wù)端,表示沒(méi)有數(shù)據(jù)發(fā)送了;服務(wù)端收到FIN報(bào)文之后,會(huì)返回一個(gè)ACK包,表示確認(rèn)收到;服務(wù)端這邊沒(méi)數(shù)據(jù)發(fā)送了之后,也會(huì)發(fā)送一個(gè)FIN報(bào)文給客戶端;客戶端收到ACK報(bào)文之后就會(huì)進(jìn)入一個(gè)待關(guān)閉的狀態(tài),然后過(guò)2MSL就會(huì)進(jìn)行關(guān)閉;服務(wù)端那邊收到之后就會(huì)立馬關(guān)閉。8. B+樹(shù)的基礎(chǔ)知識(shí)有待欠缺,需要進(jìn)行補(bǔ)習(xí)9. 它是一種創(chuàng)建性設(shè)計(jì)模式,為了將對(duì)象的復(fù)雜創(chuàng)建邏輯封裝起來(lái),使得客戶端代碼不需要依賴具體的類,而是通過(guò)工廠來(lái)創(chuàng)建對(duì)象。最后下面的圖片,感覺(jué)寫的很好,所以貼上來(lái)了,是在B站上看到的,如有侵權(quán),聯(lián)系刪除。#面試常問(wèn)題系列#
0 點(diǎn)贊 評(píng)論 收藏
分享

創(chuàng)作者周榜

更多
關(guān)注他的用戶也關(guān)注了:
??途W(wǎng)
牛客企業(yè)服務(wù)