2020.06.03 bawu
sessionStorage,localStorage,cookies区别? 他们和服务端交互有什么区别?
都是浏览器用来存储数据的,存储的都是字符串类型的键值对
cookies 存储大小每个不超过4K, 会随http请求发送给服务端,可以设置过期时间,后端也可以通过http请求Set-Cookie设置客户端的cookies,一般用来存储一些认证信息
sessionStorage:临时存储,存储大小有5M,刷新页面数据依旧存在,数据会在当前浏览器页面关闭后删除,不会发送数据到服务端
localStorage:永久存储,存储大小有5M,数据保存在硬盘里,浏览器被关闭了,该数据仍然存在,除非手动删除,不会发送数据到服务端
同一浏览器的相同域名和端口的不同页面间可以共享相同的 localStorage,但是不同页面间无法共享sessionStorage的信息
同源策略?怎么解决跨域?CORS有什么安全性问题?
同源策略是浏览器的安全机制,浏览器对非同源请求返回的结果做了拦截,如果两个 URL 的 protocol、port (如果有指定的话)和 host 都相同的话,则这两个 URL 是同源
解决跨域的方法:script,jsonp,iframe,postMessage,CORS, nginx反代理
CORS的Access-Control-Allow-Origin不要设置为通配符“*”,尽量设置为具体的域名地址,还有就是CORS虽然默认不传Cookie,但Access-Control-Allow-Credentials设为true就能允许,这样也可能会有CSRF攻击的风险
更多了解:www.cnblogs.com/qiao-blog/a…
Vue和React有什么差别?
JSON和XML有什么区别?
XML 指可扩展标记语言,被设计用来传输和存储数据, 它是以纯文本格式进行存储
[13,3,4,5,1,23,4,5,0,3] 数在左侧,偶数在右侧时间复杂度O(n),空间O(1),不要用递归, 什么是时间复杂度?什么是空间复杂度?
const arr = [13,3,4,5,1,23,4,5,0,3]
let result = []
let countOdd = 0
let countEven = arr.length-1
for(var i = 0; i <= arr.length-1; i++) {
if(arr[i] % 2) {
//奇数
result[countOdd] = arr[i]
countOdd++;
} else {
// 偶数
result[countEven] = arr[i]
countEven--;
}
}
console.log(result)
我的SB方法,空间复杂度不符合要求
function fun(arr) {
const result = [];
for(let i = 0; i < arr.length; i++) {
if(arr[i] % 2 === 0) {
result.push(arr[i])
} else {
result.unshift(arr[i])
}
}
return result;
}
网上查到的方法:
双指针法:
function fun(arr) {
let i = 0, j = arr.length - 1;
while(i < j) {
while(arr[i] % 2 === 1) i++;
while(arr[j] % 2 === 0) j--;
if(i < j){
const temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
return arr;
}
巧用sort()
var arrA = [6,2,4,3,5,1];
arrA.sort( function(x, y) {
if (x % 2 == 0) return 1;
if (x % 2 != 0) return -1;
});
document.writeln(arrA)
拓展:
/**
* 一个数组,一半奇数,一半是偶数,要将数组按照偶奇偶奇的顺序排序
* 思路,找出下标是偶数但值是奇数的,和下标是奇数但值是偶数的,两个互换,直到结束
*/
const arr = [1,2,1,2,1,2];
function fun(arr) {
let i = 0, j = 1;
while(i < arr.length && j < arr.length) {
if(arr[i] % 2 === 0) {
i+=2;
} else if(arr[j] % 2 === 1) {
j+=2;
} else {
const temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
return arr;
}
console.log(fun(arr));
什么是闭包?如何解决内存泄漏问题?
用过Angular吗? 介绍一下人才管理系统,你扮演什么角色?
为什么想换工作?之前面过吗?现在还在职吗?对新工作有什么要求吗?