前言
2018 年 1 月 18 日,突然接到一个来自深圳的电话,对方说从拉勾网上看到我投递腾讯 SNG 部门的 IMWEB 团队前端,简单询问了一下我的具体情况,包括前端的就职年限,过去的工作经历。其中有一点比较有意思的是,对方问我为什么 2016 年 7 月毕业直到 2017 年 2 月入职中国 XX 网,这之间的简历是空缺的?
我回答他说因为刚毕业没有太好的就业选择和机会,错过了很多校招,所以在毕业的时候去一个艺术培训学校当了半年的吉他老师,因为觉得和前端的职业经历没有关系,因此没有把这段经历写在简历上。对方说,我觉得你应该把这段经历也写在简历上,我说好的谢谢。
接着问了他招聘的是什么职位,对方说是前端工程师,我说主要负责什么工作?他说主要负责腾讯课堂的一些前端工作,我跟对方说,我目前还在老家,可能无法及时的去深圳那边面试,问了他可不可以远程面试,遂对方跟我说,可以采用电话面试,并且约定了电话一面的时间,2018 年 1 月 23 日。
面试的过程及结果:
从接到电话直到第一次面试的这段时间,我在网上大量的检索了关于腾讯电面的经验,并且深入的针对一些常用的考点,进行梳理和总结,例如:闭包、原型、作用域链、Ajax、http 协议、盒模型、兼容问题、xss/csrf 攻击、浏览器渲染(重绘重排)等。
在 1 月 23 日的当天,5 点多回家,还一直在看复习资料,饭也顾不上吃。
7 点,从深圳打来了一个熟悉的电话。整个电话持续了 40 分钟之久,基本上问的都是基本的原理,而后可能我的回答让面试官也比较满意,之后是 1 个半小时的远程监控编程环节,三道程序设计题,给一个半小时的时间,腾讯面试官远程 QQ 协助监控你的桌面,只允许用浏览器的 console 以及本地编辑器,不允许查询资料,在编程过程中,面试官还会试图针对一些有问题的地方给予提示。
最后,我还是很遗憾的没有通过,因为三道编程题目,我磕磕巴巴基本上没做出来,所以挂了,把文件打包发送给面试官后。我问面试官,像我这样经历不丰富,简历不突出的,为什么会考虑我呢?面试官说,我们什么阶段的人选都会考虑,你入行前端一年,基础还是不错的,就是编码能力需要提高...
面试完以后,大概有几个小时,一直沉浸在刚才的面试里,晚饭也忘了吃了,一直在反思自己哪些地方答的不够好,这几天的复习哪些地方有疏漏。
我的互联网公司处女面就以失败告终了。但是回头想想,这次失败的经历是一面镜子,让我清楚的认识到自己几斤几两,督促我在今后的学习中一步一个脚印,脚踏实地,再去仰望星空。
电话里问到的题目
接下来,根据我当天的通话录音
来对所问到的题目进行穷举:
1. 接你现在的工作主要是偏前端还是偏后端?我看你大学的课程主要是偏后端一点?
A:大学课程修完以后,出来没找到工作,干了半年吉他老师,对自己就业比较迷茫。回 到老家以后,干前端、运维都有,但是主要是前端。
2. 接触前端多久了?接触/学习的渠道是什么?
A:满打满算一年。刚开始是同事辅导,慢慢入手以后,在 W3CSCHOOL、网易云课堂、腾讯课堂、慕课网学习。
3.Ajax 发送请求的步骤?
3.1 xhr.open()
3.2 xhr.send()
3.3 callback()
4. 浏览器里面的事件都会按照一定的规则去传递,这个规则是什么?
5. 事件代理,事件委托是什么意思?
6. 闭包是怎么回事?用在什么场景?
6.1 变量常驻内存会带来什么问题?
6.2 如何避免这种问题?
6.3 怎么销毁?
7.CALL 和 Apply 是干嘛的?
8. 在平时开发中,遇到过跨域的问题吗?如何处理跨域呢?
8.1. 如何进行 CORS 跨域?需要什么条件?
8.2 对服务器来说,返回 json 数据和 JSONP 数据有什么不一样?
8.3 还有其他跨域方式吗?
9. 简单说一说盒模型,W3C 和 IE 怪异盒模型。
10. 简要阐述 XSS 和 CSRF 攻击及防范
10.1 XSS 脚本劫持,如何截获?(ps. 这里居然把 CSRF 的概念当做 XSS 的来回答….)
10.2 CSRF 域名劫持
11. 强类型语言有继承,在 JS 里面如何做到继承呢?(proto 和 prototype)
11.1 例如构造函数有一个 test() 方法,prototype 上也有一个 test(),这两个方法有区别吗?
12. 页面性能优化有哪些方式?
12.1 文件、脚本合并是如何优化的呢?
12.2 重绘,重排是怎么回事?有什么区别?
12.3 请举例说明重绘,什么情况下会重绘?
12.4 你认为样式是会引起重绘的吗?什么样式会引起重绘/重排?什么属性会引起重绘/重排?
13. 浏览器如何知道一个文件资源是否需要缓存?
14.HTTP 状态码 304,502,503
14.1 1,2,3,4,5 开头的状态码都表示什么?
15.Node、Vim、angular 简述
15.1 Node 上如何处理异常情况?(Ps. 我回答的是开发调试。。。找 js 文件)
15.2 已经上线的项目,出问题,怎么样去处理异常?
16. 构建工具除了 Webpack,还接触过其他的吗?
16.1 Webpack 的优点和应用场景?
编程大题:
1、页面内有一个正方形元素 A 以及一个待放置区域 B,实现对其拖拽和放下到 B 区域内,并且改变 B 区域背景颜色 (不可用 html5 原生事件)。
2、实现超出整数存储范围的两个大正整数相加 function add(a, b)。
注意:参数 a 和 b 以及函数的返回值都是字符串。
3、页面内有一个 input 输入框,实现在数组 arr 查询命中词并和 autocomplete 效果。
这个环节基本上就知道自己 GG 了。。。
第一题考基本功,DOM、事件、定位、jsAPI
第二题考算法,基本逻辑
第三题考原理,基础
不得不说面试官的技术确实比较全面,腾讯的远程面试也是好狠,直接远程监控写代码的...鼠标和界面都不敢静止,静止可能就会被认为作弊(不知道他们是不是这样来判断的,反正我没有停下来过)。
网友评论