1. 程式人生 > >C/C++筆試題(很多)

C/C++筆試題(很多)

微軟亞洲技術中心的面試題!!!


1.程序和執行緒的差別。


執行緒是指程序內的一個執行單元,也是程序內的可排程實體.
與程序的區別:
(1)排程:執行緒作為排程和分配的基本單位,程序作為擁有資源的基本單位
(2)併發性:不僅程序之間可以併發執行,同一個程序的多個執行緒之間也可併發執行
(3)擁有資源:程序是擁有資源的獨立單位,執行緒不擁有系統資源,但可以訪問隸屬於程序的資源. 
(4)系統開銷:在建立或撤消程序時,由於系統都要為之分配和回收資源,導致系統的開銷明顯大於建立或撤消執行緒時的開銷。


2.測試方法


人工測試:個人複查、抽查和會審
機器測試:黑盒測試和白盒測試


2.Heap與stack的差別


Heap是堆,stack是棧。
Stack的空間由作業系統自動分配/釋放,Heap上的空間手動分配/釋放。
Stack空間有限,Heap是很大的自由儲存區
C中的malloc函式分配的記憶體空間即在堆上,C++中對應的是new操作符。
程式在編譯期對變數和函式分配記憶體都在棧上進行,且程式執行過程中函式呼叫時引數的傳遞也在棧上進行


3.Windows下的記憶體是如何管理的?


4.介紹.Net和.Net的安全性。


5.客戶端如何訪問.Net元件實現Web Service?


6.C/C++編譯器中虛表是如何完成的?


7.談談COM的執行緒模型。然後討論程序內/外元件的差別。


8.談談IA32下的分頁機制


小頁(4K)兩級分頁模式,大頁(4M)一級


9.給兩個變數,如何找出一個帶環單鏈表中是什麼地方出現環的?


一個遞增一,一個遞增二,他們指向同一個接點時就是環出現的地方   ??


10.在IA32中一共有多少種辦法從使用者態跳到核心態?


通過呼叫門,從ring3到ring0,中斷從ring3到ring0,進入vm86等等


11.如果只想讓程式有一個例項執行,不能執行兩個。像winamp一樣,只能開一個視窗,怎樣實現?

用記憶體對映或全域性原子(互斥變數)、查詢視窗控制代碼.. 
FindWindow,互斥,寫標誌到檔案或登錄檔,共享記憶體。. 


12.如何擷取鍵盤的響應,讓所有的‘a’變成‘b’?


鍵盤鉤子SetWindowsHookEx


13.Apartment在COM中有什麼用?為什麼要引入?


14.儲存過程是什麼?有什麼用?有什麼優點?

    儲存過程(Stored Procedure)是一組為了完成特定功能的SQL 語句集,經編譯後儲存在資料庫。中使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。

儲存過程用於實現頻繁使用的查詢、業務規則、被其他過程使用的公共例行程式

儲存過程在建立時即在伺服器上進行編譯,所以執行起來比單個 SQL 語句快

15.Template有什麼特點?什麼時候用?


16.談談Windows DNA結構的特點和優點。


17.網路程式設計中設計併發伺服器,使用多程序與多執行緒 ,請問有什麼區別?


1,程序:子程序是父程序的複製品。子程序獲得父程序資料空間、堆和棧的複製品。
2,執行緒:相對與程序而言,執行緒是一個更加接近與執行體的概念,它可以與同進程的其他執行緒共享資料,但擁有自己的棧空間,擁有獨立的執行序列。
區別:兩者都可以提高程式的併發度,提高程式執行效率和響應時間。執行緒和程序在使用上各有優缺點:執行緒執行開銷小,但不利於資源管理和保護;而程序正相反。同時,執行緒適合於在SMP機器上執行,而程序則可以跨機器遷移。

MSRA Interview Written Exam(December 2003,Time:2.5 Hours)


1寫出下列演算法的時間複雜度。


(1)氣泡排序; 
(2)選擇排序; 
(3)插入排序; 
(4)快速排序; 
(5)堆排序; 
(6)歸併排序;

2寫出下列程式在X86上的執行結果。

struct mybitfields 

unsigned short a : 4; 
unsigned short b : 5; 
unsigned short c : 7; 
}test

