欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

騰訊公司c++面試小結(jié)

  發(fā)布時間:2020-03-02 16:50:29   作者:lyf-高坪村長   我要評論
這篇文章主要介紹了騰訊公司c++面試小結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

今天上午面試完騰訊,感覺項目部分被洗的不輕啊,實習(xí)項目被追問,網(wǎng)絡(luò)爬蟲項目被逼問,一個問題結(jié)一個問題的深入,剛介紹完項目,就開始問為什么用epoll一步步深入了;理論基礎(chǔ)部分個人感覺回答感覺不錯,都回答上了,很基礎(chǔ),下面針對基礎(chǔ)部分總結(jié)一下,分享給大家,希望對大家有一些幫助。

1、malloc和new的區(qū)別

(1)操作對象不同:malloc/free是C++/C語言的標(biāo)準(zhǔn)庫函數(shù),new/delete是C++的運算符。對于非內(nèi)部數(shù)據(jù)類的對象而言,光用malloc/free無法滿足動態(tài)對象的要求。

(2)返回類型安全性:new操作符內(nèi)存分配成功時,返回的是對象類型的指針,類型嚴(yán)格與對象匹配,無須進行類型轉(zhuǎn)換,故new是符合類型安全性的操作符。而malloc內(nèi)存分配成功則是返回void * ,需要通過強制類型轉(zhuǎn)換將void*指針轉(zhuǎn)換成我們需要的類型。(int *)malloc(sizeof(int))
類型安全很大程度上可以等價于內(nèi)存安全,類型安全的代碼不會試圖方法自己沒被授權(quán)的內(nèi)存區(qū)域。關(guān)于C++的類型安全性可說的又有很多了。

(3)內(nèi)存分配失敗時的返回值:new內(nèi)存分配失敗時,會拋出bac_alloc異常,比如反饋客戶請求處理內(nèi)存分配不足;malloc分配內(nèi)存失敗時返回NULL。

(4)是否需要指定內(nèi)存大?。菏褂胣ew操作符申請內(nèi)存分配時無須指定內(nèi)存塊的大小,編譯器會根據(jù)類型信息自行計算,而malloc則需要顯式地指出所需內(nèi)存的尺寸。

例子:(int *)malloc(sizeof(int)),new int;

(5)是否調(diào)用構(gòu)造/析構(gòu)函數(shù):使用new操作符來分配對象內(nèi)存時會經(jīng)歷三個步驟:調(diào)用operator new 函數(shù)(對于數(shù)組是operator new[])分配一塊足夠大的原始的未命名的內(nèi)存空間以便存儲特定類型的對象;編譯器運行相應(yīng)的構(gòu)造函數(shù)以構(gòu)造對象,并為其傳入初值;編譯器運行相應(yīng)的構(gòu)造函數(shù)以構(gòu)造對象,并為其傳入初值。使用delete操作符來釋放對象內(nèi)存時會經(jīng)歷兩個步驟:調(diào)用對象的析構(gòu)函數(shù);編譯器調(diào)用operator delete(或operator delete[])函數(shù)釋放內(nèi)存空間。

(6)對數(shù)組的處理:C++提供了new[]與delete[]來專門處理數(shù)組類型: A*ptr=new A[10];//分配10個A對象,使用new[]分配的內(nèi)存必須使用delete[]進行釋放:delete [] ptr;new對數(shù)組的支持體現(xiàn)在它會分別調(diào)用構(gòu)造函數(shù)函數(shù)初始化每一個數(shù)組元素,釋放對象時為每個對象調(diào)用析構(gòu)函數(shù)。注意delete[]要與new[]配套使用,不然會找出數(shù)組對象部分釋放的現(xiàn)象,造成內(nèi)存泄漏。至于malloc,它并不知道你在這塊內(nèi)存上要放的數(shù)組還是啥別的東西,反正它就給你一塊原始的內(nèi)存,在給你個內(nèi)存的地址就完事。所以如果要動態(tài)分配一個數(shù)組的內(nèi)存,還需要我們手動自定數(shù)組的大?。篿nt*ptr=(int*)malloc(sizeof(int));//分配一個10個int元素的數(shù)組。

(7)New/malloc是否可以互相調(diào)用:operator new /operator delete的實現(xiàn)可以基于malloc,而malloc的實現(xiàn)不可以去調(diào)用new。

(8)opeartor new /operator delete可以被重載(前提是自定義版本必須位于全局作用域或者類作用域中),而malloc/free并不允許重載。

(9)malloc能直觀的重新分配內(nèi)存:使用malloc分配的內(nèi)存后,如果在使用過程中發(fā)現(xiàn)內(nèi)存不足,可以使用realloc函數(shù)進行內(nèi)存重新分配實現(xiàn)內(nèi)存的擴充。realloc先判斷當(dāng)前的指針?biāo)竷?nèi)存是否有足夠的連續(xù)空間,如果有,原地擴大可分配的內(nèi)存地址,并且返回原來的地址指針;如果空間不夠,先 按照新指定的大小分配空間,將原有數(shù)據(jù)從頭到尾拷貝到新分配的內(nèi)存區(qū)域,而后釋放原來的內(nèi)存區(qū) 域。new沒有這樣直觀的配套設(shè)施來擴充內(nèi)存。

2、線程和進程的區(qū)別

      主要差別在于它們是不同的操作系統(tǒng)資源管理方式。進程有獨立的地址空間,一個進程崩潰后,在保護模式下不會對其它進程產(chǎn)生影響,而線程只是一個進程中的不同執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,是共享地址空間,一個線程死掉就等于整個進程死掉,所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。但對于一些要求同時進行并且又要共享某些變量的并發(fā)操作,只能用線程,不能用進程。

      每個獨立的線程有一個程序運行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個線程執(zhí)行控制。從邏輯角度來看,多線程的意義在于一個應(yīng)用程序中,有多個執(zhí)行部分可以同時執(zhí)行。但操作系統(tǒng)并沒有將多個線程看做多個獨立的應(yīng)用,來實現(xiàn)進程的調(diào)度和管理以及資源分配。這就是進程和線程的重要區(qū)別。

3、僵尸進程

       一個進程使用fork創(chuàng)建子進程,如果子進程退出,而父進程并沒有調(diào)用wait或waitpid獲取子進程的狀態(tài)信息,那么子進程的進程描述符仍然保存在系統(tǒng)中。這種進程稱之為僵死進程。

      危害:如果進程不調(diào)用wait / waitpid的話, 那么保留的那段信息就不會釋放,其進程號就會一直被占用,但是系統(tǒng)所能使用的進程號是有限的,如果大量的產(chǎn)生僵死進程,將因為沒有可用的進程號而導(dǎo)致系統(tǒng)不能產(chǎn)生新的進程. 此即為僵尸進程的危害,應(yīng)當(dāng)避免。

     處理方法:當(dāng)我們尋求如何消滅系統(tǒng)中大量的僵死進程時,答案就是把產(chǎn)生大 量僵死進程的那個元兇槍斃掉(也就是通過kill發(fā)送SIGTERM或者SIGKILL信號啦)。槍斃了元兇進程之后,它產(chǎn)生的僵死進程就變成了孤兒進 程,這些孤兒進程會被init進程接管,init進程會wait()這些孤兒進程,釋放它們占用的系統(tǒng)進程表中的資源,這樣,這些已經(jīng)僵死的孤兒進程 就能瞑目而去了。

     孤兒進程:一個父進程退出,而它的一個或多個子進程還在運行,那么那些子進程將成為孤兒進程。孤兒進程將被init進程(進程號為1)所收養(yǎng),并由init進程對它們完成狀態(tài)收集工作。

4、重載與多態(tài)的區(qū)別

(1)重載是同名參數(shù)不同,通過參數(shù)來確定調(diào)用那個函數(shù);但是多態(tài)是同名同參數(shù),通過函數(shù)的實際類型決定調(diào)用那個函數(shù);

(2)重載而言,在方法調(diào)用之前,編譯器就已經(jīng)確定了所要調(diào)用的方法,這稱為“早綁定”或“靜態(tài)綁定”;

多態(tài)而言,只有等到方法調(diào)用的那一刻,編譯器才會確定所要調(diào)用的具體方法,這稱為“晚綁定”或“動態(tài)綁定”。

到此這篇關(guān)于騰訊公司c++面試小結(jié)的文章就介紹到這了,更多相關(guān)c++騰訊面試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++ 面試題目(整理自牛客網(wǎng))

    這篇文章主要介紹了 C++ 面試題目(整理自??途W(wǎng)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2020-02-13
  • 華為校招 C++崗面試經(jīng)歷總結(jié)【筆試+一面+二面+Offer】

    這篇文章主要介紹了華為校招 C++崗面試經(jīng)歷,總結(jié)分析了華為校招C++崗位的筆試題,以及一面、二面到最終拿到Offer的經(jīng)歷與相關(guān)經(jīng)驗感想,需要的朋友可以參考下
    2019-11-28
  • C++面試常見算法題與參考答案總結(jié)

    這篇文章主要介紹了C++面試常見算法題與參考答案,總結(jié)分析了C++面試中遇到的常見算法題與相應(yīng)的參考答案,需要的朋友可以參考下
    2019-11-20
  • C++必備面試題與參考答案經(jīng)典總結(jié)

    這篇文章主要介紹了C++必備面試題與參考答案,結(jié)合大量經(jīng)典實例總結(jié)分析了C++面試過程中經(jīng)常遇到的各種概念、原理、算法相關(guān)問題及參考答案,需要的朋友可以參考下
    2019-10-31
  • C/C++經(jīng)典面試題(附答案)

    這篇文章主要介紹了C/C++經(jīng)典面試題(附答案),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-10-23
  • C/C++求職者必備的20道面試題與參考答案解析

    這篇文章主要介紹了C/C++求職者必備的20道面試題與參考答案,總結(jié)分析了C/C++相關(guān)的常見概念、原理、知識點與注意事項,需要的朋友可以參考下
    2019-10-10
  • 騰訊的外包c++面試經(jīng)歷總結(jié)

    這篇文章主要介紹了騰訊的外包c++面試經(jīng)歷,總結(jié)記錄了一次騰訊C++面試的經(jīng)歷,包括面試的流程、面試題目與相應(yīng)的參考答案,需要的朋友可以參考下
    2019-09-29
  • 阿里面試必會的20道C++面試題與參考答案解析

    這篇文章主要介紹了阿里面試必會的20道C++面試題與參考答案,涉及C++指針、面向?qū)ο蟆⒑瘮?shù)等相關(guān)特性與使用技巧,需要的朋友可以參考下
    2019-09-26
  • 經(jīng)典C++筆試面試題目與參考答案100例

    這篇文章主要介紹了經(jīng)典C++筆試題目與參考答案,總結(jié)分析了C++常見的各種面試題目,包含C++常見知識點、技術(shù)難點、算法等,需要的朋友可以參考下
    2019-09-10
  • 華為筆試算法面試題與參考答案分析【基于C++】

    這篇文章主要介紹了華為筆試算法面試題與參考答案,結(jié)合實例形式分析了基于C++的字符串轉(zhuǎn)換、判斷、排序等算法相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-05

最新評論