筆試的內容不是很難,下面是一些記錄:
選擇題:
1.兩個長度各為N的有序數組進行合并,求可能的最多的比較次數,(2n-1)
2.兩個長度為N的有序數組,要求在這兩個數組中排第N的元素,最小的時間復雜度? ( O(logn),類似二分搜索)
3.逆波蘭表達式求值,(竟然畫了很久的后綴表達式沒畫出來,真杯具。。直接求值就行了)
4.一個關于二叉樹的問題,大意是要在二叉樹查找某個元素,求選項給出的查找序列哪個不可能出現?(考察二叉樹的性質)
5.excell的列表示如AB...Z, AA AB ....ZZ, AAA AAB .... ZZZ, 求DEF的十進制值(求26進制的值,直接計算)
6.函數指針數組的寫法問題。。
7.虛函數問題,大意是基類定義了一個保護成員,構造函數初始化為0,還定義了一個虛函數,基類是將成員--,而子類只重定義了虛函數,將成員++,主函數里,new了一個子類對象,然后定義一個基類指針指向此對象,又定義了一個基類引用指向此基類指針指向的對象,然后分別調用了虛函數,要求基類定義的成員的值。
8.給出一段程序,要求輸出值,直接計算。程序里計算字符數組 char a[]={'a','b','c'}的長度采用sizeof(a)/sizeof(a[0])的方法。
9.指出給出選項中不可能存儲在棧中的是。。。(全局靜態變量,放在靜態區中)
10.給出char *p="hello world", char a[]="byebye",strncpy(p,a,6),問這個程序運行后p的結果是什么?(這里*p是一個字符串常量,不能對它的元素進行修改,所以程序在運行時會出錯)
主觀題編程題:
大意是給出一個數組,這個數組每個元素都不同,并且可能是升序的,或者是升序+旋轉后的結果,例如1,2,3,4,5,或者 4,5,1,2,3 或者 3,4,5,1,2等等,
然后給一個數,要找出這個數在所給數組中的索引值或者返回-1,要求復雜度必須小于o(n)。
相對比較簡單吧,首先是判斷是否是從左到右有升序的,若是,則用二分查找,復雜度為o(logn),如果不是,則根據要找的值與第一個值比較的結果,在左半部分或右半部分查找這個數,易知,查找次數肯定小于n,因而復雜度符合要求。
第二個小題是要給出一些測試數據并加以說明。
正式找工的第一場面試,不是很順利,特此記錄,攢下RP, ^.^