43

嗯,春招两次腾讯面试都挂二面了,分享下我失败+傻傻的面试经历

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzIzMTE1ODkyNQ%3D%3D&%3Bmid=2649411725&%3Bidx=1&%3Bsn=16d514e91aa0d445b8def7b487607ecb&%3Butm_source=tuicool&%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

今天给大家转载一篇朋友的文章,朋友是一位非常优秀的公众号作者,也是一名在校生。文章讲述了他的春招面试经历,很多东西值得大家学习。

废话不多说,下面开始正文。(互联网侦察做了一些注释)

ZnMfei2.jpg!web

这个春招估计也要介绍了吧,自己投的公司也不多吧,投简历的时候,如果你提前批和正常网申都投的话,可能会获得两次笔试/面试的机会,我投了两次腾讯,不过,两次都在二面挂了,特别是第二次二面,我真的决定自己太他妈傻了。作为一个新人,谈谈我面试过程中犯过的一些错吧,或许对你也有点收获。

(互联网侦察注:作者的简历也给我看过,确实是上等简历,在校生能有这样的简历很不容易,至少简历竞争力很强。)

提前批笔试

腾讯提前批的面试应该是一个月前就开始的,我第一个投的公司就是腾讯了,人生的第一次笔试和面试也献给了腾讯。先说下笔试吧,笔试是 5 道编程题,个人觉得,腾讯的笔试题比较简单吧,也就是说,获得腾讯的面试机会应该算是不难的吧,5 道我好像是做出了 3道 + 一道90%测试用例通过 + 一道也是百分之几十来着的,忘了。

最后的结论就是,个人感觉腾讯笔试不怎么难,投了之后获得面试的机会应该非常大,我的简历背景是没有任何亮点的,没有啥比赛,没拿过啥奖,非211/985,普普通通。这里建议秋招有兴趣的一定要投一下,万一面试也过了呢,好像我听说腾讯技术研发是 2轮技术 + 一轮HR面,万一2轮技术面过了拿offer机会还是挺大。

(互联网侦察注:大佬谦虚了,简历从项目到技能都是比较有竞争力的。)

当然,我听说前端的 HR 面是综合面,听说比比前面的两轮还难还难过。

提前批一面

一面是视频面,人生第一次面试,可以说我是很紧张的,一面我完全就是个小白啥套路也不懂,面试官问啥我答啥,完全不会引导,面试完后我感觉自己是真的傻,主要是问了一下问题:

1、浏览器输入一个地址回车之后都发生了啥?

这个可以说是非常高频的面试题了,我觉得自己这方面还可以,压抑自己的紧张,好好详细秀一波,然而,由于我事先并没有去准备过这个问题,而这个问题又涉及到很多步骤,所以我在逻辑上讲非非常非常不好,卡住了好几下,最后不管三七二十一,就说关键词了:有DNS转换啊,ip网络寻址啊,三次挥手啊,可能还有NAT地址转换啊,还有ARP啊。

可能平时看我文章的人会发现,我是喜欢把这些技术一点点推出来,有逻辑着连起来的,这样说出来会特别舒服,不过我这次面试的时候,连不起来的,归根到底就是, 没有准备 ,头脑觉得自己都懂,但是不意味着讲的出来,所以我在这里是建议各位,对于那些高频的面试题,自己最后尝试着口头去表述一下,或者文字书写一下,要是你来回答,你会怎么说?

2、TCP 和 UTP 有什么区别?

我在回答这道题的时候,也是非常简单着回答他们的区别,例如一个面向连接一个非面向连接,一个可靠一个非可靠,非常简单就答完的。

不过这道题是一个高频题目,按上面的那个回答,就算回答出来,我觉得也是一点优势都没有。因为这些简单的区别,99%的人都懂,我觉得我们应该再往深入回答,例如TCP有流量控制,拥塞控制,面向流以及基于这些区别,他们的使用场景等等。

不过我并没有回答,不是我不知道,而是我想假装不说,等着他来问,因为我听说面试官都会一直往深问到你不会为止,然而现实是他并没有问,换话题了。感觉自己错过了一些表现的机会。

这里我想说的就是:如果你知道,你可以多说一点,千万别像我这么傻,等着别人来问。