void main(void)  

int i; 
test.a=2; 
test.b=3; 
test.c=0;

i=*((short *)&test); 
printf("%d/n",i); 
}

3寫出下列程式的執行結果。

unsigned int i=3; 
cout<<i * -1;

4寫出下列程式所有可能的執行結果。

int a; 
int b; 
int c;

void F1() 

b=a*2; 
a=b; 
}

void F2() 

c=a+1; 
a=c; 
}

main() 

a=5; 
//Start F1,F2 in parallel 
F1(); F2(); 
printf("a=%d/n",a); 
}

5考察了一個CharPrev()函式的作用。

6對 16 Bits colors的處理,要求:


(1)Byte轉換為RGB時,保留高5、6bits; 
(2)RGB轉換為Byte時,第2、3位置零。

7一個連結串列的操作,注意程式碼的健壯和安全性。要求:


(1)增加一個元素; 
(2)獲得頭元素; 
(3)彈出頭元素(獲得值並刪除)。

8一個給定的數值由左邊開始升位到右邊第N位,如 0010<<1 == 0100 或者 
0001 0011<<4 == 0011 0000 請用C或者C++或者其他X86上能執行的程式實現。

附加題(只有在完成以上題目後,才獲准回答)


1。In C++, what does "explicit" mean? what does "protected" mean?

c++中的explicit關鍵字用來修飾類的建構函式,表明該建構函式是顯式的,在某些情況下,我們要求類的使用者必須顯示呼叫類的建構函式時就需要使用explicit,反之預設型別轉換可能會造成無法預期的問題。

protected控制的是一個函式對一個類的成員(包括成員變數及成員方法)的訪問許可權。protected成員只有該類的成員函式及其派生類的成員函式可以訪問

1.  在C++中有沒有純虛建構函式?

建構函式不能是虛的。只能有虛的解構函式

2.  在c++的一個類中宣告一個static成員變數有沒有用?

在C++類的成員變數被宣告為static(稱為靜態成員變數),意味著它為該類的所有例項所共享,也就是說當某個類的例項修改了該靜態成員變數,也就是說不管建立多少物件,static修飾的變數只佔有一塊記憶體。其修改值為該類的其它所有例項所見;而類的靜態成員函式也只能訪問靜態成員(變數或函式)。

static是加了訪問控制的全域性變數,不被繼承。  


3。在C++的一個類中宣告一個靜態成員函式有沒有用? (同上?)


4。如何實現一個非阻塞的socket?


5。setsockopt, ioctl都可以對socket的屬性進行設定,他們有什麼不同? (linux)


6。解釋一下程序和執行緒的區別? (重複,參見微軟亞洲技術中心筆試)
7。解釋一下多播(組播)和廣播的含義?

組播:主機之間“一對一組”的通訊模式,也就是加入了同一個組的主機可以接受到此組內的所有資料,網路中的交換機和路由器只向有需求者複製並轉發其所需資料。主機可以向路由器請求加入或退出某個組,網路中的路由器和交換機有選擇的複製並傳輸資料,即只將組內資料傳輸給那些加入組的主機。

廣播:主機之間“一對所有”的通訊模式,網路對其中每一臺主機發出的訊號都進行無條件複製並轉發,所有主機都可以接收到所有資訊(不管你是否需要).

8。多播採用的協議是什麼?


9。在c++中純虛解構函式的作用是什麼?請舉例說明。


10。程式設計,請實現一個c語言中類似atoi的函式功能(輸入可能包含非數字和空格)

百度筆試題

一、選擇題:15分 共10題 
1.    在排序方法中,關鍵碼比較次數與記錄地初始排列無關的是    . 
A. Shell排序      B. 歸併排序       C. 直接插入排序     D. 選擇排序

2.    以下多執行緒對int型變數x的操作,哪幾個需要進行同步: 
A. x=y;         B. x++;         C. ++x;            D. x=1;

3.    程式碼 
void func() { 
        static int val; 
        … } 中,變數val的記憶體地址位於: 
A. 已初始化資料段    B.未初始化資料段      C.堆              D.棧

4.    同一程序下的執行緒可以共享以下 
A. stack            B. data section   C. register set        D. thread ID

