您的位置:首页 > Web前端

腾讯实习面经(offer)

2017-04-27 16:35 501 查看
腾讯的实习招聘也算是告一段落了。从内推到正式实习生招聘,总结一下。看了这么多面经,也把自己的经历写一下,有需要的朋友可以参考一下。毕竟互帮互助嘛。

内推

腾讯内推的经历比较惨淡,面了三个部门,都跪在一面了。讲真,有点心塞。

1.WXG

生平第一次的电话面试交给了WXG,一上来给了18道题让做,一共给了40分钟左右,能做多少算多少。当时做了8道出来。把这些题列出来吧,供大佬们参考。

//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 )

//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 )

//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 );

//18. 判断一个单链表是否出现环,空间复杂度不能是O(N)
struct LinkNode {
struct LinkNode * next;
};
//返回 1:有环,0:无环
int iscycle( struct LinkNode * head )


40分钟后,然后把做了的题和面试官一起过一遍,看是否有错,是否可以优化等等

最后聊了一下线程池的问题。让我准确计算出一个系统中的线程池的数量设置多少个合理。(这个一脸懵逼,没做出来,要是有大佬懂的话,还请不吝赐教)

这一面快两个小时了吧,至此, WXG 挂

2.TEG

TEG的小哥哥还是比较温柔,问了特别多的STL,vector,list

map,hashtable的区别,怎么实现的,适用场景

epoll的使用

线程池的设计

项目中可以改进的地方

。。。。。时间太久,记不住了

感觉这次还不错的,但是,至此,TEG挂

3.IEG

内推里面最不温柔的就是IEG了

项目中mysql是怎么用的

1.算法题。一个数组中的数都出现两次,只有一个出现一次,找出来

2.算法题。一个数组中的数都出现三次,只有一个出现一次,找出来

3.算法题。假设有一个随机函数可以随机生成[0,7900],然后现在有3000人,设计一个函数从3000人中等概率选取一个人

至此,第二个和第三个算法题都不太符合小哥哥的预期,IEG挂

正式校招

笔试

腾讯笔试选择题都是不定项,而且不能倒回。中间手一抖,多点了几下,结果直接跳过1-2两个题,至此,笔试崩

一面

原以为笔试过不了,都已经准备去霸面了。结果收到了面试通知

写程序。实现int 转 const char* ,函数原型如下:

const char * ToString(int val);


写程序的时候,本来不允许用malloc,我用了,又让改。改成了全局变量,结果又指出了另一个错误:

printf("%s %s\n", ToString(123), ToString(456));

让猜结果是多少,然后又引发了一段血案,反正最后也不自信,也不敢肯定结果。。。

聊了一下项目



二面

二面一共15分钟不到,全程和面试官闲聊,没有一个技术问题。

自我介绍

兴趣爱好

能不能实习

。。。。忘了

最后,没忍住,问了一下,为什么不问技术问题,是不是挂了。答曰:前面已经有同事考验过你的技术了。。



hr面

hr面半个小时

自我介绍

科研情况

实验室情况

家庭情况

未来规划

有没有什么问题

没了

总结

今天拿到TEG实习offer

腾讯是个好公司,我很想去,但是老板不让。

还是有很多不足,校招再战!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