web前端跳槽面试技巧

基础流程:页面布局css盒模型DOM事件-HTTP协议-面向对象原型链-通信-安全-算法
http协议类:请求-应答模式
1、 http协议的主要特点:简单快速,灵活,无连接,无状态
2、 http报文的组成部分:
请求报文:请求行(GET/HTTP/1.1)+请求头(一系列键值对)+空行+请求体
响应报文:状态行(HTTP/1.1 200 OK)+响应头+空行+响应体
3、 http方法:get/post/put/delete/head
4、 post和get的区别:
浏览器回退重复提交(post)/无害(get)
get产生的url可以被收藏,post不可以
get会被浏览器主动缓存,post不会
get url有长度限制,因此不能携带太多参数
get没有post安全,不能存放敏感信息
get请求通过url传递参数,post放在request body中
5、 http状态码
1XX:
2xx:200,206
3xx:301(Moved Permanently),304(Not Modified)
4xx:400,401,403,404,405
5xx:500,503
6、 持久链接/管线化:Keep-alive(1.1)

通信类
1、同源策略及限制:协议、域名、端口号相同
跨域:跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。
跨域带来的问题:cookie、localstorage和indexDB无法读取;DOM 和 Js对象无法获得;ajax请求不能发送
有三个标签允许跨域请求资源:

1
<img src=XXX> 2.<link href=XXX> 3.<script src=XXX>

所有的跨域都必须经过信息提供方的允许才能完成
2、前后端如何通信:ajax、webSocket、cors
3、如何创建Ajax
4、跨域通信的几种方式:jsonp,hash,postMessage,webSocket,cors
跨域解决方案
jsonp只支持get请求
实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。
响应头添加header(“Access-Control-Allow-Origin:*”);默认地址是网站本身
cors要求前端浏览器>10,
websocket在建立时需要借助http协议,连接建立好之后client与server之间的双向通信就与http无关了
原生websocketAPI使用起来不太方便,我们使用Socket.io

安全类: CSRF、XSS
CSRF(Cross-site request forgrey):跨站请求伪造
攻击原理:转发cookie
防御措施:token验证、referer验证、隐藏令牌
XSS(Cross-site scripting):跨域脚本攻击
攻击原理:脚本注入

算法类
排序
堆栈、队列、链表
递归
波兰式和逆波兰式

二面:渲染机制-js运行机制-页面性能-错误监控

  1. 什么是doctype及作用?
  2. 浏览器渲染过程
    image
  3. 重排reflow
  4. 重绘repaint
  5. 布局layout
  1. js单线程
  2. 任务队列
  3. event loop

  4. 提升页面性能的方法有哪些?
    A.资源压缩合并,减少http请求
    B.非核心代码的异步加载-异步加载的方式有哪些-异步加载的区别
    异步加载的方式:1)动态脚本加载 2)defer 3)async
    异步加载的区别:
    defer在html解析完毕后才执行,多个按照书写顺序加载
    async是在加载完之后立即执行,执行顺序与加载顺序无关
    C.利用浏览器缓存-缓存的分类-缓存的原理
    缓存的分类:强缓存、协商缓存
    强缓存:Expires(绝对时间)、Cache-Control(相对时间max-age=3600)
    协商缓存:Last-Modified If-Modified-Since Etag If-None-Match
    D.使用cdn
    E.dns预解析