当前位置: 首页 > 面试经验 >

9.15京东前端

优质
小牛编辑
89浏览
2023-03-28

9.15京东前端

下午四点,大概40min,
  1. 数组哪些常用方法,其中数组的map,一般有三个参数(item,index,arr),map是对数组进行什么操作?map的底层如何实现的,传入的回调函数如何处理的?(瞎说,遍历,用闭包什么,面试官说可以好好了解一下,比较有趣???)
map() 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
var new_array = arr.map(function callback(currentValue[, index[, selfArray]]) {
// Return element for new_array
}[, thisArg])

步骤思路

1、 在array原型上添加自己的map方法
2、 传入callback回调函数和thisArg参数
3、 根据调用的数组长度创建新数组newArry
4、 循环原来数组并使用hasOwnProperty方法当前元素是否为空值
5、 是的话新数组就赋值callback函数返回的值
6、 返回新数组
//数组的map的底层操作

//1、在原型上添加一个方法
/**
 * 2、传入一个函数和this
 * 3、call方法传入的参数和map方法的参数一样
 * 
 * */
 

//js里面数组map方法的实现源码

if(!Array.prototype.map){
    Array.prototype.map = function(callback){
        var T,A,k;
        if(this == null){
            throw new TypeError('this is null&nbs***bsp;not defined');
        }

        var O = Object(this);
        var len = O.length >>> 0;
        if(typeof callback !== 'function'){
            throw new TypeError(callback + 'is not a function');
        }

        if(arguments.length > 1){
            T = arguments[1];
        }

        A = new Array(len);
        k = 0;
        while( k < len){
            var kValue,mappedValue;
            if( k in O){
                mappedValue = callback.call(T,kValue,k,0);
                A[k] = mappedValue;
            }
            k++;
        }
        return A;
    }
}







  1. cookie有哪些字段,除了key、value、time等,(domain:可以访问此cookie的域名,path,可以访问的cookie页面路径,expiress/Max-Age此字段为cookie的超时时间默认和session一样,size此cookie的大小,字段http,用来设置http-only属性,为true表示只有在http请求头中会带有此cookie的信息,而不能通过document.cookie来访问,secure:设置是否只能通过https来传递,)  新增,SameSite属性,Strict,Lax,None
  2. 提到http-only后,提到一些xss,csrf后,解决这些安全问题的方法,
  3. 现在使用的框架vue、react对这些安全问题进行处理了吗?例如v-html是否进行处理?对输入进的代码如何处理?(没回答上来)

React 如何防止 XSS 攻击

无论使用哪种攻击方式,其本质就是将恶意代码注入到应用中,浏览器去默认执行。React 官方中提到了 React DOM 在渲染所有输入内容之前,默认会进行转义。它可以确保在你的应用中,永远不会注入那些并非自己明确编写的内容。所有的内容在渲染之前都被转换成了字符串,因此恶意代码无法成功注入,从而有效地防止了 XSS 攻击。我们具体看下:


  1. 三列布局的实现方法,回答了双飞翼、flex其他的没咋想起来
  2. 数组去重的多种方法,复杂度
  3. 数组拍平的多种方法
  4. flex布局,position、输入url,dns缓,tcp的三次连接,get和post,其中get请求参数受限,是浏览器还是get请求的限制,dns缓存在哪里读取,作用域链、闭包,判断类型等等常见八股
不管是什么类型的,Object.prototype.toString.call();都可以判断出其具体的类型,简单基本类型(String、Number、Boolean、Null、Undefined)不是对象,复杂基本类型都为对象子类型,函数是特殊的对象子类型(可调用对象)
 类似资料: