前言
上次三面结束五天之后,hr打来电话,说我的简历已经通过,很激动。约好了面试时间,怎料到是另一个部门的一面。在询问了面试官为什么这么做之后,面试官给我的回答是,在上次三轮面试过后发现我更适合用户增长这个部门,于是让这个部门再来面我。
真的,我直接和面试官说:“我心累了。”,面试官说别太在意,就当交流学习。累了,offer爱给不给吧。第一次面试就要面两个部门,double 的面试量,我上网看那么多其他面经都没遇到过这种情况。
面试时长:40 分钟
题目
1.给一段代码,说出输出结果(this 的指向)
let obj = {
name: 'bytedance',
getName() {
return this.name;
}
};
let fb = obj.getName;
fb();
结果是 undefined 。面试官问我为什么,fb 在调用的时候 this 指向的是 window ,是顶层对象。
面试官追问:那么如果让上面这段代码正常运行,有没有什么操作
我回答:bind call apply 都行
2.call apply bind 的区别
bind 是定义函数的时候使用的,改变函数的默认this 指向。
而 call 和 apply 是在函数调用的时候使用的,同样也可以改变 this 的指向
call 和 apply 的区别在于 传参 的形式不同
3.知道常见的网络安全吗?
这个还好之前了解过,看面试官 噢 的神情应该是给了他惊喜。
XSS跨站请求攻击:
举例:在新浪博客写一篇文章,同时插入一段<script>;一旦有人来看文章,脚本就执行。在攻击代码中,获取他人的cookie,发送到自己的服务器。这么做会把查看者的cookie 发送到攻击者的服务器,得到浏览者的个人信息。
解决措施:前端替换关键字,例如替换 < 为 < > 为 > 或者 后端替换
XSRF跨站请求伪造:
举例:登录一个购物网站,正在浏览商品。该网站付费接口是 xxx.com/pay?id=100 但是没有任何验证;然后你收到一封邮件,隐藏着 <