• 高频面试题


    浏览器执行过程
    渐进增强和优雅降级
    闭包
    跨域
    本地存储(cookie,localstorage,sessionstorage,session)
    去重
    es6
    盒子模型
    防抖和节流
    重绘重排
    iframe
    优化
    懒加载
    三次握手
    原型链
    布局
    css3 html5新特性
    兼容性
    脏检查
    如何保持登录状态
    移动端适配问题
    实现页面的局部刷新

    浏览器执行过程

    加载:根据请求的URL进行域名解析,向服务器发送请求,接收响应文件(如 HTML、JS、CSS、图片等)。
    
    解析:对加载到的资源(HTML、JS、CSS等)进行语法解析,构建相应的内部数据结构(比如HTML的DOM树,JS对象的属性表,CSS的样式规则等)。
    
    渲染:构建渲染树,对各个元素进行位置计算、样式计算等,然后根据渲染树完成页面布局及绘制的过程(可以理解为“画”页面元素)。
    
    • 1
    • 2
    • 3
    • 4
    • 5

    渐进增强和优雅降级

    渐进增强:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能,以达到更好的用户体验。
    
    • 1
    优雅降级:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
    
    • 1

    闭包

    闭包就是能够读取其他函数内部变量的函数,可以理解成定义在一个函数内部的函数
    jquery这种类库就是大的闭包
    
    • 1
    • 2
    function newAdd() {
        let num = 0
        function fn() {
          return num++
        }
        return fn
    }
    let add=newAdd()
    add() //1
    add() //2
    add() //3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    跨域

    为什么会出现跨域问题?
    出于浏览器的同源策略限制,浏览器会拒绝跨域请求。
    同源策略是一种约定,它是浏览器最核心也最基本的安全功能。所谓同源是指,域名,协议,端口相同。
    当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域,不同域之间相互请求资源,就算作“跨域”。
    
    同源策略限制内容有:
    Cookie、LocalStorage、IndexedDB 等存储性内容
    AJAX 请求发送后,结果被浏览器拦截了(跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。)
    DOM 节点
    
    script、img、link、iframe等不存在跨域请求的限制;而且这里所有的资源文件请求都是get请求
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    跨域解决方案

    1、jsonp跨域
    2、nginx反向代理
    3、跨域资源共享(CORS)
    4、webSocket
    5、document.domain + iframe跨域
    6、location.hash + iframe跨域
    7、window.name + iframe跨域
    8、postMessage跨域
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    jsonp跨域
    jsonp的原理就是利用