5.    TCP和IP分別對應了 OSI中的哪幾層? 
A.  Application layer 
B.  Data link layer 
C.  Presentation layer 
D.  Physical layer 
E.  Transport layer 
F.  Session layer 
G.  Network layer

6.    short a[100],sizeof(a)返回? 
A 2     B 4       C 100       D 200        E 400

7.    以下哪種不是基於元件的開發技術_____。 
A XPCOM        B XP           C COM                D CORBA

8.    以下程式碼列印的結果是(假設執行在i386系列計算機上): 
    struct st_t 
    { 
        int    status; 
        short* pdata; 
        char   errstr[32]; 
    };

    st_t  st[16]; 
    char* p = (char*)(st[2].errstr + 32); 
    printf("%d", (p - (char*)(st)));

A 32          B 114       C 120         D 1112

9.    STL中的哪種結構是連續形式的儲存 
A  map      B  set         C  list      D  vector

10.    一個棧的入棧序列是A,B,C,D,E,則棧的不可能的輸出序列是( ) 
A、EDCBA;   B、DECBA;    C、DCEAB;    D、ABCDE

參考答案:D /ABC/ A/ BC /EG /D /B/ C/ D/ C

二、簡答題:20分,共2題

1.    (5分)重複多次fclose一個開啟過一次的FILE *fp指標會有什麼結果,並請解釋。 
考察點:導致檔案描述符結構中指標指向的記憶體被重複釋放,進而導致一些不可預期的異常。

2.    (15分)下面一段程式碼,想在呼叫f2(1)時列印err1,呼叫f2(2)時列印err4,但是程式碼中有一些問題,請做盡可能少的修改使之正確。 
     
1    static int f1(const char *errstr, unsigned int flag) { 
2        int copy, index, len; 
3        const static char **__err = {“err1”, “err2”, “err3”, “err4”}; 
4     
5        if(flag & 0x10000) 
6            copy = 1; 
7        index = (flag & 0x300000) >> 20; 
8      
9        if(copy) { 
10            len = flag & 0xF; 
11            errstr = malloc(len); 
12            if(errstr = NULL) 
13                return -1; 
14            strncpy(errstr, __err[index], sizeof(errstr)); 
15        } else 
16            errstr =  __err + index;     
17    } 
18 
19    void f2(int c) { 
20        char *err; 
22        swtch(c) { 
23        case 1: 
24            if(f1(err, 0x110004) != -1) 
25                printf(err); 
26        case 2: 
27            if(f2(err, 0x30000D) != -1) 
28                printf(err); 
29        } 
30 }    

三、程式設計題:30分 共1題    注意:要求提供完整程式碼,如果可以編譯執行酌情加分。

1.    求符合指定規則的數。 
給定函式d(n) = n + n的各位之和,n為正整數,如 d(78) = 78+7+8=93。 這樣這個函式可以看成一個生成器,如93可以看成由78生成。  
定義數A:數A找不到一個數B可以由d(B)=A,即A不能由其他數生成。現在要寫程式,找出1至10000裡的所有符合數A定義的數。 
輸出: 


四、設計題:35分 共1題 
注意:請儘可能詳細描述你的資料結構、系統架構、設計思路等。建議多寫一些虛擬碼或者流程說明。

1.    假設一個mp3搜尋引擎收錄了2^24首歌曲,並記錄了可收聽這些歌曲的2^30條URL,但每首歌的URL不超過2^10個。系統會定期檢查這些URL,如果一個URL不可用則不出現在搜尋結果中。現在歌曲名和URL分別通過整型的SONG_ID和URL_ID唯一確定。對該系統有如下需求: 
1)    通過SONG_ID搜尋一首歌的URL_ID,給出URL_ID計數和列表 
2)    給定一個SONG_ID,為其新增一個新的URL_ID 
3)    新增一個新的SONG_ID 
4)    給定一個URL_ID,將其置為不可用

限制條件:記憶體佔用不超過1G,單個檔案大小不超過2G,一個目錄下的檔案數不超過128個。

為獲得最佳效能,請說明設計的資料結構、搜尋演算法,以及資源消耗。如果系統資料量擴大,該如何多機分佈處理?

漢略曾考的測試題目


