Home >> Zed’s Blog
腾讯WXG部门 前端一面
整体流程:大三寒假的1月下旬,通过腾讯内推群投递了腾子WXG部门的全栈开发实习岗,在2月11号晚上接到了一面通知,并在2月12号晚上9点进行了我人生中第一次公司面试,然后在第二天晚上收到了拒信。
有个很后悔的点,不该在填写简历的时候把意向部门给选了,因为后来发现我面的wxg部门不怎么缺人,而且一旦选了意向部门后CV会被锁定,如果面试没过的话CV会被所有部门面试官传阅(当然我说不上这是好还是不好,因为我看论坛也有人说在字节面试挂了又被其他部门捞起来的)
整个过程中可能唯一有安慰的一点是,我可能是面试时间最长的(整个过程从9点持续到接近11点),并且至少腾子还给了我这样一个没有实习经历的人一个面试的机会。
先描述一下面试的过程:
9点面试开始的时候,面试官先打了个简单的招呼,他给我的第一印象就是nerd,跟我猜想的一样是那种在大厂对应岗位上已经工作了多年的老工程师。上来直接贴了两个算法题在屏幕上,让我先做个大概半个多小时然后待会儿讲讲思路。
第一题:“二叉树从右向左的投影”,给定一个二叉树的输入,输出从右向左看到的所有节点的集合。思路最直接的就是BFS遍历一遍,输出每一层的最后一个节点。
第二题:“合并区间”,区间的概念是有一个start和一个end,输入一个区间合集,打印出合并后的集合结果,例如[1,3] [2,4]两个区间的合并结果是[1,4],没有任何重叠的集合就直接添加到结果集合里。这个题比第一题更简单,先把所有区间按照start排序(这里我其实慌了一下,我不知道能不能让我用sort(a,b->a.start-b.start),我还在想不会要让我手写merge吧)用两个指针,一个current一个next,每一轮都比较current的end和next的start有没有重合,如果有再比较谁的end收尾得更远,然后new一个新的区间作为合并后的结果。如果没有重合说明当前current是独立的区间就直接添加进结果集里,然后移动指针。
两个手撕都是用java写的,而且两个题都用static class写了一个大模拟,整个过程比我想象中顺利得多,说真的并没有太难,我面试之前最怕的就是手撕算法了。有一点让我比较震惊的是腾子的ide居然自带copilot类似的补全,虽然不会直接补全思路,但是最基本的单行补全是可以用的很舒服的。
9点40面试官回来之后,也没问我的思路是什么,就直接开始看我的代码,然后代入到for循环里,他居然就自己开始脑算每一步的结果对不对,也没问我思路是什么,最后他自己走完一遍流程后发现没问题就直接不问了。然后转头问我另一个问题,你这里BFS为什么要用queue(我tm用BFS不用queue用什么),我就跟他解释这里的逻辑。他好像有点吃惊我为什么没有按照他的思路来,然后问我DFS能不能做,直接给我问懵了。因为在我的观念里,这个题第一印象就是每一层的最后一个节点就是结果,为什么要用DFS。可能是先入为主的原因,我确实没想到怎么用DFS,然后他说你如果维护一个额外的深度属性呢(这里我就有点不满了,好家伙原来还要维护额外的东西,那为什么不用BFS呢,而且你这也没提示说维护个额外的什么属性再用DFS啊)总之这里我心态就有点小崩,当他说来看第二题的时候我还反问了一句那如果要额外维护一个深度的属性的话,是不是就多了个额外的内存开销。这里其实不是我真的想问,只是为了让他觉得我有在思考,其次我真的有点不舒服。
第二个题直接看完代码就不问了,也没问我思路,然后就直接开始问我简历。其实走到这一步我很激动的
未完待续…(被hr部门捞了,先准备面试去了)
腾讯hr部门 后台一面
从上一次被wxg拒了后大概过了一个周被hr部门捞了(从牛客上得知这个部门最近好像一直在捞人),面试时间在2月18号,开学后的周二。后来去了解了一下在腾子就是不停的打复活赛,会有不同的部门给你发面试邀请。
面试过程:面试官是一个看着很年轻的工程师,可能看上去大概只刚工作了4~5年,给人的气场没有第一次面的面试官强烈,所以整体面试气氛比第一次轻松得多。我做完自我介绍后就直白的问面试官腾讯的面试邀请机制了。
然后开始拷打八股部分:估计是参考了第一次面试的面试评价,直接问了我第一次面试没回答上来的问题
hashmap的底层原理
java的集合类有什么
stack和queue有什么区别
进程和线程的区别(我直接说OS还没学,后面就没再问OS相关的问题了)
请说一种高并发的后端解决方案(完全不了解,我硬着头皮说我了解一下threadlocal)
那你讲一下threadlocal的原理和底层数据结构
string、stringbuilder、stringbuffer的区别
redis和mysql的区别
你知道innoDB吗(不知道,就没深入问了)
然后剩下半个小时就都在做题了:很简单的一个DP,一个m*n的数字矩阵,从左上角走到右下角,找出数字和最小的路径。直接dp[i] [j] = min(从上面来,从左边来)
面完之后就直接问面评如何了,面试官比第一次面我的面试官面向友善得多,很多问题都没有为难我,全程也没有拷打项目。还跟我说“我对你整体还是比较认可的,你注意关注一下后续的面试流程吧”。
面完我都觉得大概率会有二面了,结果两天后依旧是感谢信,至此对鹅厂彻底祛魅。从我个人角度出发,虽然这次面试很多八股都是提前背过的,回答上来了大概80%吧,算法也做的很舒畅,所以这能被挂一面我只能理解为他们觉得我没有redis、innoDB开发经验,或者说我没有过实习经历,以及他们不用flask吧。
后续在正式批开投的时候,把腾讯和字节同时投了,字节这边3面都面完了,腾讯这边pcg才来前端的面试邀请。字节offer下来之后就直接没接了。(我个人受不了焦虑,过去一个月的焦虑我实在经受不住了,哪怕是明知道只是积累经验的面试我也不想再接了)也许未来和鹅厂可能还会有缘份吧,作为我的处女面开始,两次失败给我的快速成长我还是心怀感激的,以前完全没有为求职做过任何准备,自己也不够强大,或许等我成长的足够强大后再来试试鹅厂吧。