下午四点,大概40min,
- 数组哪些常用方法,其中数组的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;
}
}
- 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
- 提到http-only后,提到一些xss,csrf后,解决这些安全问题的方法,
- 现在使用的框架vue、react对这些安全问题进行处理了吗?例如v-html是否进行处理?对输入进的代码如何处理?(没回答上来)
React 如何防止 XSS 攻击
无论使用哪种攻击方式,其本质就是将恶意代码注入到应用中,浏览器去默认执行。React 官方中提到了 React DOM 在渲染所有输入内容之前,默认会进行转义。它可以确保在你的应用中,永远不会注入那些并非自己明确编写的内容。所有的内容在渲染之前都被转换成了字符串,因此恶意代码无法成功注入,从而有效地防止了 XSS 攻击。我们具体看下:
- 三列布局的实现方法,回答了双飞翼、flex其他的没咋想起来
- 数组去重的多种方法,复杂度
- 数组拍平的多种方法
- flex布局,position、输入url,dns缓,tcp的三次连接,get和post,其中get请求参数受限,是浏览器还是get请求的限制,dns缓存在哪里读取,作用域链、闭包,判断类型等等常见八股
不管是什么类型的,Object.prototype.toString.call();都可以判断出其具体的类型,简单基本类型(String、Number、Boolean、Null、Undefined)不是对象,复杂基本类型都为对象子类型,函数是特殊的对象子类型(可调用对象)