Q:When speaking of software products, how do you define the term“quality”.
問:當說到軟體產品的時候,你如何定義術語“質量”

       Meeting customer requirements
Q:What is the role of software debelopers and quality assuranle engineers in ensuring the quality of the product? How are other functional areas important to developing a quality product?
問:在確定產品的質量方面,什麼是軟體開發工程師和質量保證工程師要做的?其他的功能對如何發展產品質量有什麼重要?

 軟體測試是貫穿整個軟體開發生命週期、對軟體產品(包括階段性產品)進行驗證和確認的活動過程,其目的是儘快儘早地發現在軟體產品中所存在的各種問題——與使用者需求、預先定義的不一致性。Quality assuranle engineers: use a set of activities designed to ensure the development process to meet the requirements.
Q:What is cyclomatic complexity?
問:(這是一個複雜度模型吧)

一種程式碼複雜度的衡量標準,中文名稱叫做圈複雜度。圈複雜度“用來衡量一個模組判定結構的複雜程度,數量上表現為獨立現行路徑條數,即合理的預防錯誤所需測試的最少路徑條數,圈複雜度大說明程式程式碼可能質量低且難於測試和維護,根據經驗,程式的可能錯誤和高的圈複雜度有著很大關係”。
Q:What are black-box texing and white-box texting?
問:什麼是黑盒測試和白盒測試?

黑盒測試Black-box Testing,又稱為功能測試資料驅動測試)是把測試物件看作一個黑盒子。利用黑盒測試法進行動態測試時,需要測試軟體產品的功能,不需測試軟體產品的內部結構和處理過程。採用黑盒技術設計測試用例的方法有:等價劃分、邊界值分析、錯誤推測、因果圖和綜合策略。黑盒測試注重於測試軟體的功能性需求,也即黑盒測試使軟體工程師派生出執行程式所有功能需求的輸入條件。黑盒測試並不是白盒測試的替代品,而是用於輔助白盒測試發現其他型別的錯誤。

白盒測試(White-box Testing,又稱邏輯驅動測試,結構測試)是把測試物件看作一個開啟的盒子。利用白盒測試法進行動態測試時,需要測試軟體產品的內部結構和處理過程,不需測試軟體產品的功能。白盒測試又稱為結構測試和邏輯驅動測試。白盒測試法的覆蓋標準有邏輯覆蓋、迴圈覆蓋和基本路徑測試。其中邏輯覆蓋包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。

Black box testing: a testing without knowledge of the internal working of the item being tested.

white box testing: use specific knowledge of programming code to examine outputs.


Q:The following function divides a by b and out put to c,returns -1 as error.
  Int divide (int a,int b,int c)
  List you test cases in a black-box testing.
問:對 Int divide (int a,int b,int c)函式寫出黑盒測試用例

先等價,後邊界值 

a       b         c         預期         結果   
  g       g   
  5       0     
  6       2     
  0       1   
  -10   10   
  -10     -10   
  10.0   10.0  
Q:Int a ctivity(int nage,bool bmale)
  {if (nage<60)
    return zoo;    else if(bmale)
    return golf;
    else return movie;
  } 
用cyclomatic   complexity,共有多少條路徑   
   3
Q:The following function tests whether the three numbers can be the lengths of the three sides of a triangle.
Bool triangle(float a,float b,float c)
List you test cases in a black-box testing.
問:也是讓寫黑盒測試用例,是一個三個數是否是三角形的三條邊的測試

先等價,後邊界值

a       b         c         預期         結果   
  g       j         0   
  -1     2           2   
  10     2         3   
  2       3         4   
  2       2         5   
  6       6         6  

IQ,EQ題

然後是英文的資料結構,c/c++,資料庫,3D建模,軟體工程,軟體測試

題目幾乎都是英文的

後面還要填表格,一張中文的,一張英文的

