前端面试的门槛越来越高,前端的知识点多而零散,前端框架层出不穷,怎么做才能全面的复习知识,怎么做才能掌握前端技能,怎么做才能更好的通过面试?
- 大部分公司(创业公司)都趋向于招一个牛逼的前端而不是三四个平庸的前端
性能优化、ES6必问- 招聘要求上清一色的要求有一门后端语言的经验,但似乎面试的时候并没有一个公司问过我后端语言方面的东西
- 招聘要求写的和面试相关性并不是很高
- 招人的要求越来越高,不要轻易离职,特别是裸辞
谈谈对前端安全的理解,有什么,怎么防范
1. 前端安全问题主要有XSS、CSRF攻击。
XSS:跨站脚本攻击
它允许用户将恶意代码植入到提供给其他用户使用的页面中,可以简单的理解为一种javascript代码注入。
XSS的防御措施:
过滤转义输入输出
避免使用eval、new Function等执行字符串的方法,除非确定字符串和用户输入无关
使用cookie的httpOnly属性,加上了这个属性的cookie字段,js是无法进行读写的
使用innerHTML、document.write的时候,如果数据是用户输入的,那么需要对象关键字符进行过滤与转义
CSRF:跨站请求伪造
其实就是网站中的一些提交行为,被黑客利用,在你访问黑客的网站的时候进行操作,会被操作到其他网站上
CSRF防御措施:
检测http referer是否是同域名
避免登录的session长时间存储在客户端中
关键请求使用验证码或者token机制
其他的一些攻击方法还有HTTP劫持、界面操作劫持
2. 使用箭头函数需要注意的地方
当要求动态上下文的时候,你就不能使用箭头函数,比如:定义方法,用构造器创建对象,处理时间时用 this 获取目标。
3. webpack.load的原理
loaders是你用在app源码上的转换元件。他们是用node.js运行的,把源文件作为参数,返回新的资源的函数。
4. ES6 let、const
let是更完美的var
- let声明的变量拥有块级作用域,let声明仍然保留了提升的特性,但不会盲目提升。
- let声明的全局变量不是全局对象的属性。不可以通过window.变量名的方式访问
形如for (let x…)的循环在每次迭代时都为x创建新的绑定- let声明的变量直到控制流到达该变量被定义的代码行时才会被装载,所以在到达之前使用该变量会触发错误。
const
定义常量值,不可以重新赋值,但是如果值是一个对象,可以改变对象里的属性值
const OBJ = {"a":1, "b":2};
OBJ.a = 3;
OBJ = {};// 重新赋值,报错! console.log(OBJ.a); // 3
5. CSS3 box-sizing的作用
设置CSS盒模型为标准模型或IE模型。标准模型的宽度只包括content,二IE模型包括border和padding。
box-sizing属性可以为三个值之一:
- content-box,默认值,border和padding不计算入width之内
- padding-box,padding计算入width内
- border-box,border和padding计算入width之内