腾讯初试(技术面)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Michael753951/article/details/78199270

腾讯笔试因为比较久远,而且最后的代码题没有成功AC,所以已经记不太清楚。这里主要讲一下面试经历吧。

(听说鹅厂的简历关和笔试关都很松,几乎不卡人。这大概是我认为已经失败的情况下依然受到面试通知的原因吧。)

面试

鹅厂的初试其实还是比较面向学生的,可能考虑到在校生没有接触太多工程项目,一般都是简单问一下项目经历,然后开始问智力题和简单编程题。

面试之前我还是准备了挺久,看了不上网上关于腾讯面试的面经,看了很多以前的面试题,大致准备的内容如下吧。

腾讯面试题目

图片来自抱团面试小队。

然而在我面试的时候,上面问题全部没有问到。。。可能是我最后花费的时间太长,表现的不好,面试官对我兴趣不大。也有可能是不同面试官问的问题不一样(因为小队里,有人面试鹅厂的被问到了该图中某几个问题)。

项目经历

项目经历这一块,个人感觉其实还是很重要的。因为在面试官和你开始讲话之前,ta对你可以说没有一点了解,你擅长什么,你做过什么,你能做什么,你团队能力之类的怎样,这些都是需要通过你的项目经历来了解的。

因为我在以前网易实习面试中,吃过项目经历删减太多,导致最后面试官已经没问题可问的尴尬。这次面试中我将大三之后,不是很水的项目经历,比赛经历,实验室项目经历都写在了简历上。一共一页半(本来是两页,不过删掉了半页感觉太水的项目)。

到达酒店扫码签到之后,等待面试短信告知面试地点在哪(鹅厂还是挺壕的,一个面试官包了一个房间)。

上去首先递上自己的简历。面试官开始询问我的项目经历,我投的是后台开发岗位,所以讲的是大三下的时候,和3个小伙伴做的一个换课系统。我大致讲述了一下整个项目的创建目的,实现的功能(这部分我拿笔在草稿上将设备的部署,设备之间的连接以及通信方式全部画出来,以便解释说明,个人觉得这是个好习惯),以及在整个项目中的难点和个人承担的角色。

面试官一边听我讲诉,中途会偶尔插一两句话,比如某个功能是怎样实现,以及这个功能实现的时候是否有什么难点和在实现这个项目的时候担任了什么功能。不过总体不是很难。

不知道是因为面试官对我的项目兴趣不大,或者对我负责的这一块不是很了解。这一部分面试官问的比较少。

智力题

接下来是智力题。是我很不擅长的数字推理题。题目我在后来找到了原题,大致如下:

AB两男士女奇问C女士年龄,C女士将给出11个可能答案,35,36,38,42,45,46,51,55,57,61,62。

C女士将十位数告诉A,将个位数告诉B
A男士说,我不知道C女士年龄,我想B也不知道。
B男士说,原本我不知道C女士年龄,但现在知道了。
A男士说现在我也知道了

请问C女士年龄多少

题目大致如此,我思考了一会,没有头绪,于是口头向面试官表示暂时可能解不出来,然后又大致讲了一下当前我已经思考到哪,以及我当前的推理逻辑。面试官听了一会,点了一下,然后开始让我做简单的代码实现题。

这时候我开始有点紧张了,因为担心这一关是不是没有发挥好,或者是否哪里有逻辑漏洞。

简单代码题

题目确实很简单。

面试官从她的题库中挑选了两道题目,第一道题目是看代码让我描述这段代码的功能,以及生么样的输入会带来什么样的输出。感觉实在考验我们的代码阅读能力。整段代码不长,30行左右,大致功能是将一个long型十进制整数转成字符串,然后逐位取出,统计该位出现次数,如果为3就会有特定输出。就是一个简单的桶排思想,认真看懂的话不难。

第二道题是编程题,面试官让我实现一个功能函数,输入一个字符数组的头指针,让我实现一个功能函数将字符数组中的空格全部去掉。

很简单吧?然而我想复杂了。

太久没有写这种很基础的功能函数,加上有些紧张,我当时想的越来越复杂,以至于最后想出来的方法是开辟一个bool型的标志数组标识当前位是否为空格,然后重新开辟一个数组空间,将传入的字符串一个一个字符数组遍历一次,如果是空格就跳过,如果不是就取出来放进新的数组空间,最后free掉指针指向的以前的数组空间,重新指向当前开辟的新空间。

其实这是一种舍近求远的想法,这种思路直接让本来码代码就不是很快的我写了差不多十分钟才写完(感觉面试官已经等的有点不耐烦),最后实现的代码量也是很冗长,同时其实最后还是有bug。函数中new的数组空间在返回后是会被del掉了(这部分栈空间被回收掉了),这样我们操作完成的数组其实已经不存在了,原始数组也不存在了。但是当时我想法太乱,明明知道会有这种问题,但还是硬着头皮写了。

写完面试官让我分析代码的时间复杂度和空间复杂度,然后问我还有什么问题想提问的,便让我回去等通知。

回来的路上,我和朋友一起回学校的时候,才想起来,明明去空格可以很简单的实现,只需将原数组中非空格的字符向前移动,直到遍历完成,然后手动添加\0结束就行了,只是我当时想的太复杂。

void del_blank_space(char* pStr){
    char *temp = pStr;
    while(*temp){
        if(*temp == ' ') {++temp; continue;}
        *pStr++ = *temp++;
    }
    *pStr = '\0';
}

就这么简单,然而我当时脑子蒙了。鹅厂面试也就只能草草收场。

阅读更多
换一批

没有更多推荐了,返回首页