一般有三個步驟
首先會筆試。筆試題分為EQ題和專業題,EQ題沒什麼好說的,大家自由發揮就行,不過其中有一些邏輯推理題要注意。專業題目全英文,考的內容很多,資料結構,C/C++語法,COM,3D建模,軟體測試基礎知識,如黑盒,白盒測試等,題不難,每方面有三到五題左右。
筆試成績達到一定分數過後才能進入第二輪人事部面試。這部分面試一般是五人一組在一房間裡,面試人員會問很多問題,然後每個人做答,問題很隨機,當時好像問了“最尊敬的人是誰,最難忘的事是什麼,有何職業規劃,如何處理與同事之間的關係矛盾等等”。
這輪過後就到技術部面試,會問一些基礎知識,如資料結構常用的有哪些,如何用C/C++寫出其中的一種,面象對像有哪些特性,XML是什麼等等,可能他會用英語問你這些問題,各位練下聽力口語哈(當時俺被問的很鬱悶)

COM:

(COM),是微軟公司為了計算機工業的軟體生產更加符合人類的行為方式開發的一種新的軟體開發技術。在COM構架下,人們可以開發出各種各樣的功能專一的元件,然後將它們按照需要組合起來,構成複雜的應用系統。由此帶來的好處是多方面的:可以將系統中的元件用新的替換掉,以便隨時進行系統的升級和定製;可以在多個應用系統中重複利用同一個元件;可以方便的將應用系統擴充套件到網路環境下;COM與語言,平臺無關的特性使所有的程式設計師均可充分發揮自己的才智與專長編寫元件模組;等等。COM是開發軟體元件的一種方法。元件實際上是一些小的二進位制可執行程式,它們可以給應用程式,作業系統以及其他元件提供服務。

開發自定義的COM元件就如同開發動態的,面向物件的API。多個COM物件可以連線起來形成應用程式或元件系統。並且元件可以在執行時刻,在不被重新連結或編譯應用程式的情況下被卸下或替換掉。Microsoft的許多技術,如ActiveX, DirectX以及OLE等都是基於COM而建立起來的。並且Microsoft的開發人員也大量使用COM元件來定製他們的應用程式及作業系統。
COM所含的概念並不止是在Microsoft Windows作業系統下才有效。COM並不是一個大的API,它實際上象結構化程式設計及面向物件程式設計方法那樣,也是一種程式設計方法。在任何一種作業系統中,開發人員均可以遵循“COM方法”。 有的元件必須滿足兩個條件:第一,元件必須動態連結;第二,它們必須隱藏(或封裝)其內部實現細節。動態連結對於元件而言是一個至關重要的要求,而訊息隱藏則是動態連結的一個必要條件。對於COM來講,介面是一個包含一個函式指標陣列的記憶體結構。每一個數組元素包含的是一個由元件所實現的函式地址。

1.寫出判斷ABCD四個表示式的是否正確, 若正確, 寫出經過表示式中 a的值(3分)

int a = 4;

(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);

a = ?

答:C錯誤,左側不是一個有效變數,不能賦值,可改為(++a) += a;

改後答案依次為9,10,10,11

2.某32位系統下, C++程式,請計算sizeof 的值(5分).

char str[] = “www.ibegroup.com”

char *p = str ;

int n = 10;

請計算

sizeof (str ) = ?(1)

sizeof ( p ) = ?(2)

sizeof ( n ) = ?(3)

void Foo ( char str[100]){

請計算

sizeof( str ) = ?(4)

}

void *p = malloc( 100 );

請計算

sizeof ( p ) = ?(5)

答:(1)17 (2)4 (3) 4 (4)4 (5)4

3. 回答下面的問題. (4分)

(1).標頭檔案中的 ifndef/define/endif 幹什麼用?預處理

答:防止標頭檔案被重複引用

(2). #include 和 #include “filename.h” 有什麼區別?

答:前者用來包含開發環境提供的庫標頭檔案,後者用來包含自己編寫的標頭檔案。

(3).在C++ 程式中呼叫被 C 編譯器編譯後的函式,為什麼要加 extern “C”宣告?

答:函式和變數被C++編譯後在符號庫中的名字與C語言的不同,被extern "C"修飾的變數和函式是按照C語言方式編譯和連線的。由於編譯後的名字不同,C++程式不能直接呼叫C 函式。C++提供了一個C 連線交換指定符號extern“C”來解決這個問題。

(4). switch()中不允許的資料型別是?

答:實型

4. 回答下面的問題(6分)

(1).Void GetMemory(char **p, int num){

*p = (char *)malloc(num);

}

