昨日,w3cschool app開(kāi)發(fā)者頭條上分享了一篇“騰訊C++初面面經(jīng)”,這也引起了不少程序員的關(guān)注。
下面這里給大家?guī)?lái)騰訊C++初面面經(jīng)問(wèn)題答案:
1、堆和棧的區(qū)別?
答:stack的空間由操作系統(tǒng)自動(dòng)分配/釋放,heap上的空間需要手動(dòng)分配/釋放
棧的空間有限,堆是很大的自由存儲(chǔ)區(qū)。
程序在編譯期對(duì)變量和函數(shù)分配內(nèi)存都在棧上進(jìn)行,且程序運(yùn)行過(guò)程中函數(shù)調(diào)用參數(shù)的傳遞也在棧上進(jìn)行。
2、301和302的區(qū)別?
302重定向是暫時(shí)的重定向,搜索引擎會(huì)抓取新的內(nèi)容而保留舊的網(wǎng)址。因?yàn)榉?wù)器返回302代碼,搜索引擎認(rèn)為新的網(wǎng)址只是暫時(shí)的。
301重定向是永久的重定向,搜索引擎在抓取新內(nèi)容的同時(shí)也將舊的網(wǎng)址替換為重定向之后的網(wǎng)址。
3、悲觀鎖和樂(lè)觀鎖的認(rèn)識(shí)
悲觀鎖:假定會(huì)發(fā)生并發(fā)沖突,屏蔽一切可能違反數(shù)據(jù)完整性的操作。 悲觀鎖假定其他用戶企圖訪問(wèn)或者改變你正在訪問(wèn)、更改的對(duì)象的概率是很高的,因此在悲觀鎖的環(huán)境中,在你開(kāi)始改變此對(duì)象之前就將該對(duì)象鎖住,并且直到你提交了所作的更改之后才釋放鎖。悲觀的缺陷是不論是頁(yè)鎖還是行鎖,加鎖的時(shí)間可能會(huì)很長(zhǎng),這樣可能會(huì)長(zhǎng)時(shí)間的限制其他用戶的訪問(wèn),也就是說(shuō)悲觀鎖的并發(fā)訪問(wèn)性不好。
樂(lè)觀鎖:假設(shè)不會(huì)發(fā)生并發(fā)沖突,只在提交操作時(shí)檢查是否違反數(shù)據(jù)完整性。樂(lè)觀鎖不能解決臟讀的問(wèn)題。 樂(lè)觀鎖則認(rèn)為其他用戶企圖改變你正在更改的對(duì)象的概率是很小的,因此樂(lè)觀鎖直到你準(zhǔn)備提交所作的更改時(shí)才將對(duì)象鎖住,當(dāng)你讀取以及改變?cè)搶?duì)象時(shí)并不加鎖??梢?jiàn)樂(lè)觀鎖加鎖的時(shí)間要比悲觀鎖短,樂(lè)觀鎖可以用較大的鎖粒度獲得較好的并發(fā)訪問(wèn)性能。但是如果第二個(gè)用戶恰好在第一個(gè)用戶提交更改之前讀取了該對(duì)象,那么當(dāng)他完成了自己的更改進(jìn)行提交時(shí),數(shù)據(jù)庫(kù)就會(huì)發(fā)現(xiàn)該對(duì)象已經(jīng)變化了,這樣,第二個(gè)用戶不得不重新讀取該對(duì)象并作出更改。這說(shuō)明在樂(lè)觀鎖環(huán)境中,會(huì)增加并發(fā)用戶讀取對(duì)象的次數(shù)。
4、C和C++的區(qū)別
1,全新的程序 程序思維,C 語(yǔ)言是面向過(guò)程的,而 C++ 是面向?qū)ο蟮摹?/p>
2,C 語(yǔ)言有標(biāo)準(zhǔn)的函數(shù)庫(kù),它們松散的,只是把功能相同的函數(shù)放在一個(gè)頭文件中;而 C++ 對(duì)于大多數(shù)的函數(shù)都是有集成的很緊密,特別是 C 語(yǔ)言中沒(méi)有的 C++ 中的 API 是對(duì) Window 系統(tǒng)的大多數(shù) API 有機(jī)的組合,是一個(gè)集體。但你也可能單獨(dú)調(diào)用 API。
3,特別是 C++ 中的圖形處理,它和語(yǔ)言的圖形有很大的區(qū)別。C 語(yǔ)言中的圖形處理函數(shù)基本上是不能用在中 C++ 中的。C 語(yǔ)言標(biāo)準(zhǔn)中不包括圖形處理。
4,C 和 C++ 中都有結(jié)構(gòu)的概念,但是在 C 語(yǔ)言中結(jié)構(gòu)只有成員變量,而沒(méi)成員方法,而在 C++ 中結(jié)構(gòu)中,它可以有自己的成員變量和成員函數(shù)。但是在 C 語(yǔ)言中結(jié)構(gòu)的成員是公共的,什么想訪問(wèn)它的都可以訪問(wèn);而在 VC++ 中它沒(méi)有加限定符的為私有的。
4,C 語(yǔ)言可以寫(xiě)很多方面的程序,但是 C++ 可以寫(xiě)得更多更好,C++ 可以寫(xiě)基于DOSr程序,寫(xiě) DLL,寫(xiě)控件,寫(xiě)系統(tǒng)。
5,C 語(yǔ)言對(duì)程序的文件的組織是松散的,幾乎是全要程序處理;而 C++ 對(duì)文件的組織是以工程,各文件分類明確。
6,C++ 中的 IDE 很智能,和 VB 一樣,有的功能可能比VB還強(qiáng)。
7,C++ 對(duì)可以自動(dòng)生成你想要的程序結(jié)構(gòu)使你可以省了很多時(shí)間。有很多可用的工具如加入 MFC 中的類的時(shí)候,加入變量的時(shí)候等等。
8,C++ 中的附加工具也有很多,可以進(jìn)行系統(tǒng)的分析,可以查看 API;可以查看控件。
9,調(diào)試功能強(qiáng)大,并且方法多樣。