10道有代表性面試題整理

學識都 人氣:2.37W

現在的公司招聘,都要筆試面試.如果你不是那種編程功底非常深厚的人,又不好好準備一番,在筆試面試中往往會處於被動局面.雖然有些筆試題是故意爲難我們,有點鑽牛角尖.但是很多筆試題面試題確實能夠很好地看出我們的基礎.

10道有代表性面試題整理

在這裏,我就略去那些鑽牛角尖的題.從csdn論壇我近半年的收集中選出10道有代表性的題目,難度基本上是逐漸加大.對數組,指針,數據結構,算法,字符串,文件操作等問題都有覆蓋.主要以c語言的實現爲主,也有c++的題.大家可以先做做這10道題,測試一下自己的水平.

1. 下面這段代碼的輸出是多少(在32位機上).

char *p;

char *q[20];

char *m[20][20];

int (*n)[10];

struct MyStruct

{

char dda;

double dda1;

int type ;

};

MyStruct k;

printf("%d %d %d %d",sizeof(p),sizeof(q),sizeof(m),sizeof(n),sizeof(k));

2.

(1)

char a[2][2][3]={{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}} };

for(int i=0;i<12;i++)

printf("%d ",_______);

在空格處填上合適的語句,順序打印出a中的數字

(2)

char **p, a[16][8];

問:p=a是否會導致程序在以後出現問題?爲什麼?

3.用遞歸方式,非遞歸方式寫函數將一個字符串反轉.

函數原型如下:char *reverse(char *str);

py函數和memcpy函數有什麼區別?它們各自使用時應該注意什麼問題?

5.寫一個函數將一個鏈表逆序.

一個單鏈表,不知道長度,寫一個函數快速找到中間節點的位置.

寫一個函數找出一個單向鏈表的倒數第n個節點的指針.(把能想到的最好算法寫出).

6.用遞歸算法判斷數組a[N]是否爲一個遞增數組。

7.

有一個文件(名爲)如下,每行有4項,第一項是他們的.名次,寫一個c程序,將五個人的名字打印出來.並按名次排序後將5行數據仍然保存到中.使文件按名次排列每行.

2,07010188,0711,李鎮豪,

1,07010154,0421,陳亦良,

3,07010194,0312,凌瑞鬆,

4,07010209,0351,羅安祥,

5,07010237,0961,黃世傳,

8.寫一個函數,判斷一個unsigned char 字符有幾位是1.

寫一個函數判斷計算機的字節存儲順序是升序(little-endian)還是降序(big-endian).

9.微軟的筆試題.

Implement a string class in C++ with basic functionality like comparison, concatenation, input and output. Please also provide some test cases and using scenarios (sample code of using this class).

Please do not use MFC, STL and other libraries in your implementation.

10.有個數組a[100]存放了100個數,這100個數取自1-99,且只有兩個相同的數,剩下的98個數不同,寫一個搜索算法找出相同的那個數的值.(注意空間效率時間效率儘可能要低).

這十道題還是能夠看出自己的水平如何的.如果你能不假思索地做出這10道題,估計去國外大公司是沒有問題了,呵呵.

答案我在整理中,以後陸續發佈.................

下面有些題也不錯,可以參考.

1.下面的代碼輸出是什麼,爲什麼?

void foo(void)

{

unsigned int a = 6;

int b = -20;

(a+b>6)?puts(">6"):puts("<=6");//puts爲打印函數

}

輸出 >6.

就是考察隱式轉換型變量轉化成unsigned int, b成了正數.

2. b)運行下面的函數會有什麼結果?爲什麼?

void foo(void)

{

char string[10],str1[10];

int i;

for(i=0;i<10;i++)

{

str1 = a;

}

strcpy(string, str1);

printf("%s",string);

}

首先搞清strcpy函數的實現方法,

char * strcpy(char * strDest,const char * strSrc)

{

if ((strDest == NULL) || (strSrc == NULL))

throw "Invalid argument(s)";

char * strDestCopy = strDest;

while ((*strDest++ = *strSrc++) !=