1.说一说常见的HTTP Header
# 1.说一说常见的HTTP Header
Response Header:cache-control、Access-Control-Allow-Origin、Content-Type、Etag、status、last-modified
Request Header:User-Agent、origin、cookie、cache-control
# 2.你对Cookie了解多少
# 设置Cookie
通过服务器的Set-Cookie Header设置
# samesite
samesite策略针对“第三方cookie”。比如,在网站A请求网站B的资源,浏览器也会把网站B的cookie附带到对资源B的请求上,网站A就可以伪造用户身份。网站B要求请求中附带token可以防止这种攻击。
strict:完全禁止第三方cookie,即从其他网站跳转过来时,请求不附带cookie
lax:允许a链接、get表单、prerender预加载携带第三方cookie
none:默认策略。chrome计划将默认策略转到lax,之后可以用none恢复当前策略(仍然要求带secure标记)。
# secure httponly
set-cookie中的标记。
secure保证仅在https连接中传输cookie
httponly保证js无法通过dom api访问cookie
# 3.浏览器什么时候开始渲染
得到HTML文本后开始解析DOM树并生成Render Tree,在这个过程中,如果body中的第一个外链js下载得比较慢,慢于它之前前的js和css,那么在等待下载完成前,浏览器会开始首次渲染此js前的部分节点(在DOMContentLoaded之前)。另一种情况,如果body中的第一个外链js下载很快,快于它之前的js和css,那么浏览器还是会让之前的js和css先下载,然后执行js,并在所有js执行完后触发渲染。
# 加快首次渲染
从减小body中第一个js前的资源大小入手,head中不要放过多css和js,必须要放可以尽量减小大小,优化外链网络质量。此外,可以将skeleton逻辑放在body的第一个js之前,让用户感觉不到白屏。还需要注意自定义字体的使用,如果字体无法下载完成,触发FP也只显示白屏。
# load与DOMContentloaded
load是所有资源(包括JS、图片、视频)加载完成的事件。DOMContentloaded是DOM树及其引用的JS、CSS解析完的事件。因此load一定后触发。
引用自 从页面加载到首屏渲染时机 引用自 [Chrome的First Paint](http://eux.baidu.com/blog/fe/Chrome的First Paint)
# 4.你知道缓存吗
# Expires
通过绝对时间确定缓存是否过期。
# Cache-Control
# max-age
资源从文档被访问后开始计时。可覆盖Expires。过期后可以进入对比缓存。
# no-cache
进入对比缓存。
# no-store
不使用任何缓存。
# Service Wroker
拦截请求、缓存静态资源。
# JavaScript
# 闭包
由于函数作用域存在而实现私有变量。
function maker(){let i=0;function counter(){i++};return counter;}
# eslint
代码规范
# bind&call&apply
# var&let&const
# new操作符原理
# 箭头函数
# promise原理
# promise.all
# promise和async/await的区别
# debounce
# Ajax
面试可能会要求手写原生Ajax
# 事件委托&冒泡
# HTML/CSS
# inline&block
inline元素是行内元素,默认不换行,并且不能设置宽高和上下margin。但img和textarea即使是inline也可以设置,因为他们是可替换元素,一种独立于CSS控制的外部对象。
# 水平垂直居中
flex:justify-content与align-items
absolute:50%与clac或translate
margin:top、bottom、left、right设0,margin设auto
# “品”字布局
# 网络请求
# http状态码&请求方法
500(通用错误)、404(找不到页面)、301(永久跳转)、200(请求成功)、204(成功处理并返回空内容)、302(临时跳转)、304(请求的资源未修改)、400(请求语法错误)、401(要求身份认证)、403(拒绝执行)、502(作为网关或代理的服务器请求失败)、503(超载或系统维护)
GET(请求并返回)、POST(提交资源进行处理)、PUT(想服务器传送数据取代指定内容)、DELETE(请求删除资源)、HEAD(请求并只返回头)、TRACE(回显服务器收到的请求)
# cookie&session
# 计算机网络
# 操作系统
# 进程间通信
管道、信号量、共享内存、消息队列、套接字