(互联网侦察注:面试官不追问了,心理大概有这么几种情况。1、已经达到要求了。2、就是一个基础题,不是重点,没必要深问了。不过确实如作者所说,自己有过深入研究,那么该表现还是得表现,这样你才能和别人不一样。)

3、写个快速排序

和算法有关的,我觉得自己还好,写的虽然不是特别快,但感觉自己写的还好,无论是从代码的排版(因为这个一般都是在笔记本写的,不可能给你IDE),以及代码的简便程度,我觉得都不错,这里我想说的就是,自己平时写代码的时候,一定要注意排版,别老是依靠IDE给你一键排版。

虽然我已经写出来了,不过他之后让我说下快速排序的步骤,我老实说了,不过我觉得,这些题都太简单,如果面试官的很基础,你也答的很基础,我觉得没啥优势,对于快速排序,我本来想补充的,例如对 中轴 的选择问题,与其他排序算法的一些比较,应用场景等,不过,我是想着等他来问我……

按照我这样写文章的话,估计得上万字,我下面简便说下就行了。如果你们感兴趣我这么啰嗦的话,下次我再来吐槽说说我回答的不够好的地方。

4、一条SQL执行的很慢的原因?(之前写过文章,建议看看)

5、MySQL有哪些存储引擎以及他们之间的区别(我其他引擎忘了名字叫啥)

6、如何查看SQL语句的执行状态,知道这条命令吗?(我当时MySQL其实几乎没学,很多都不知道)

7、qq用的是tcp还是udp(两种都有涉及)

8、说说jvm内存模型(其实并没有JVM内存模型,只有Java内存模型以及JVM内存结构,你要问清楚是哪个再答,我当时是答了Java内存模型,面试官一面懵逼)

9、JVM内存结构中有栈堆等,为啥要用栈这种数据结构?(主要是操作简便,快速)

10、说说垃圾回收?(老年代,新生代,永生代的区别等,各自使用的回收算法,新生代又分eden和survivor区等)

11、说说aop和ioc

12、大致看过哪些书?有逛技术论坛的习惯吗?说几个你常见的技术博客平台?有去逛过国外的技术博客吗?看的懂文档吗?

总体上一面比较简单,面试官没有深入问,不过问的很广,这里问一些,那里问一下。感觉自己答的还好,也顺利过了。第一次面试收获还是挺大。

1、对于懂的一定要多说,可以延伸,只要面试官不打断你的回答。

2、对于高频面试题,一定要自己模拟说一下,而且这些题一般不难,一定要多延伸,不然没啥优势。

3、感觉以后面试不那么紧张了,也就这么回事。

提前提二面

几天后收到复试通知,二面是电话面,二面操作系统和Linux问的有点多,我二面感觉自己就挂在Linux上,我Linux不大懂,被问了好几个个基础的问题都不懂,自己也是醉了,感觉自己应该和面试官说一下我Linux还没学:joy_cat:。操作系统很多细节也忘了,说说二面的面试题吧。

1、说下四次挥手,什么时候会出现time_wait状态?(我扯了一下,面试结束后,发现自己弄错了,真想给自己一巴掌,主要是,其实我对三次握手和四次挥手没去准备过,虽然看过挺多文章,但是具体的没记住,凉凉)

2、红黑树知道吗?说说,为啥有了平衡树还需要红黑树?(平衡树太严格,插入很容易打破平衡,经常需要调整,而红黑树是一种折中方案……)

3、红黑树是如何保证查找效率不会太低下的?(我后面再写一篇关于红黑树,B+树,平衡树这些的文章吧,现在先给出这些遇到过的面试题)

4、红黑树在调整的时候,不是会用到左旋右旋吗?说说会不会出现无限左旋右旋的情况,如果不会,那最多旋转几次?

(互联网侦察注:红黑树还是比较典型的题目,面试一般不会让你手写红黑树了,常见的考察方式就是这种问原理,考察候选人是否真正理解。)

5、为什么索引能加快查找效率?

6、说说B+树是怎么分裂、合并的,知道具体步骤逻辑吗?

7、你项目用到redis,知道跳跃表吗?说说他是怎么实现的,查找时间复杂度?

数据结构这部分我觉得自己答的还行,几乎都答出来的,不过下面的Linux和操作系统有点惨,怪自己没准备,不过面试就是一个查漏补缺的过程吧。

