Xpisme's Blog

腾讯面试

第一次大公司面试

2016年11月15号,下午4点多,在公司和往常一样写着代码。瞟了一眼手机,指示灯亮了。
好奇心驱使着我打开手机。心里诅咒着:谁呀?都过了双十一了,还打广告。一看有个未读短信,扫了一眼短信内容:“郭新鹏,您好。很高兴通知您,请于2016.11.16下午15:00到知春路49号希格玛大厦3F进行面试(腾讯北京公司)……”。
看完之后没感觉,只是觉得空荡荡的。只是觉得我离BAT这样的公司还很遥远。以至于面了腾讯回来后,大脑皮层还没有觉察到发生了什么。我认真地反复地读着短信,才觉得这是真的,明天我要去面腾讯。心情好激动,思绪都跑到腾讯面试去了,没有空余的思绪去写代码了。想着先好好忙工作,明天请一天假,上午好好准备,下午去面试,穿什么衣服我都想好了。
2016年11月16日,早晨8:00起床,没有去上班,因为今天下午3:00面试腾讯。简单收拾了一下,开始做面试的准备。看了些在leetcode上刷过的题,背了一道单链表翻转的题。做了一些网上有关腾讯的面试题。找了一些容易考的笔试题,比如:端口号,tcp3次握手,4次握手,http状态码等等。
时间紧迫,只有一个上午。想起昨天晚上读了一篇有关面试腾讯的文章,文章中讲到需要自我介绍,也描绘了自我介绍的重要性。我开始急匆匆的整理自我介绍的思路,准备一下思路,对着镜子练习了15分钟。
宝贵的上午就这么匆匆的溜走了。我住在六里桥,去知春路面试,现在1点整,坐地铁10号线大概50分钟左右就到了,3点才开始面试。时间充裕,抱着忐忑的心情从家里出发了,先去附近的复印店打印了两份简历,两份简历4页,4块钱,心情有点小波澜。
到知春路才1:55,还有一个小时才能面试呢,这去哪?就绕着腾讯大夏走了一圈,看了下时间,2:05。时间怎么过的这么慢呢,我又走了一圈。手心里都是汗,这么长时间也不能老紧张着,于是一咬牙,就给面试官打个电话,询问能不能现在面试。和面试官打通电话说:我在你们公司楼下,现在可以去面试吗? 面试官说:可以!
我到了三层,做了登记,领了个牌,前台解释说要让面试官来接。没有办法只能再给面试官打个电话,不一会儿,面试官来了。“咱们约的3点吧!”,我说:“是的,我在楼下转了好长时间了”。跟着面试官,到了一个专门面试的大厅,让我稍等一下,说要去准备一下。等了大概5分钟左右吧,面试官拿着我的简历来了。简历应该是面试官刚打印出来的。我看到面试官拿着的简历不太清晰,我递给面试官了一份清晰的简历。

面试官看着我的简历。接下来的时间就开始面我了。

面试官:你对腾讯的了解有多少?
我:qq和微信覆盖面比较广,游戏也是腾讯的一大产业,但是我不玩游戏。BAT是中国的三大互联网企业,我觉得每个程序员都想进google,facebook。在国内的话,当然都想进BAT。
面试官:我简单的介绍一下我的部门。我们是……
面试官:你做一下自我介绍吧。
我:12年入学,16年毕业。大二暑假开始实习,边上学边实习,当时的工资是1500。
面试官:你做的这个项目是你自己完成的吗?
我:是,还有一个后端就是简单的指点我一下。
面试官:那你在实习的公司学到了什么?
我:成长。当一件事情压着你的时候,就是最难的时候,也是你成长最快的时候。还有就是解决问题的能力。
面试官:接着说吧!
我:到了大三,觉得学的东西还是不够,于是又回到学校学习memcached、redis、mongo等
面试官:你觉得什么地方学的东西不扎实。
我:数据库学的不太够。在学校继续学习了段时间,时间很快,就要升大四了。因为学校大四的课程不多,所以就来北京了。当时比较着急落脚,就在北京xx公司工作了。当时做了许多相关微信的开发。后来偶然间一个社区让我给他们做一套课程,于是就是他们的认证讲师。
面试官:为什么你在北京xx公司只干了三个月?
我:是一家外包公司,只是简单的复制粘贴,没有成长。然后就去了北京yy公司,在这里,因为去的时候正好赶上项目启动。
面试官:你在这里是项目组长,那你怎么当上的项目组长的?
我:因为有的员工离职等等,我接触的这个项目对代码都很熟悉,所以新入职的员工都是我来带着他们。
面试官:你接触过的数据量是什么级别?
我:我犹豫了好长时间,心里没有底气的说道百万级。
面试官:我是前端的,需要招聘后端,希望带着前端去做,希望后端有一个带头的作用,类似于组长。
我: 我学过前端,我在现在这个公司也写页面,写交互等等。
面试官:拿着笔对我的简历,画了一块,用html简单的写一下。
我: 大概写了一下,不过在纸上写代码确实不太好看,并且潦草。
面试官:看不懂。
我:我直接给您讲吧,于是就简单的说了说。
面试官:之后讲让技术面你一下吧,在那稍等一会儿。

等了一会儿,面试官带我去四楼去面试。面试官和技术面试官简单的说了几句。

技术面试官就来了,就开始面试了。
技术面试官:你是郭新鹏是吧?
我:是的,您好!
技术面试官:接下来就开始面试了!你说说innodb和myisam引擎的区别?
我:myisam的锁的力度比较大,而innodb锁的力度比较小,innodb引擎是主流的数据库引擎。myisam insert快 select慢
技术面试官:myisam select为什么慢
我:两者用的索引不一样,具体我也不知道。
技术面试官:你读过ThinkPHP源码,那你讲讲ORM是怎么实现的。
我:其实现的核心是利用php的魔术方法。还有就是为什么能够 M(‘user’)->select()->field()->where()->limit();
因为他们返回的是这个对象。
技术面试官:讲一下一致性哈希
我:不知道直接讲,还是从取模算法讲起。想了想还是从取模算法讲起。取模算法边列举,边画图,讲完了取模算法,还给面试官解释了一下为什么宕机之后命中率会是1/n。刚开始讲一致性哈希……
技术面试官:你知道这个,我就不问你了。一致性哈希其实是为了更好地扩容。那你讲讲工作中遇到的瓶颈。
我:搜索like匹配关键字,使用的sphinx做全文索引,自己搭建的sphinx,用的coreseek做的中文分词。
技术面试官:在纸上画了一个二叉树,说你用广度优先遍历一下所有的数,用程序写出来。

1
2
3
1
2 3
4 5 6 7

我:

1
2
3
4
5
6
7
function getList(head)
{
if (!head.left && !head.right) {
return head.val;
}
return getList(head.left) + getList(head.right);
}

技术面试官:你这个是深度优先吧,你在想想。
我:这个就是广度优先
技术面试官:你在写出一个深度优先
我:不会了
技术面试官:你在工作中还用到那些?
我:缓存,缓存DB的数据,缓存打包好的数据。通过分库来区别,有对应的过期时间。缓存有了但是为了保持数据一致性,这又是个问题。
技术面试官:你是怎么解决的?
我:当数据更新了,就把缓存中对应的key给删除。这样数据取不到,就会去数据库中去取。
技术面试官:数据库是怎么个情况?
我:一主一丛。
技术面试官:那缓存是怎么读的?读主库还是从库?
我:读的是从库。
技术面试官:那主从有延迟,怎么解决?
我:不知道。
技术面试官:配置nginx使静态文件到另一个目录。
我:

1
2
3
location ~ (.css|.js) {
root /data/www/static;
}

技术面试馆:php是怎么配置的
我:通常这个是放在一个文件里,其他配置去引用。

1
2
3
location ~ *.php {
fastcgi_pass: 9000;
}

等等就是这个意思。
技术面试官:我就面到你这,在我这里,你是通过了,当然决定要不要你,还是刚才的领导说的算。
我:好的。

tips:面试一定要带简历(简历你都不带,那你是干嘛来了?)

不会的:
0:回答问题不要犹豫(回答数量是什么级别)
1:二叉树广度优先遍历,深度优先遍历
2: 主从延迟怎么解决
3:ORM的原理
4:innodb和myisam的区别

xpisme wechat
微信号