• 前端常见面试题


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






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

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

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


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

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

  • 相关阅读:
    关于java.lang.OutOfMemoryError: Java heap space的错误分析
    对TCP/IP网络协议的深入浅出归纳
    leetcode面试准备:Contains Duplicate I && II
    leetcode面试准备:Count Complete Tree Nodes
    leetcode面试准备: Jump Game II
    leetcode面试准备: Jump Game
    LeetCode解题报告:Linked List Cycle && Linked List Cycle II
    最小栈的实现与优化
    面试:归并排序
    leetcode面试准备:Decode Ways
  • 原文地址:https://www.cnblogs.com/yj199661/p/11231738.html
Copyright © 2020-2023  润新知