8、Linux的proc目录有啥用?(忘了,,,,)

9、怎么查看端口的状态?(有条啥命令来着的,忘了)

10、怎么查看某个进程的状态?(也忘了,呵呵,,,,,)

我简历上是写着 熟悉Linux常用命令 ,然而一个也没答出来,尴尬啊,其实我会用的是那些 ls, cp, mkdir, tar等常用命令,对于线程、网络相关的都不会,感觉危险了,这么基础的问题都不会。

(互联网侦察注:这几个题有点可惜了。)

11、说说什么是进程,进程包括哪些数据?进程切换的过程是怎么样的?

12、如果想要让多个线程执行到某个点,都达到之后再继续执行,可以用java的那些类来实现?(CountDownLatch和CyclicBarrier这两个)

13、什么是反射?反射有啥用?

14、说说垃圾回收,jvm是如何知道这个对象可以回收的?计数法有啥问题?如果我们想要指定某种垃圾回收算法,该怎么设置?

15说说aop(这个问的刁难了,我该说的都说),他说,那我也可以通过自己配置文件来实现这种切面啊,为啥就要用AOP呢?(他问的问题就相当于,我用servlet也能使用实现一个网站啊,为啥要用spring这些框架呢?我当时应该要吹一波spring中AOP带来的好处的,不过我没说,感觉自己应该吹一下的)

(互联网侦察注:可能是要吹一波正交化、业务代码无侵入,或者吹一波动态代理。T_T)

15、接着是问了我那个 高并发秒杀系统的项目 ,说了里面的线程安全问题,然后我这个项目早忘光了,自己也没准备,代码我不是自己敲的,直接看视频的。自己没做过什么项目,就充当了,结果面试官问了一下线程的问题,我一直没get到点,搞的自己也好懵,最后才知道他说的是啥,不过项目这块答的也不好,主要自己也没动手弄过,又是去年快速看视频学的。

总体上,二面除了Linux答的非常非常不好,还有四次挥手说错了,线程包括哪些数据说的也不全之外,以及项目感觉有点被认为不是我做的之后,其它感觉还好。不过。一个多星期后,结果出来,挂了。

不过我也不意外,知道自己有很多需要补的,面试有时运气不好,可能连续问到好几个不好的,估计就得挂了,不过这没方法,最好的做法就是面试过后把自己不足的补上来。

常规网申一面

常规网申的笔试题中是 20道选择题+3道编程题 ,过几天就收到面试通知了,有了前面两次之后的面试经验之后,也了解到腾讯是特别喜欢问 操作系统+计算机网络+Linux 的,于是我把这方面的高频面试题都好好准备了,Linux 进程等相关都准备了,操作系统也大致准备了,下面说说这次涉及到的面试题。

1、说说网络建立连接之后是怎么关闭的(其实就是四次挥手,我详细说了,之前写过文章)。如果出现大量time_wait 状态的连接是怎么回事?(我说了第四次挥手出现了丢包、超时等),假如不会出现丢包、超时等,网络非常流畅呢?(说了短连接导致的)那怎么解决?(我说了限制最大连接,用队列来缓冲),问我还有其他方法吗?(我不大知道,好像面试官不大满意我的回答。不过最好的做法应该是修改 time_wait 等待的最大之间,把时间改小一点)。

2、说说IO阻塞与非阻塞是什么?各自有啥好处?知道多路复用吗?了解过 select 吗?说说他与 epoll 的区别。

我知道的也不是很深入,就常规答法,他问啥就答啥。这里我要说一下,我觉得很多人可能 混淆了阻塞、非阻塞与异步、同步的概念 。我实话,我觉得自己已经理解了,结果我看了好几篇文章,发现自己反而不懂了,懵了,总觉得缺了点什么影响我对阻塞非阻塞与异步同步的理解,说实话,我看了大概有10篇文章,有80%我觉得都没有说清楚阻塞非阻塞与异步同步的本质区别。这会影响你对同步阻塞,同步非阻塞,异步阻塞,异步非阻塞的理解。有时间我再来写一篇文章说说他们的区别,相信看了你就一定懂了。

3、知道乐观锁吗?说说他们适合应用的情景。

4、说说自适应锁,与其他锁相比,他的优缺点,什么情况下你觉得可以用自适应锁?(之前写过几种锁的文章,不懂的建议看)

5、你平时开发是在Linux上开发的吗?(我靠,Linux上开发??那不是得对Linux上很熟悉?我虽然准备了Linux面试相关,可是这Linux上开发压根没体验过啊,我马上怂了,马上说没有,并且还加了我对Linux不熟,这门课刚学没几天。之后他就不问了Linux了,然后接下来我就扎心了)

6、那你平时就是在windows下开发了,那如果你平时项目要上线,这个项目的性能突然很差,你是怎么定位问题的?(我靠,在下从来没有上线过项目,连用心写过项目都没有,这下完,我迟疑了一会),他补充说,例如你可以通过观察你电脑的 cup, 内存,IO 的指标 来进行行定位,可以分析下吗?(可以打开任务管理器来查看cup等的运行情况,然后…..其实我没有上线过项目,也没有这样的经历),他说没事,假如遇到这种情况你会怎么分析?(我下面说一下我是怎么扯的)

心想,扎心了,其实我不大知道究竟要分析啥,好吧不管三七二十一了,然后我开始扯了:

1、如果cup一直很高而其他地方内存,IO很低的话,那很有可能项目里面有某些东西在疯狂运行,但却没啥用,很有可能就是自己设计了乐观锁,但竞争的线程太多,导致一直做无用功。

2、如果磁盘操作很高,但cup很低,这是意味着项目一直在做IO操作,很有可能是SQL语句写的不好,导致扫描了大量的磁盘,然后我就针对SQL语句的问题开始扯了,例如没有用上索引啊,选错索引啊,扯了一大堆,哈哈。(心想,舒服,刚好写过sql语句执行的很慢的原因有哪些)。

(互联网侦察注:这一波表现还是很不错的,能够在面试官引导下,说出一些自己的想法和思考)

7、说说进程与线程的区别?进程有哪些通信方式,(我说了共享内存,消息队列,管道,信号量,套接字,信号驱动),他问还有吗?(我说其他的不知道了),描述下这些具体的通信方式(我有些具体的给忘了,大致描述了几个)

8、说说快速排序的思想,删除单链表倒数第二个节点,你会怎么做?

9、了解MySQL事务吗?说说ACID是啥(我靠,我对事务的隔离理解还强,研究过隔离是如何实现的,然而,,,我突然短路,ACID的D忘了啥,就像你高中那会对一首古诗背的很熟,然后突然就忘了哪句,心里有点扎心),那你具体说说ACID是啥(原子性是,,,隔离性是,,,,一致性?????,我靠,我觉得自己对这四大特性很理解,感觉看名字就知道是啥了,然后说到一致性的时候,我自己的心中产生了疑问,感觉自己并没有真正意义上理解了一致性,然后我没说出来)

心中那个苦,一致性都没说出来,其实我是可以说出来的,但是我总觉得缺了点什么, 就像你看了几篇文章觉得自己懂了,结果让你在看几篇文章,你感觉自己有点醒悟了,然后突然发现自己并没有真正意义上的懂 ,我查了好多篇文章,呵呵,千篇一律,都不能解答我的疑惑,说实话,别觉得自己懂了,其实你根本就没有懂,最后是懵逼了好久,才觉得自己应该是懂了,有时间也要写一篇事务的四大特性的文章。

说实话,网上的很多文章,真的是千篇一律,当你产生了疑惑,很难找到解答,因为你会发现,这几篇说的都是一样的,那个你感觉 特别重要的疑惑 都没有说到。好吧,不吐槽了,等下要被大佬门怼我写的文章了。

一面大致说了这么多,有些忘了。比起提前批一面,我觉得自己在表述上好多了,也会扯了,这里我想跟大家说的就是,问题就那些,一定要搞懂,延伸,要理解,该背的要背,例如进程有哪些通信方式。如果要面试腾讯的时候,计算机网络、操作系统,Linux这些底层的,要学好,尽管你是面试 java 岗位的,可能他一个 Java 的问题都不问的。

(互联网侦察注:哈哈哈,校招面试问基础问得特别多,什么操作系统、计算机原理、网络、数据库确实要准备准备,当然还有数据结构和算法)

想杀了自己的二面

二面我应该就是个傻逼吧,自己给自己挖坑了,最近这些题一直在刷题,复习基础,对于数据结构,算法题,Java,操作系统什么的,自己也想看看有哪些不足,然后他一开始就叫我介绍项目。

1、说说你做的项目。

其实这期间我为了应付以后的面试弄过做过一个项目,不过还没弄好。然后我之前不是说了自己有个很水的高并发秒杀系统项目吗?我自己也没啥项目经验,然后我觉得 高并发 也是很牛逼的样子,就打算用它了,简历上也写了。不过这个项目我自己没实操过,看视频的,很短,几个小时而已,用到了redis等,不过我已经准备了很多redis相关的知识了,怎么优化的也准备好了。

现实是,呵呵,我被怼的体无完肤。

优化之一就是通过 减少事务持有锁的时间 来优化的,例如我们秒杀一个物品的话,如果减库存和插入订单两个操作都成功的话,代表秒杀成功,这两个操作会在一个事务里完成。问题来了,是先减库存呢?还是先插入订单呢?

我说了先插入订单在减库存能够减少事务锁的持有时间,然后我就被面试官怼死了,如下:

面试官:你觉得你这个优化有用吗?

我:有啊,可以减少锁的持有时间(确实可以减少锁的持有时间)

面试官:那你说说提高了多少并发量?

我:这个,,没测试过(我是看视频的,自己也没有这样的测试工具,有点尴尬,连测试过都没有??)

面试官:那你说说这条事务执行需要多少时间

我:我,,好像忘了具体数据,大概是0.00几秒吧。

面试官:你自己都说0.00几秒了,这么短时间,你觉得你的这个优化,用处大吗?有数据来支撑下吗?

我:,,,,,(真的自己给自己挖坑了,早知道随便介绍下就好了,不主动说自己的优化了过程了,毕竟自己没实操过)

面试官:你这个系统能扛多少并发量?

我:…没测试过(我觉得,面试官觉得这个项目是假的了,可能觉得我是从网上随便找的,然后来应付面试的,我觉得自己凉了, 欺骗 可是非常严重的)。

面试官:那你说说,完成一条请求用了多少时间(测试最大的并发量可能需要相应的工具,他可能为了再次确认我的真伪,故意是一条请求的?这样就不需要工具了)

我:…..没测试过(好吧,我的心已凉)

(互联网侦察注:这个面试官追得比较狠,不过如果你写了高并发、大数据啊啥的,一定要有数据支撑。高并发到底多高并发?大数据到底多大数据?)

面试官:好吧,就说到这里,你用过lowJS吗?

我:啊??lowJS,什么鬼东西?而且他的声音有点小,我再次确认,是指lowJS吗?他说是,我说没听说过(后来才知道,他说的是Node.js,,,,,,麻痹,,,)。

(互联网侦察注:这个就比较坑了,可能心态不是之前的心态了)

面试官:你还有啥问题要问的?

呵呵,,,已经凉了,这次面试真的是自己给自己挖坑,面试官肯定是知道我项目是伪造的,这是非常严重的事情,然后这个面试大概是持续了10几分钟,其他的面试官的也没问了。想找给人吐槽下自己。

然后,明天就查到挂的信息了,之前二面是一个星期多才查到挂了,这次是十二个小时之后就收到挂了,我也知道10000%挂的了。此刻需要一波安慰!!

(互联网侦察注:没事,腾讯不要你,欢迎来阿里~~)

总结

总结就是一首凉凉送给自己,还有就是有一些建议,当然,这也是我自己给自己的建义。

1、高频面试题,别停留于表面,大家都懂,说的很表面没啥优势。

2、别以为自己懂了,如果可以,最好自己尝试描述一下,你可能会描述的很没有逻辑。

3、好好准备一个项目吧,一定要自己脚踏实地做一下, 别像我,被怼的体无完肤。

4、框架真的问的很少,好好打基础,数据结构与算法,计算机网络,操作系统,Linux 进程等相关的命令。

5、面试的第一关是笔试,一般都是编程题,建议要刷刷题,不然面试的机会都没有。

先写到这里了,后面会写一下面试相关的题,建议最好看,虽然你看过相关文章了,但看我的,可能你也能够有新的收获!还有就是祝各位大佬面试顺序,不好的运气我来帮你们包揽就行了(留下了委屈的眼泪)

(互联网侦察注:欢迎扫下方二维码关注原作者公众号)

3qARRf3.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK