2017腾讯实习经验总结

投递公司

从2月开始总共投了:

  1. 网易游戏: 杳无音讯,目测前端位置也就几个
  2. 阿里内推(菜鸟网络): 投递两周后,无任何面试直接变为已回绝,我校本科生似乎没活过二面的
  3. 美团: 内推没选事业群的全部GG等笔试,笔试通过,因为拿了腾讯Offer鸽了面试
  4. 华为: 本来也不太想去,笔试3/3AC,之后叫做性格测评,因为拿了腾讯Offer鸽了
  5. 网易: 最脑残的公司,笔试后被刷,笔试3/3AC,选择题自我感觉不是全对也差不多,不知道什么标准
  6. 腾讯: 一周内完成2轮技术面+HR面顺利拿到Offer

从体验上来说,腾讯绝对是最好的公司:

  1. 面试过程紧凑,大多数人都是连续面试,反馈良好,相比来看,阿里经常出现20多天后继续面试或者约好时间鸽了的(据说三面是P9太忙)
  2. 没有智障性格测评,上述公司除了网易游戏和腾讯都有性格测评(华为笔试后,美团笔试同时做,其他投递后),性格测评是一个非常让人恶心,作呕,难受的一个东西
  3. 机会更多,给了大量的面试机会,包括非内推中优秀的简历也有得到面试。不符合标准也不会直接回绝。
  4. 侧重基础。阿里极度看重框架和经验(我校全军覆没),感觉在面向培训班招人。腾讯在面我的过程中基本都是基础考察(当然自我感觉实战经验和框架反而我更熟悉)

值得一提的是,一面的面试官非常的nice。人非常好,面试时态度和善,比较尊重面试者,面试前加了QQ预约时间,后来也经常麻烦他查看状态,非常感激

不管怎么说,至少比刷了我简历的阿里,网易好

概述

不同的部门侧重点必然有所不同,我面的是SNG的QQ空间部门,CSS和HTML基本没问,JavaScript语言方面也只有一点点,核心侧重在HTTP和HTTP相关(安全,跨域)

时间上,一面45分钟整,五天后,二面40分钟多一点点,二面第二天收到HR面10分钟

一面和二面之间许多问题具有重叠性,二面也相对深一些(也是我准备的更好一些),因此我用知识点而不是面试轮次来划分本文

我之前也写过一篇前端面试题总结,其中不少问题也有覆盖

浏览器

一个问题:

  1. 对浏览器兼容了解吗?

答曰不了解结束。。。后来想了想,可以从浏览器内核答起,回答CSS前缀,Polyfill,Babel这些内容。。

HTML5

HTML本身也没有太多的知识点,只问过三个问题:

  1. 你对HTML5了解多少? (二面)
  2. 知道LocalStorage吗? (二面)
  3. 用过WebSocket吗? (二面)

第一个问题基本包括了HTML5的主要学习内容,我回答了Canvas,语义化概念和标签,HTML5 API(例如History),Audio和Video支持,WebSocket。
因为忘了说LocalStorage所以有了第二个问题。掌握这些内容基本就OK了。
对于WebSocket,我直接回答没有用过,知道概念和用途就没有细问了

CSS3

这一点腾讯非常的nice,没有像其他一些公司一样纠结于API背诵,只问了一个问题:

  1. 用过CSS3吗? 实现圆角矩形和阴影怎么做? (二面)

因为自己也写了比较多的项目,这2个API基本算烙印在心了。面试前还在疯狂看垂直居中的各种奇技淫巧和优缺点对比根本没有用到。

我个人认为像Animation,盒模型,Flex布局这样的基础内容哪怕没有问,还是要掌握的。总的来说,具有一定的代码量,平常能够完成常规开发肯定是够了

JavaScript

JavaScript侧重于其应用而非语法本身,几个问题在一面二面都有出现:

  1. AJAX概念,用途,原生API(XHR对象)
  2. 由AJAX引出跨域,跨域原因,常见方案,实现细节,追问了一个具体情景我没太懂没回答上来 (一面,二面,重中之重)
  3. 什么是闭包,闭包的用途 (一面二面都问了)
  4. 改变函数作用域,bind,apply,call (一面)
  5. 事件冒泡/捕获,事件代理实现 (一面)

之前准备的各种JavaScript基础都没有用到,诸如各种基础函数(ES5各种函数,比如bind,Object.assign的实现),原型链继承这些。
关于跨域之前也只熟悉JSONP,对CORS有所了解,在一面被问倒后,专门学习了一番,二面感觉发挥比较出色。可以看我的这篇跨域详解

HTTP

HTTP和相关的各种内容绝对是腾讯的重中之重:

  1. HTTP报文格式 (二面)
  2. HTTP状态码 (一面)
  3. 缓存策略 (一面,重中之重) 与 Cache-Control (二面)
  4. 性能优化 (一面,二面)
  5. HTTPS和具体实现细节(一面,二面,重中之重)
  6. 常见的攻击和防护策略(一面,二面,我答得很水)

我之前对HTTP的理解也不是特别深刻,一面当晚购入《HTTP权威指南》,这本书非常的经典详尽,感觉在二面中发挥比较出色。我也写了一系列的HTTP权威指南笔记

关于性能优化,可以参考雅虎十四条军规,从四个方面回答:

  • 优化连接(请求)数
  • 优化带宽
  • 缓存利用
  • 页面结构

关于攻击和防护,我回答比较水,说学校的课还没有学习。。回答了CSRF,XSS,SQL注入的原理和防范措施

框架和工具

框架的相关内容主要在二面的前20分钟询问:

  1. 用过的框架(React和Vue)
  2. 对React的理解 (懵逼,这什么问题,然后就讲了各个特点,思想,VirtualDOM和数据绑定的源代码实现,总之竭力展示自己)
  3. Vue和React区别 (当时就恨没在电脑边,否则对着Vue官网的那篇文章回答就好了,按照记忆回答了一下)

工具主要是Babel和Webpack,我个人也不是特别了解其源码实现,一面回答”主要在用。。不懂”

框架这种东西还是看个人的掌握,我React和Vue都写了几千行的项目,感觉关键是要阅读,理解源代码,尝试自己去实现相关的功能,如果只是泛泛的使用可能还是一个减分项

这方面我个人写了两篇Blog:双向数据绑定JS设计模式

计算机基础

主要是网络基础和一点点算法:

  1. TCP/UDP 区别,特点等内容 (一面,二面)
  2. TCP握手 (一面,二面)
  3. HTTP和SSL的端口号 (二面)
  4. 堆排序 (二面)
  5. 判断平衡二叉树 (二面)

对于科班同学非常简单,但是在二面最后一分钟问了我判断平衡二叉树。。。我当时短路直接忘了什么叫做平衡了。。感觉对不起自己的本科学历

总结

总的来说涉猎还是非常的广,利用面试也是最快的学习方法。我在一面后3天直接读完了600页的《HTTP权威指南》。

希望通过这篇文章帮助更多的同学有针对性的学习,提高自己