前端常见面试题

面试自我介绍:
一、我叫什么,我来自哪里
二、上家公司在哪,担任的角色是什么?
三、最近辅助的一个项目是哪一个?主要负责的模块是哪些?
四、项目的难点与亮点






一、token验证的流程
    答:
        一、用户向服务器发送用户名和密码。
        二、服务端收到请求,去验证用户名与密码
        三、验证成功后,服务端会签发一个Token,再把这个Token发送给客户端。
        四、客户端收到Token之后能够把它存储起来,好比放在Cookie里或者Local Storage里
        五、用户随后的每一次请求,都会经过Cookie,将token传回服务器
        六、服务端收到请求,而后去验证客户端请求里面带着的Token,若是验证成功,就向客户端返回请求的数据
二、说一下什么是同源策略,以及经常使用解决跨域的方案
    答:
        同源策略:同源指的是域名、协议、端口号相同。
                 同源策略规定了js代码的访问权限,只能访问和本身同源的页面
                 同源策略是一种约定,它是浏览器最核心也是最基本的安全功能
        经常使用解决跨域的方案:
                 一、跨域资源共享(CORS)
                 二、jsonp
                 三、nginx反向代理
                 四、服务器代理
三、如何经过css设置超出部分?
    答:
        一、white-space:nowrap  =>设置内容抵达容器边界会自动转到下一行
        二、overflow:hidden      =>不显示超出对象尺寸的内容
        三、text-overflow:ellipsis    =>将被隐藏的部分用省略号代替

四、请说一下微任务和宏任务的区别
    答:
        微任务(miscrotask)
        宏任务(macrotask)
        表示异步任务的两种分类css

  微任务和宏任务之间的关系:nginx


(此处内容过多,未完,详情请翻阅文档)

五、说一下JS的预编译
    答:   
        把var和function定义的变量提高到script的最上方
        赋值语句不会被提高,哪怕等号后面是一个function
六、原生JS的兼容性问题例举5个
    答:
        一、获取滚动条滚动的距离
            var sTop = document.documentElement.scrollTop||document.body.scrollTop
        二、获取事件对象
            var e = e || event
        三、阻止浏览器默认行为
            function prevent(e){
                if(e.preventDefault){
                    e.preventDefault()
                }else{
                    e.returnValue = false
                }
            }
        四、阻止事件冒泡
            e.stopPropagation?e.stopPropagation():e.cancelBubble=true
        五、事件监听
            addEventListener()
            attachEvent()
        六、获取事件源
            e.target||e.srcElement
        七、ajax兼容
            var xhr = new XMLHttpRequest()||new ActiveXObject("Microsoft,XMLHTTP")
七、IE的事件机制与火狐的事件机制有什么不一样
    答:
        事件处理机制:
            IE是事件冒泡
            火狐是事件捕获
八、for in 与Object.keys的区别
    答:
        for in:
                 通常用于遍历对象的属性
                 做用于数组的for in 除了会遍历数组元素外,还会遍历自定义可枚举的属性,以及原型链上可枚举的属性;
                 做用于数组的for in 的遍历结果是数组的索引,且都为字符串型,不能用于运算
                 某些状况下,能够按照随机顺序遍历数组元素;
        Object.keys()
                遍历结果为由对象自身可枚举 属性组成的数组,数组中的属性名排列顺序与使用for in 循环遍历该对象是返回的顺序一致
                与for in 区别爱与不能遍历出原型链上的属性
九、map与forEach的区别
    答:
        相同点:
                一、都是循环遍历数组中的每一项
                二、每一次执行匿名函数都支持三个参数,数组中的当前项item,当前项的索引index,原始数组input
                三、匿名函数中农的this都是指向window
                四、只能遍历数组
        不一样点:
                forEach没有返回值!!!
                map有返回值,能够return出来
十、如何准确的判断一个数据的类型
    答:   
        一、typeof:只能判断基本数据类型,不能判断引用数据类型,判断出来的都是Object
        二、instanceof:只能进行类型对比,不能进行类型判断
        三、constructor:是prototype对象上的属性,指向构造函数
        四、能够经过toString()来获取每一个对象的类型面试

相关文章
相关标签/搜索