你不懂什么,就给问到什么。其实是你一无所知!
基础很重要,基础很重要,基础很重要。
笔试
- 写一个事件监听函数,兼容所有浏览器?
function addHandler (elem, type, handler) { if(elem.addEventListener) { elem.addEventListener(type, handler, false); } else if(elem.attachEvent) { elem.attachEvent(type, handler); } else { elem['on' + type] = handler; }}复制代码
- 不能使用全局变量,实现一个迭代函数,使其第一次调用输出1,第二次输出2,第三次输出3......
function add() { var a = 0; return function() { return (a+=1); }}var addIterator = add();addIterator(); // 1addIterator(); // 2...复制代码
- 考察this,下面代码依次输出123、345、789怎么实现?
var name = '789';var person = { name: '123', personOne: { name: '345', getName: function () { console.log(this.name) } }}复制代码
- http常见请求类型?常见的状态码?如果一个页面要在一天后过期,怎么设置?
请求类型:POST、GET、PUT、DELETE、OPTION、TRACE
常见状态码:1xx、2xx、3xx、4xx、5xx
Cache-control: cache, max-age=86400
- XSS、CSRF、SQL注入的理解和防范措施?
XSS:跨站脚本攻击,主要是通过输入框内输入非法字符,比如在评论框内输入<script>alert("SB")</script>,然后其他用户看到页面的评论时就会弹出SB。防范措施,对输出到模板中的自定义属性、样式、内容做解码处理。
CSRF:跨站点请求伪造,主要是利用登录者的身份信息去完成其他操作。防范措施,验证http头部字段referer、token等。
SQL注入:举个例子,在登录时,在用户名框中输入Jouryjc #,后端接收到的 select * from user where name = 'Jouryjc' # and password = '123456'; 后面密码的筛选被注释了。于是就能拿到这个用户的信息了。防范的话,主要是对用户输入的非法字符进行校验、严格限制输入类型。
- 浏览器输入URL到页面加载中间的过程?(越详细越好)
DNS解析——TCP连接——发送HTTP请求——服务器处理请求并返回HTTP报文——浏览 器解析渲染页面——连接结束,细节可以参考
- 如果一个用户投诉页面加载很慢,怎么去优化?
这个题也是根据上面的流程,每一步都能做很多优化细节。重点是根据性能问题点针对性地做优化。具体的一些规则比如
- HTML5新特性有哪些?(至少10个)
1、用于绘画的 canvas 元素
2、用于媒介回放的 video 和 audio 元素
3、对本地离线存储的更好的支持
4、新的特殊内容元素,比如 article、footer、header、nav、section
5、新的表单控件,比如 calendar、date、time、email、url、search
6、新的API,比如Geolocation、Worker、ServerSent
- ES2015新特性有哪些?(至少10个)
这个就直接看吧
面试
- 做过的项目,项目用到的框架,框架某个技术的实现原理。
- 事件模型
- 项目中有没遇到XSS、CSRF的问题,怎么解决的?
- CDN原理
- 如果首页一次性要加载50张图片,可能会存在什么问题?怎么解决?
- 滚动加载,在首页就计算好每张图片的高度和滚动时监听对应高度有什么区别?
- CSS3做的动画有什么缺点?