App下載

騰訊C++開發(fā)工程師第一輪面試問題答案

猿友 2017-09-07 18:09:23 瀏覽數(shù) (5024)
反饋

  昨日,w3cschool app開發(fā)者頭條上分享了一篇“騰訊C++初面面經(jīng)”,這也引起了不少程序員的關(guān)注。


  下面這里給大家?guī)眚v訊C++初面面經(jīng)問題答案:

  1、堆和棧的區(qū)別?

  答:stack的空間由操作系統(tǒng)自動分配/釋放,heap上的空間需要手動分配/釋放

  棧的空間有限,堆是很大的自由存儲區(qū)。

  程序在編譯期對變量和函數(shù)分配內(nèi)存都在棧上進(jìn)行,且程序運行過程中函數(shù)調(diào)用參數(shù)的傳遞也在棧上進(jìn)行。

  2、301和302的區(qū)別?

  302重定向是暫時的重定向,搜索引擎會抓取新的內(nèi)容而保留舊的網(wǎng)址。因為服務(wù)器返回302代碼,搜索引擎認(rèn)為新的網(wǎng)址只是暫時的。

  301重定向是永久的重定向,搜索引擎在抓取新內(nèi)容的同時也將舊的網(wǎng)址替換為重定向之后的網(wǎng)址。

  3、悲觀鎖和樂觀鎖的認(rèn)識

  悲觀鎖:假定會發(fā)生并發(fā)沖突,屏蔽一切可能違反數(shù)據(jù)完整性的操作。 悲觀鎖假定其他用戶企圖訪問或者改變你正在訪問、更改的對象的概率是很高的,因此在悲觀鎖的環(huán)境中,在你開始改變此對象之前就將該對象鎖住,并且直到你提交了所作的更改之后才釋放鎖。悲觀的缺陷是不論是頁鎖還是行鎖,加鎖的時間可能會很長,這樣可能會長時間的限制其他用戶的訪問,也就是說悲觀鎖的并發(fā)訪問性不好。

  樂觀鎖:假設(shè)不會發(fā)生并發(fā)沖突,只在提交操作時檢查是否違反數(shù)據(jù)完整性。樂觀鎖不能解決臟讀的問題。 樂觀鎖則認(rèn)為其他用戶企圖改變你正在更改的對象的概率是很小的,因此樂觀鎖直到你準(zhǔn)備提交所作的更改時才將對象鎖住,當(dāng)你讀取以及改變該對象時并不加鎖。可見樂觀鎖加鎖的時間要比悲觀鎖短,樂觀鎖可以用較大的鎖粒度獲得較好的并發(fā)訪問性能。但是如果第二個用戶恰好在第一個用戶提交更改之前讀取了該對象,那么當(dāng)他完成了自己的更改進(jìn)行提交時,數(shù)據(jù)庫就會發(fā)現(xiàn)該對象已經(jīng)變化了,這樣,第二個用戶不得不重新讀取該對象并作出更改。這說明在樂觀鎖環(huán)境中,會增加并發(fā)用戶讀取對象的次數(shù)。

  4、C和C++的區(qū)別

  1,全新的程序 程序思維,C 語言是面向過程的,而 C++ 是面向?qū)ο蟮摹?/p>

  2,C 語言有標(biāo)準(zhǔn)的函數(shù)庫,它們松散的,只是把功能相同的函數(shù)放在一個頭文件中;而 C++ 對于大多數(shù)的函數(shù)都是有集成的很緊密,特別是 C 語言中沒有的 C++ 中的 API 是對 Window 系統(tǒng)的大多數(shù) API 有機(jī)的組合,是一個集體。但你也可能單獨調(diào)用 API。

  3,特別是 C++ 中的圖形處理,它和語言的圖形有很大的區(qū)別。C 語言中的圖形處理函數(shù)基本上是不能用在中 C++ 中的。C 語言標(biāo)準(zhǔn)中不包括圖形處理。

  4,C 和 C++ 中都有結(jié)構(gòu)的概念,但是在 C 語言中結(jié)構(gòu)只有成員變量,而沒成員方法,而在 C++ 中結(jié)構(gòu)中,它可以有自己的成員變量和成員函數(shù)。但是在 C 語言中結(jié)構(gòu)的成員是公共的,什么想訪問它的都可以訪問;而在 VC++ 中它沒有加限定符的為私有的。

  4,C 語言可以寫很多方面的程序,但是 C++ 可以寫得更多更好,C++ 可以寫基于DOSr程序,寫 DLL,寫控件,寫系統(tǒng)。

  5,C 語言對程序的文件的組織是松散的,幾乎是全要程序處理;而 C++ 對文件的組織是以工程,各文件分類明確。

  6,C++ 中的 IDE 很智能,和 VB 一樣,有的功能可能比VB還強(qiáng)。

  7,C++ 對可以自動生成你想要的程序結(jié)構(gòu)使你可以省了很多時間。有很多可用的工具如加入 MFC 中的類的時候,加入變量的時候等等。

  8,C++ 中的附加工具也有很多,可以進(jìn)行系統(tǒng)的分析,可以查看 API;可以查看控件。

  9,調(diào)試功能強(qiáng)大,并且方法多樣。

0 人點贊