C/C++面試基礎題

一 簡答題
1.static有什麼用途?(請至少說明兩種)


2.引用與指針有什麼區別?


3.描述實時系統的基本特性


4.全局變量和局部變量在內存中是否有區別?如果有,是什麼區別?


5.什麼是平衡二叉樹?


6.堆棧溢出一般是由什麼原因導致的?


7.什麼函數不能聲明爲虛函數?


8.冒泡排序算法的時間複雜度是什麼?


9.寫出float x 與“零值”比較的if語句。


10.Internet採用哪種網絡協議?該協議的主要層次結構?


11.Internet物理地址和IP地址轉換採用什麼協議?


12.IP地址的編碼分爲哪倆部分?


13.用戶輸入M,N值,從1至N開始順序循環數數,每數到M輸出該數值,直至全部輸出。寫出C程序。
  循環鏈表,用取餘操作做

    


14.寫出判斷ABCD四個表達式的是否正確, 若正確, 寫出經過表達式中 a的值(3分)
int a = 4;
(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);
a = ?


15.某32位系統下, C++程序,請計算sizeof 的值(5分).
char str[] = “http://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)

16.頭文件中的 ifndef/define/endif 幹什麼用?


17. #include< filename> 和 #include “filename.h” 有什麼區別?


18.在C++ 程序中調用被 C 編譯器編譯後的函數,爲什麼要加 extern “C”聲明?


19. switch()中不允許的數據類型是?


20.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 函數會有什麼樣的結果?


21. void Test(void){
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL){
strcpy(str, “world”);
printf(str);
}
}
請問運行Test 函數會有什麼樣的結果?


22. char *GetMemory(void){
char p[] = "hello world";
return p;
}
void Test(void){
char *str = NULL;
str = GetMemory();
printf(str);
}


23. 編寫strcat函數
已知strcat函數的原型是char *strcat (char *strDest, const char *strSrc);
其中strDest 是目的字符串,strSrc 是源字符串。

(1)不調用C++/C 的字符串庫函數,請編寫函數 strcat

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


24.MFC中CString是類型安全類麼?





25.C++中爲什麼用模板類。


26.CSingleLock是幹什麼的。


27.NEWTEXTMETRIC 是什麼。


28.程序什麼時候應該使用線程,什麼時候單線程效率高。


29.Windows是內核級線程麼。


30.Linux有內核級線程麼。


31.C++中什麼數據分配在棧或堆中,New分配數據是在近堆還是遠堆中?


32.使用線程是如何防止出現大的波峯。


33.函數模板與類模板有什麼區別?


34.一般數據庫若出現日誌滿了,會出現什麼情況,是否還能使用?


35.如果數據庫滿了會出現什麼情況,是否還能使用?


36.SQL Server是否支持行級鎖,有什麼好處?


37.關於內存對齊的問題以及sizof()的輸出  



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


39.對數據庫的一張表進行操作,同時要對另一張表進行操作,如何實現?


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


41.ICMP是什麼協議,處於哪一層?


42.觸發器怎麼工作的?


43.winsock建立連接的主要實現步驟?


44.動態連接庫的兩種方式?


45.IP組播有那些好處?


46.軟件的開發流程?


47.char str[] = “hello”,sizeof (str ) = ________ strlen ( str ) = __________


48.類和結構的區別?


49.簡述下虛擬函數的含義?


50.類中訪問權限private,protested,prublic,可以被何種訪問?


51.解釋下面的含義:
int *pTemp = new int ( 5 );
int *pTemp = new int[5];




二 編程題
題目:有n 個人,他們圍成一個圈,從第一個人開始數數(第一個人默認爲1號,一直到n 號),數1,2,3,當數到3的人則退出這個圈,後面的繼續數,一直進行,問到最後是否只剩一個人,如果是,這個人的編號是多少?


題目:寫一個memcpy函數。


題目:寫一個雙向鏈表的插入函數。
原型如下:
struct node
{
node *head;
node *end;
int value;
}

void createnode(node **head, node **end, int val);

int main()
{
node *head = NULL;
node *end = NULL;
createnode(head, end, 1);
createnode(head, end, 1);
createnode(head, end, 1);
return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章