emm,过去这一个月面试了几家公司,先后拿到了搜狐和头条的offer,因为等待面试和等待面试结果这个过程实在太痛苦了,所以拿到头条的offer之后就没有再面试了。
腾讯
腾讯是最早投递和面试的一家公司,先后面试了两次(也挂了两次)。
腾讯视频-视频一面
-
算法题 给一个数字,隔三位加一个逗号之后以字符串形式输出(eg:2333333 -> 2,333,333)
-
VUE
说说Vue的双向绑定和VDOM
为什么VDOM会提升性能?
网络
-
跨域 说说同源政策
有什么方法能绕过同源政策/跨域通信(CROS、图像ping、jsonp、webSockets) -
HTTP-状态码
以1-5开头的分别是什么意思。
与重定向相关的几个(301,302,303,307);
与浏览器缓存相关的(304). -
浏览器缓存
强制缓存和协商缓存的过程; (先强制,后协商)
服务器再验证可以使用哪些方法,使用什么首部(ETag配合if-none-match、last-modified配合if-modified-since)。 -
TCP
三次握手四次挥手 -
DNS
查询的过程
递归查询和迭代查询知道么 -
CDN
作用,原理,请求资源的过程,为什么能更快的拿到资源(重点)
JS语言基础
-
闭包
概念(一个能够访问别的函数的作用域的函数)
用处(函数节流,柯里化,创建私有变量)
缺点(重点:内存泄漏) -
作用域
三种作用域(全局,局部,块级),
提升(var,函数声明),
暂时性死区(let & const) -
原型链
读写属性时分别怎么按照原型链查询(读变量则查找,写变量则直接在对象上写) -
程序段输出结果
let obj = {};
Object.setPrototypeOf(obj,{a:233});
obj.a++;
console.log(obj.a); // 输出什么?
复制代码
-
作用域链
按照作用域链查找的过程,
this -
设计模式
“JS设计模式有了解么?”(没了解过,不过大概知道事件模型是观察者模式的一种实现)
总的来说相当充实的一次面试,基本覆盖了之后几家公司面试中遇到的考点。
腾讯另一个部门--电话一面
问的大部分问题都忘掉了,不过最后加了QQ共享了桌面让我做两道题然后把源文件发给他。
- 实现一个动画。将一个div进行移动,速度先快后慢,duration为5秒
- 实现一个函数,将两个超过JS整数存储范围的大整数相加,参数和返回值都是字符串类型的。
阿里巴巴
使用了内推资格,直接进入面试(不过一次就挂了)
- 情景分析
好比说你从后端拿到了一个对象,它的嵌套层级很深(可能要a.b.c.d.e.f.g)这样引用。但是传输过程中对象可能会损坏,可能a.b的属性c不见了(变成undefined了)。但如果还是像上面这样引用,就会变成向undefined请求属性,从而报错。
请你设计一种获取这个对象的属性的方式,保证以下几点:
- 不能报错
- 但是需要知道引用链从哪里断开的(上例就是a.b.c)
- 如果引用链断开了,从而没有拿到真实的值,请给出一个默认值
复制代码
和同学讨论了一下,有以下几种方式:
1. 在try块中访问对象.
如果出错了,catch(err)中的err会包含出错信息,可以知道引用链在哪里断开的
2. 使用一个函数进行访问,并且函数的参数是引用链的字符串形式(即"a.b.c.d.e.f.g")
函数内部对字符串进行分割,然后由表至里依次遍历访问。并且,每次都确定一个对象(a.b)没有丢失才继续访问它的属性(a.b.c)
复制代码
- post和get的区别(语法上来说区别不大。但是语义上来说有比较大的区别:安全性,幂等性等。请在知乎上自行搜索)
- 常用的状态码
- 浏览器缓存
- 闭包,作用域链,原型链
搜狐
第一家拿到offer的公司。当时它晚上来我们学校做宣讲,下午就顺便面试了一批人。一共两轮,如果通过第一轮会在走廊里等一段时间进行第二轮。
第一轮
先做几道题吧(15min):
- 两个人分别掷硬币,谁先掷出正面谁就赢,直到一个人胜出才结束。分别计算先手和后手的胜率。
- package.json中几个属性的解释
- 双向绑定的原理
- 前端性能优化可以从哪些方面入手
然后问问题,就记住一个:
- 手写前端和后端代码来实现jsonp
第二轮
一个很和蔼的大哥给我出了一道算法题:
写一个函数,判断一个数是不是自除数。
自除数的定义:如果一个十进制数能够被它的每一个数位上的数字整除的话,他就是自除数。
首先和面试官说了我的两种思路,然后选择了其中一种开始写代码。
然后就说回去等通知吧,如果通过了三天之内会给回复。然后第三天就收到了电话。
总结
腾讯和阿里不愧是资深大厂,面试相当有难度和广度。
最后针对一些知识点推荐对应的书籍:
- 浏览器缓存--HTTP权威指南对应章节
- DNS,CDN--计算机网络,自顶向下方法对应章节
- 同源政策,跨域方法--JS高级编程对应章节、阮老师的文章