void Test(void){

char *str = NULL;

GetMemory(&str, 100);

strcpy(str, "hello");

printf(str);

}

請問執行Test 函式會有什麼樣的結果?

答:輸出“hello”

(2). void Test(void){

char *str = (char *) malloc(100);

strcpy(str, “hello”);

free(str);

if(str != NULL){

strcpy(str, “world”);

printf(str);

}

}

請問執行Test 函式會有什麼樣的結果?

答:輸出“world”

(3). char *GetMemory(void){

char p[] = "hello world";

return p;

}

void Test(void){

char *str = NULL;

str = GetMemory();

printf(str);

}

請問執行Test 函式會有什麼樣的結果?

答:無效的指標,輸出不確定

5. 編寫strcat函式(6分)

已知strcat函式的原型是char *strcat (char *strDest, const char *strSrc);

其中strDest 是目的字串,strSrc 是源字串。

(1)不呼叫C++/C 的字串庫函式,請編寫函式 strcat

答:

VC原始碼:

char * __cdecl strcat (char * dst, const char * src)

{

char * cp = dst;

while( *cp )

cp++; /* find end of dst */

while( *cp++ = *src++ ) ; /* Copy src to end of dst */

return( dst ); /* return dst */

}

(2)strcat能把strSrc 的內容連線到strDest,為什麼還要char * 型別的返回值?

答:方便賦值給其他變數

6.MFC中CString是型別安全類麼?

答:不是,其它資料型別轉換到CString可以使用CString的成員函式Format來轉換

7.C++中為什麼用模板類。

答:(1)可用來建立動態增長和減小的資料結構

(2)它是型別無關的,因此具有很高的可複用性。

(3)它在編譯時而不是執行時檢查資料型別,保證了型別安全

(4)它是平臺無關的,可移植性

(5)可用於基本資料型別

8.CSingleLock是幹什麼的。

答:同步多個執行緒對一個數據類的同時訪問

9.NEWTEXTMETRIC 是什麼。

答:物理字型結構,用來設定字型的高寬大小

10.程式什麼時候應該使用執行緒,什麼時候單執行緒效率高。

答:1.耗時的操作使用執行緒,提高應用程式響應

2.並行操作時使用執行緒,如C/S架構的伺服器端併發執行緒響應使用者的請求。

3.多CPU系統中,使用執行緒提高CPU利用率

4.改善程式結構。一個既長又複雜的程序可以考慮分為多個執行緒,成為幾個獨立或半獨立的執行部分,這樣的程式會利於理解和修改。

其他情況都使用單執行緒。

11.Windows是核心級執行緒麼。

答:見下一題

12.Linux有核心級執行緒麼。

答:執行緒通常被定義為一個程序中程式碼的不同執行路線。從實現方式上劃分,執行緒有兩種型別:“使用者級執行緒”和“核心級執行緒”。 使用者執行緒指不需要核心支援而在使用者程式中實現的執行緒,其不依賴於作業系統核心,應用程序利用執行緒庫提供建立、同步、排程和管理執行緒的函式來控制使用者執行緒。這種執行緒甚至在象 DOS 這樣的作業系統中也可實現,但執行緒的排程需要使用者程式完成,這有些類似 Windows 3.x 的協作式多工。另外一種則需要核心的參與,由核心完成執行緒的排程。其依賴於作業系統核心,由核心的內部需求進行建立和撤銷,這兩種模型各有其好處和缺點。使用者執行緒不需要額外的核心開支,並且使用者態執行緒的實現方式可以被定製或修改以適應特殊應用的要求,但是當一個執行緒因 I/O 而處於等待狀態時,整個程序就會被排程程式切換為等待狀態,其他執行緒得不到執行的機會;而核心執行緒則沒有各個限制,有利於發揮多處理器的併發優勢,但卻佔用了更多的系統開支。 Windows NT和OS/2支援核心執行緒。Linux 支援核心級的多執行緒

13.C++中什麼資料分配在棧或堆中,New分配資料是在近堆還是遠堆中?

答:棧: 存放區域性變數,函式呼叫引數,函式返回值,函式返回地址。由系統管理

堆: 程式執行時動態申請,new 和 malloc申請的記憶體就在堆上

14.使用執行緒是如何防止出現大的波峰。

答:意思是如何防止同時產生大量的執行緒,方法是使用執行緒池,執行緒池具有可以同時提高排程效率和限制資源使用的好處,執行緒池中的執行緒達到最大數時,其他執行緒就會排隊等候。

15函式模板與類模板有什麼區別?

答:函式模板的例項化是由編譯程式在處理函式呼叫時自動完成的,而類模板的例項化必須由程式設計師在程式中顯式地指定。

16一般資料庫若出現日誌滿了,會出現什麼情況,是否還能使用?

答:只能執行查詢等讀操作,不能執行更改,備份等寫操作,原因是任何寫操作都要記錄日誌。也就是說基本上處於不能使用的狀態。

17 SQL Server是否支援行級鎖,有什麼好處?

答:支援,設立封鎖機制主要是為了對併發操作進行控制,對干擾進行封鎖,保證資料的一致性和準確性,行級封鎖確保在使用者取得被更新的行到該行進行更新這段時間內不被其它使用者所修改。因而行級鎖即可保證資料的一致性又能提高資料操作的併發性。

18如果資料庫滿了會出現什麼情況,是否還能使用?

答:見16

19 關於記憶體對齊的問題以及sizeof()的輸出

答:編譯器自動對齊的原因:為了提高程式的效能,資料結構(尤其是棧)應該儘可能地在自然邊界上對齊。原因在於,為了訪問未對齊的記憶體,處理器需要作兩次記憶體訪問;然而,對齊的記憶體訪問僅需要一次訪問。

20 int i=10, j=10, k=3; k*=i+j; k最後的值是?

答:60,此題考察優先順序,實際寫成: k*=(i+j);,賦值運算子優先順序最低

21.對資料庫的一張表進行操作,同時要對另一張表進行操作,如何實現?

答:將操作多個表的操作放入到事務中進行處理

22.TCP/IP 建立連線的過程?(3-way shake)

答:在TCP/IP協議中,TCP協議提供可靠的連線服務,採用三次握手建立一個連線。第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;

第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也傳送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;

  第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=k+1),此包傳送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。

相關推薦

C/C++試題很多

微軟亞洲技術中心的面試題!!! 1.程序和執行緒的差別。 執行緒是指程序內的一個執行單元,也是程序內的可排程實體. 與程序的區別: (1)排程:執行緒作為排程和分配的基本單位,程序作為擁有資源的基本單位 (2)併發性:不僅程序之間可以併發執行,同一個

c++實現二叉樹及試題1

