- 相關推薦
筆試題參考
1、求函數返回值,輸入x=9999;
int func(x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}
【試題解析】
解這道題的時候,如果拿出一個二進制數來分析就會容易的多了,x=x&(x-1)實際上就是把x的二進制形式的最后一個“1”變成“0”,x的二進制形式有多少個“1”循環就執行多少次。
9999/256 = 39 余 15,把這兩個數分別轉化一下就很快了
39 = 32 + 4 + 2 +1 = 00100111
15 = 0F = 00001111
所以 9999=0010011100001111,共有8個1,答案就是 8 了
2、實現以下程序,以方便binary search.
.要有處理錯誤語句
.隊列的分配的大小是固定的MAX_LEN,由第二個參數輸入
.不能復制隊列
insert (int *arr, //隊列
size_l len, // 隊列大小
size_l count, //隊列元素的數目
int varl //要處理的數據
)返回插入數據的索引
remove(int *arr,size_l len,size_l count,int varl)返回刪除元素的索引
search(int *arr,size_l len,size_l count,int varl)返回搜索道元素的索引
【試題解析】
略。數據結構書上都有的。
3、堆棧R,從頂到底:{2,4,6,8,10},逐個取出放入隊列Q中 ,再從Q中逐個取出放入R中,問現在堆棧R中從頂到底的順序。
【試題解析】
這個也不用了吧,{10,8,6,4,2}
4、寫出程序的結果:___________
int funa(int *a)
{
a[0] ++;
}
int funb(int b[])
{
b[1] += 5;
}
main()
{
int a[5] = {2,3,4,5,6};
int b[5] = {2,3,4,5,6};
int *p;
p = &a[0];
(*p)++;
funa(p);
for(int i = 0; i<3; i++)
printf("%d,",a);
p = &b[1];
funb(p);
for(i = 0; i<3; i++)
printf("%d,",b);
}
【題目解析】
結果是:
4,3,4,2,3,9
(*p)++; 也就是a[0]++;
funa(p);中的 a[0]++ 是將 main 中的數組 a[0]++,
數組 a 中只有第一個元素加了兩次 1 ,
p = &b[1];把p指向了數組 b 的第二個元素
funb(p);中的 b[1]+=5 是將 main 中的數組 b[2]+=5
數組 b 中的第三個元素加了 5
5、找出下面程序的 BUG
int CopyStringAndCount(char * Str) ①
{
int nCount = 0;
char * pBuffer; ②
pBuffer = new char[MAX_PATH_LENGTH];
③
④
strcpy(pBuffer, Str);
for ( ; pBuffer⑤; pBuffer++ )
if ( pBuffer⑥=='\\' ) nCount ++;
⑦
return nCount;
}
【題目解析】
① (const char * Str)
如果在函數體內不需要改變字符串的內容,最好加上 const 以免誤修改字符串內容
② char * pBuffer = NULL;
指針聲明的時候最好賦初值 NULL
③ if ( !pBuffer ) return -1;
開辟空間之后沒有檢查是否成功,沒有錯誤檢查
④ if ( strlen(Str)>(MAX_PATH_LENGTH-1) ) return -2;
沒有檢查新開辟的空間能否容納傳進來的字符串,否則有可能越界
⑤ *pBuffer
題中的原意是當到字符串末尾的時候跳出循環,所以應該是取字符串的內容
⑥ 同⑤
⑦ delete pBuffer; pBuffer=NULL;
沒有釋放新開辟的空間,會造成內存泄漏
6、你覺得下一代瀏覽器應該添加什么功能?
【題目解析】
當時隨便寫的,比如安全性,搜索功能等。
7、給出函數strcmp()的測試方案
int strcmp(const char * str1, const char *str2)
【題目解析】
主要考查考慮問題的全面型,我覺得有一個電冰箱測試的例子不錯
我寫了幾個(僅供參考):
str1 str2
NULL NULL
"a" NULL
NULL "a"
"a" "abc"
"abc" "acd"
".xj" "sefn"
8、測試一個 DVD Player,如果你僅有有限的時間,你會如何做?
【題目解析】
只是說說我的思路,不是標準答案。首先測試基本功能,然后是常用功能,然后是高級功能。
9、在過去的這些年,你遇到了哪一個最大的困難,你是如何解決它的?你是單獨做的還是和別人一起做的決定?為什么做這個決定?現在結果如何?
10、邏輯題:
有一5節車廂的過山車,每節能座兩人,現有Luair,Jack,Gwen,Tom,Mark,Paul,6人去乘車,有以下條件
1,Luair和別人同乘
2,Mark 不合別人同乘,而且Mark的前一節車廂是空的
3,Tom 不和Gwen 與 Paul 中的任何一人同乘
4,Gwen乘3,或者4節
....下面是一些斷言性的語句,讓你判斷對錯
【題目解析】
Mark和那節空車廂可以當作一個整體,剩下的就是按照規則做排列組合就可以了,可能的種類不是太多。如果用筆畫個草圖的話就比較容易了。
11、鏈表反轉: (這道題不是微軟的,不過考的比較多,就不另外開貼了)
數據結構如下:
typedef struct _Node
{
int data;
struct _Node *next;
} Node;
完成函數 Node *Reverse(Node *head),head為不帶頭節點的鏈表的首部。
Node *Reverse(Node *head)
{
Node *tmp = NULL; // 緩沖變量
Node *newHead = NULL; // 反轉后的新頭節點
if ( head==NULL ) return head; // 空鏈表的情況
if ( head->next==NULL ) return head; // 鏈表只有一個節點的情況
while ( head ) // 判斷有沒有移動到最后
{
tmp=head->next; // 臨時記錄下一個節點
head->next = newHead; // 把原來鏈表中的節點放到新的鏈表的首部
newHead = head;
head = tmp;
} // end of while
return newHead;
} // end of Reverse
【筆試題參考】相關文章:
中興2015筆試題08-02
迅雷2011.10.21筆試題08-10
小升初試題參考02-25
筆經:加強型試題07-22
小升初英語模擬試題參考08-10
名校自主招生試題參考02-28
小升初語文試卷試題參考08-10
小升初數學試題參考08-10
海爾04年筆試題及答案07-31
面試前準備 谷歌參考面試題參考08-09