騰訊的實習招聘也算是告一段落了。從內推到正式實習生招聘,總結一下。看了這麼多面經,也把本身的經歷寫一下,有須要的朋友能夠參考一下。畢竟互幫互助嘛。node
騰訊內推的經歷比較慘淡,面了三個部門,都跪在一面了。講真,有點心塞。mysql
平生第一次的電話面試交給了WXG,一上來給了18道題讓作,一共給了40分鐘左右,能作多少算多少。當時作了8道出來。把這些題列出來吧,供大佬們參考。
```cpp
//1. 反轉字符串,在原串上反轉
char * reverse( char * s )面試
//2. 給定一個整數,按10進制來看,計算裏面包含多少個0。不能用snprint f轉成字符串。
int count( int value )算法
//3. 從一個雙向鏈表中刪除一個節點。head是鏈表頭節點,toDelete是已經找出來要刪除的節點。
struct LinkNode {
struct LinkNode * prev, * next;
};
struct LinkNode * head;
void remove( struct LinkNode * todelete )sql
//4. 兩個有序(從小到大)單鏈表,合併爲一個有序的單鏈表
struct LinkNode {
int value;
struct LinkNode * next;
};
struct LinkNode * merge( struct LinkNode * firstLink, struct LinkNode * secondLink )數組
//5. 倒轉單鏈表(在原鏈表上倒轉)
struct LinkNode {
int value;
struct LinkNode * next;
};
struct LinkNode * reverseList( struct LinkNode * head )函數
//6. 有一個二叉樹,每一個節點的值是一個整數。寫一個函數,判斷這顆樹中是否存在從根到葉子節點的一個路徑,這個路徑上全部節點之和爲某一個值。存在返回1,不然返回0。
struct TreeNode {
int value;
struct TreeNode * left, * right;
};
int haspath( struct TreeNode * root, int value )優化
//7. 給定一個遞增循環整數數組,從裏面找出最小的元素,使用的算法越快越好。特別地,最小的元素可能出如今數組中間。好比:50, 52, 63, 90, 3, 8, 15, 44。
int findmin( int array[], int count )spa
//8. 在有序列表中插入一個節點
struct LinkNode {
int val;
struct LinkNode * next;
};
struct LinkNode * insert( LinkNode * head, LinkNode * node )線程
//9. 二叉樹的深度
struct TreeNode {
int val;
struct TreeNode * left, * right;
};
int depth( TreeNode * root )
//10. 給定兩個字符串 s1 和 s2 ,從 s1 中刪除在 s2 中出現過的字符。
char * remove( char * s1, const char * s2 )
//11. 從有序鏈表中去除重複的元素
(1, 1, 3, 3, 3, 5, 5, 5, 9, 9, 9, 9) -> (1, 3, 5, 9).
struct LinkNode {
int val;
struct LinkNode * next;
};
void remove( LinkNode * head )
//12. 有一個字符串列表,從中找出按字典序最大和最小的串。
char * strlist[ N ] = {
"abc",
"123",
....
"def"
};
void find( char * strlist[], char ** strmin, char ** strmax )
//13. 設定以下的對應關係( A=1,B=2,C=3,...,Z=26,AA=27,AB=28,...,AAA=xxx,... ),編寫一個轉換函數,根據上面的規則把一個字符串轉換爲數字
int StrToInt ( const char * str );
//14. 在二叉排序樹上面找出第3大的節點。注意:不能把二叉樹全量存儲到另外的存儲空間,好比存儲到數組中,而後取出數組的第三個元素。
struct TreeNode {
int value;
struct TreeNode * left, * right;
};
struct TreeNode * find( struct TreeNode * root );
//15. 從一個整數數組中,找出遞增的最長序列。
struct Result {
int offset; // 序列的開始位置
int count; // 序列的長度
};
int findCont( int array[], int count, struct Result * result );
//16. 從單鏈表中找出中間的節點。
struct LinkNode {
int val;
struct LinkNode * next;
};
struct LinkNode * find( LinkNode * head );
//17. 兩個有序(從小到大)單鏈表,構造一條新鏈表,包含同時出如今兩個鏈表的節點
struct LinkNode {
int value;
struct LinkNode * next;
};
struct LinkNode * int ersect( struct LinkNode * firstLink, struct LinkNode * secondLink );
這一面快兩個小時了吧,至此, WXG 掛
cpp const char * ToString(int val);
寫程序的時候,原本不容許用malloc,我用了,又讓改。改爲了全局變量,結果又指出了另外一個錯誤:
cpp printf("%s %s\n", ToString(123), ToString(456));
讓猜結果是多少,而後又引起了一段血案,反正最後也不自信,也不敢確定結果。。。
完