1.建立二叉樹2.前序遍歷<遞迴與非遞迴> 3.中序遍歷<遞迴與非遞迴> 4.後序遍歷<遞迴與非遞迴> 5.層次遍歷  6.獲得節點葉子的個數7.二叉樹獲得的高度8.二叉樹交換的左右兒子9.求兩個節點pNode1和pNode2在以[R為樹

C語言經典試題

1、請填寫bool , float, 指標變數 與“零值”比較的if 語句。 提示:這裡“零值”可以是0, 0.0 , FALSE 或者“空指標” 。例如int 變數n 與“零值”比較的if 語句為: if ( n == 0 ) if ( n

2016阿里巴巴c/c++研發工程師線上試題選擇題

自己回憶的題目,反正就這個意思(一個六個選項,沒有全部羅列) 一個單鏈表,已知一個有倆個相鄰的結點A和B,此時有一個新結點 r,問在A結點後插入r,如何執行() A. r->ne

C 2012年試題

  1 程式改錯 1.1 下面程式段的功能是交換兩個字元陣列的內容(每個字串字元數均不超過100)  (8分)   【 見2012年筆試題1.1】 void StrSwap(char *pa,char *pb) { char *temp;

C++常見面試題-static總結

1、不考慮類 1)隱藏 當同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。例如,同時編譯兩個原始檔a.cpp和main.cpp。如果,在一個檔案中的變數或函式加了static就會對其他檔案不可見。 2)預設初始化為0 包括未初始化的全域性靜

php常規試題

內容管理 www 語言 圖片 user 是否 最適 name 開始 1.如何用php的環境變量得到一個網頁地址的內容?ip地址又要怎樣得到? Gethostbyname() echo $_SERVER ["PHP_SELF"];echo $_SERVER ["SERVER_

Java試題3

scan abd bst spl 輸出 rst != first adf /** * 輸入: * safab qeabd abdfe (以空格隔開) * ab * 輸出ab出現的次數並逆序輸出含有ab的字符串 * 輸出: * 3 * a

Java試題2

spl res new void scan system.in lin () static /** * 一個物體從高h處下落,下落後會反彈到離地面高上一次下降高度的1/2,求當第m次接觸地面時走過路徑的長度 * 輸入: * 100,1

Java試題5

stat 裏的 pre 做的 靜態 string main clas 答案 class Test{ int getValue(){ static int i=0; i++; return i; } p

Java試題——執行緒安全、String、StringBuffer、StringBuilder

1.什麼是執行緒安全? 簡單地說法:執行緒安全可以簡單理解為一個方法或者一個例項可以在多執行緒環境中使用而不會出現問題。 複雜的說法:當多個執行緒訪問同一個物件時,如果不用考慮這些執行緒在執行時環境下的排程和交替執行,也不需要進行額外的同步,或者在呼叫方進行任何其他的協調操作,呼叫這個物件的

Java試題

1.以下java程式程式碼,執行後的結果是() java.util.HashMap map=new java.util.HashMap(); map.put("name",null); map.put("name","Jack"); System.out.println(map.s

Java試題

1.關於抽象類與最終類,下列說法錯誤的是?  A. 抽象類能被繼承,最終類只能被例項化  B. 抽象類和最終類都可以被宣告使用  C. 抽象類中可以沒有抽象方法,最終類中可以沒有最終方法  D. 抽象類和最終類被繼承時,方法可以被子類覆蓋   答案:

某找房網 試題

一、題目說明: 傻傻的搏鬥 小智和小春兩個遊戲菜鳥要進行電競搏鬥,小智有X點HP,每次攻擊便使對方丟失A點生命值,每次攻擊完後需要冷卻C秒,小春有Y點HP,每次攻擊會使對方丟失B點生命值,每次攻擊完後需要冷卻D秒。玩家HP小於等於0時便死亡,若小智最終存活,則輸出XIAOZHI,若

某找房網 試題

一、題目描述:  給你一個合法的算術表示式,只包含整數和加號,減號。但整數不一定都是十進位制的數,可能是八進位制,十六進位制,規定包含字首0x的是十六進位制,包含字首0的是八進位制,其他情況是十進位制。現在你能計算出這個式子的最終的值嗎? 說明:輸入的表示式式子只會是整數

No.25 經典試題:模擬實現strcpy,strcat,strcmp,strstr,memcpy

直接上程式碼: 1. //模擬實現strcpy #include <stdio.h> #include <assert.h> char* my_strcpy(char* dest, const char* src) { char* ret = dest ;

No.23 經典試題:用巨集來計算偏移量,判斷大小端聯合體法,指標法

寫一個巨集,計算結構體中某變數相對於首地址的偏移,並給出說明 判斷大小端 程式碼1: //寫一個巨集,計算結構體中某變數相對於首地址的偏移,並給出說明 //定義的這個巨集將結構體裡邊的變數的地址取出後再強轉成char型,然後進行相減。 //注意:&s ==

軟體測試工程師試題

軟體測試筆試題(答案) 判斷題1.軟體測試的目的是儘可能多的找出軟體的缺陷。(Y) 2.Beta 測試是驗收測試的一種。(Y) 3.驗收測試是由終端使用者來實施的。(N) 4.專案立項前測試人員不需要提交任何工件。(Y) 5.單元測試能發現約80%

木子網羅java試題

1.問:Java提供哪幾種運算子? 答:算術運算子、關係運算符、位運算子、邏輯運算子、賦值運算子、其他運算子。 答案相關連結 2.問:從下列選項選出java.lang包中的方法,用來比較兩個物件是否相等,相等返回true。 A.toString() B.equals() C.compare

木子網羅資料庫試題

1.問:刪除表資料,同時保留表結構,()方法比()方法效率高 A.delete B.drop table C.truncate table D.delete all 答:C,A 解析: truncate table 命令將快速刪除資料表中的所有記錄,但保留