next = node2; node2->prev = list->hea..."/>
溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

劍指XX游戲(二) - 網(wǎng)易2011筆試題詳解

發(fā)布時(shí)間:2020-07-06 21:45:25 來源:網(wǎng)絡(luò) 閱讀:441 作者:拳四郎 欄目:開發(fā)技術(shù)

網(wǎng)上弄到的一份題,不是很完整,邊猜邊做。


1.寫出運(yùn)行結(jié)果

char array[] = “abcde”; char* s = array;

cout<<sizeof(array)<<strlen(array)<<sizeof(s)<<strlen(s);


6585


2.什么是用戶級線程和內(nèi)核級線程?區(qū)別。

內(nèi)核級線程:
(1)線程的創(chuàng)建、撤銷和切換等,都需要內(nèi)核直接實(shí)現(xiàn),即內(nèi)核了解每一個作為可調(diào)度實(shí)體的線程。
(2)這些線程可以在全系統(tǒng)內(nèi)進(jìn)行資源的競爭。
(3)內(nèi)核空間內(nèi)為每一個內(nèi)核支持線程設(shè)置了一個線程控制塊(TCB),內(nèi)核根據(jù)該控制塊,感知線程的存在,并進(jìn)行控制。
在一定程度上類似于進(jìn)程,只是創(chuàng)建、調(diào)度的開銷要比進(jìn)程小。有的統(tǒng)計(jì)是1:10
用戶級線程:
(1)用戶級線程僅存在于用戶空間。——>對比內(nèi)核(3)
(2)內(nèi)核并不能看到用戶線程。——>重要的區(qū)別

(3)內(nèi)核資源的分配仍然是按照進(jìn)程進(jìn)行分配的;各個用戶線程只能在進(jìn)程內(nèi)進(jìn)行資源競爭。


3.從C++文件到生成exe 文件經(jīng)過哪三個步驟?

預(yù)編譯,編譯優(yōu)化,匯編,鏈接


4.有個二維數(shù)組 A(6*8),每個元素占 6 字節(jié),起始地址為 1000,請問最后一個元素 A[5][7]的起始地址為??? 數(shù)組A占內(nèi)存大小為??? 假設(shè)以行優(yōu)先,則A[1][4]起始地址為???

1)1000 + 6*6*8 - 8 = 11282; 2)6*6*8=288; 3)A[1][4]位置為5行2列,1000+6*(8*1+4) = 1272.


如果給出結(jié)構(gòu)體,考慮到字節(jié)對齊的話就要另外考慮了。

劍指XX游戲(二) - 網(wǎng)易2011筆試題詳解


5.用C語言把雙向鏈表中的兩個結(jié)點(diǎn)交換位置,考慮各種邊界問題。 

考慮三種情況:第一個結(jié)點(diǎn)在頭,第一個結(jié)點(diǎn)在中間,第一個結(jié)點(diǎn)在尾巴。

struct Node{       Node* prev;          Node* next;          void* data;      };      struct LinkedList{       Node*    head;       Node*    tail;       Node*    cur;       int      size;   };   bool exchange(LinkedList* list,Node *node1,Node *node2)  {      if(node1== NULL || node2==NULL)      return false;     Node *p,*q; 	//node1 on the front     if(list->head->next == node1)     {     	//node2 on the last     	if(list->tail->next == node2)     	{     		p = node2->prev;     		//Cope with node2     		list->head->next = node2;     		node2->prev = list->head;     		node2->next = node1->next;     		node2->next->pre = node2;     		//Cope with node1     		list->tail->prev = node1;     		node1->next = list->tail;     		node1->prev = p;     		p->next = node1;     		return true;     	}     	//node2 not on the last     	else     	{     		p = node2->prev;     		q = node2->next;     		//Cope with node2     		list->head->next = node2;     		node2->prev = list->head;     		node2->next = node1->next;     		node2->next->prev = node2;     		//Cope with node1     		p->next = node1;     		node1->prev = p;     		node1->next = q;     		q->prev = node1;     		return true;     	} 		     }     //node1 on the last     else if(list->tail->next == node1)     {     	//node2 on the front     	if(list->head->next == node2)     	{ 			p = node1->prev;     		//Cope with node1     		list->head->next = node1;     		node1->prev = list->head;     		node1->next = node2->next;     		node1->next->prev = node1;     		//Cope with node2     		list->tail->prev = node2;     		node2->next = list->tail;     		node2->prev = p;     		p->next = node2;     		return true;     	}     	//node2 not on the front     	else     	{     		p = node2->prev;     		q = node2->next;     		//Cope with node2     		list->tail->next = node2;     		node2->prev = list->tail;     		node2->next = node1->next;     		node2->next->prev = node2;     		//Cope with node1     		p->next = node1;     		node1->prev = p;     		node1->next = q;     		q->prev = node1;     		return true;     	}     }     //node1 on the middle     else     {     	//node2 on the front     	if(list->head->next == node2)     	{     		p = node1->prev;     		q = node1->next;     		node1->prev = list->head;     		list->head->next = node1;     		node1->next = node2->next;     		node2->next->prev = node1;     		     		node2->prev = p;     		p->next = node2;     		node2->next = q;     		q->prev = node2;     	}     	//node2 on the last     	else if(list->tail->next == node2)     	{     		p = node1->prev;     		q = node1->next;     		node1->prev = node2->prev;     		node2->prev->next = node1;     		node1->next = list->tail;     		list->tail->prev = node1;     		     		node2->prev = p;     		p->next = node2;     		node2->next = q;     		q->prev = node2;     	}     	//both in the middle     	else     	{     		p = node2->prev;     		q = node2->next;     		//Cope with node2     		node2->prev = node1->prev;     		node1->prev->next = node2;     		node2->next = node1->next;     		node1->next->prev = node2;     		//Cope with node1     		p->next = node1;     		node1->prev = p;     		node1->next = q;     		q->prev = node1;     		return true;     	}     }  } 




6.*.dll,*.lib,*.exe 文件分別是什么,有什么區(qū)別?

lib是靜態(tài)的庫文件,dll是動態(tài)的庫文件。
所謂靜態(tài)就是link的時(shí)候把里面需要的東西抽取出來安排到你的exe文件中,以后運(yùn)行exe的時(shí)候不再需要lib。
所謂動態(tài)就是exe運(yùn)行的時(shí)候依賴于dll里面提供的功能,沒有這個dll,exe無法運(yùn) 行。

lib, dll, exe都算是最終的目標(biāo)文件,是最終產(chǎn)物。而c/c++屬于源代碼。源代碼和最終 目標(biāo)文件中過渡的就是中間代碼obj,實(shí)際上之所以需要中間代碼,是你不可能一次得到目 標(biāo)文件。比如說一個exe需要很多的cpp文件生成。而編譯器一次只能編譯一個cpp文件。這 樣編譯器編譯好一個cpp以后會將其編譯成obj,當(dāng)所有必須要的cpp都編譯成obj以后,再統(tǒng) 一link成所需要的exe,應(yīng)該說缺少任意一個obj都會導(dǎo)致exe的鏈接失敗.



7.附加題(20):使用八叉樹算法把24位真彩色轉(zhuǎn)化成 256色。24位真彩色包括 R,G,B顏色,每種顏色8 位。

         在計(jì)算機(jī)中像素的計(jì)算單位一般是二進(jìn)制的,256色,即2的8次方,因此我們也把256×××形叫做8位圖;16位圖,它可以表達(dá)2的16次方即65536種顏色;還有24位彩×××,可以表達(dá)16,777,216種顏色。

         算法參考:http://blog.csdn.net/zuzubo/article/details/1597985



8.有 11 盆花,圍成一圈,要求每次組合時(shí),每盆花相鄰的兩盆花與上次不同,請問有多少排列方法? 

待解答。


9.2 只寵物合成,1只有 5技能,1 只有4 技能,每個技能有 a%概率遺傳,請問剛好有7 個技能遺傳成功的概率是?

只有

第一只5個技能 + 第二只2個技能:(a%)^7*C(4,2)

第一只4個技能 + 第二只3個技能:(a%)^7*C(5,4)*C(4,3)

第一只3個技能 + 第二只4個技能:(a%)^7*C(5,3)

加起來就可以了。


10.輸出結(jié)果為?

#include <iostream> using namespace std; class A	 { public: 	A(){cout<<"1";} 	A(A &a){cout <<"2";} 	virtual ~A() {cout<<"3";} };  class B:public A { public: 	B(){cout<<"4";} 	B(B &b){cout<<"5";} 	~B(){cout<<"6";} };  int main() {     A* pa = new B(); 	delete pa; 	return 0; }


1463

子類構(gòu)造之前首先調(diào)用基類的構(gòu)造函數(shù),然后是子類的構(gòu)造函數(shù),析構(gòu)的時(shí)候相反,注意基類的析構(gòu)函數(shù)聲明為virtual才可以.




向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI