文章目录
- 1. cookie的http-only
- 2. http2.0的特点
- 3. osi模型,tcp和udp,三次握手为什么不用二次握手
- 4. css脱离文档流 `absolute` `fixed` 以及如何回归文档流
- 5. 强制缓存200和协商缓存304, 浏览器是如何该使用判断使用哪个的?
- 6. js归并排序复杂度O(nlogn), 为什么是O(nlogn)
- 7. 归并排序和快速排序的区别? 稳定和不稳定,时间复杂度
- 8. 数据库事务的ACID特性 (原子性/一致性/隔离性/持久性)
- 9. 实习项目-大文件分片上传, 考虑并发问题. 目前只剩10M空间, 对同一篇文章在不同浏览器上,同时上传两次10MB, 如何处理?
- 10.怎么计算的md5, 分片原理
- 11. Node.js的事件循环机制, 对js的事件循环有什么影响和作用?
- 12. js的事件循环,微任务宏任务, 在执行一个微任务的时候又有了一个微任务,接下来该如何进行?
- 13. 重绘和回流, 解决方法
- 14. csrf攻击, B站点模拟请求A站点,cookie跨域拿不到,是怎么做到csrf攻击的.
- 15. JavaScript 实现归并排序方法 mergeSort,参数为 array,调用方法如 mergeSort([1, 34, 53, 23, 60]),返回结果为 [1, 23, 34, 53, 60]
- 浏览器协商缓存和强制缓存
- http2.0和http1.0的区别,问很细
- http和https的区别,为什么https安全,能不能继续三次握手四次挥手
- 跨域的解决方案,为什么,各个之间的区别
- 事件循环出题判断输出结果
- 函数执行结果
- 写一个加法函数(sum),使他可以同时支持sum(x,y)和sum(x)(y)两种调用方式。
- - 编写方法,返回最长无重复子串的长度
每个点都问的很细很细很细
1. cookie的http-only
https://blog.csdn.net/qq_38553333/article/details/80055521
2. http2.0的特点
盒子模型和box-sizing
3. osi模型,tcp和udp,三次握手为什么不用二次握手
4. css脱离文档流 absolute
fixed
以及如何回归文档流
5. 强制缓存200和协商缓存304, 浏览器是如何该使用判断使用哪个的?
6. js归并排序复杂度O(nlogn), 为什么是O(nlogn)
首先需要拆分数组,拆分次数logN, 然后逐步归并数组,合并两个有序数组O(N).
7. 归并排序和快速排序的区别? 稳定和不稳定,时间复杂度
8. 数据库事务的ACID特性 (原子性/一致性/隔离性/持久性)
9. 实习项目-大文件分片上传, 考虑并发问题. 目前只剩10M空间, 对同一篇文章在不同浏览器上,同时上传两次10MB, 如何处理?
10.怎么计算的md5, 分片原理
11. Node.js的事件循环机制, 对js的事件循环有什么影响和作用?
12. js的事件循环,微任务宏任务, 在执行一个微任务的时候又有了一个微任务,接下来该如何进行?
13. 重绘和回流, 解决方法
14. csrf攻击, B站点模拟请求A站点,cookie跨域拿不到,是怎么做到csrf攻击的.
15. JavaScript 实现归并排序方法 mergeSort,参数为 array,调用方法如 mergeSort([1, 34, 53, 23, 60]),返回结果为 [1, 23, 34, 53, 60]
//line=readline()
//print(line)
console.log('Hello World!');
function mergeSort(array){
let len = array.length;
if(len < 2){
return array;
}
let middle = Math.floor(len/2);
let left = array.slice(0, middle);
let right = array.slice(middle);
return merge(mergeSort(left), mergeSort(right));
}
function merge(left, right){
let result = [];
while(left.length >0 && right.length >0){
if(left[0] <= right[0]){
result.push(left.shift());
} else {
result.push(right.shift());
}
}
while(left.length){
result.push(left.shift());
}
while(right.length){
result.push(right.shift());
}
return result;
}
let test = mergeSort([1,34,53,23,60]);
console.log(test);
浏览器协商缓存和强制缓存
http2.0和http1.0的区别,问很细
http和https的区别,为什么https安全,能不能继续三次握手四次挥手
跨域的解决方案,为什么,各个之间的区别
事件循环出题判断输出结果
console.log('开始');
setTimeout(() => {
console.log('输出一个信息');
}, 0);
console.log('执行');
new Promise(resolve => {
console.log('执行for循环');
for(var i = 0; i < 100; i++){
i == 99 && resolve();
}
}).then(() => {
console.log('执行then函数')
}).then(() => {
setTimeout(() => {
console.log('timeout in promise');
}, 0);
});
console.log('结束');
开始
执行
执行for循环
结束
执行then函数
undefined
输出一个信息
timeout in promise
函数执行结果
function Foo() {
getName = function () { alert (1); };
return this;
}
var getName;
function getName() { alert (5);}
Foo.getName = function () { alert (2);};
Foo.prototype.getName = function () { alert (3);};
getName = function () { alert (4);};
getName(); // 4
Foo.getName(); // 2
写一个加法函数(sum),使他可以同时支持sum(x,y)和sum(x)(y)两种调用方式。
function sum() {
if(arguments.length == 1) {
const x = arguments[0];
return function (y) {
return x + y;
}
}
else {
let ans = 0;
for(let i = 0; i < arguments.length; i++) {
ans += arguments[i];
}
return ans;
}
}
- 编写方法,返回最长无重复子串的长度
- 无重复子串指:子串中每个字符都不相同
- 例如:s = 'aaabcddddefghh' ,其中,最长的无重复子串为'defgh'长度为5
var lengthOfLongestSubstring = function(s) {
var arr = s.split('');
var max=0;
var str=[];
for(let i in arr){
//搜寻是否已存在同样的字符
var index=str.indexOf(arr[i]);
if(index!=-1){
str.splice(0,index+1);//存在则将该字符和前面的字符都除去
}
str.push(arr[i]);
max = Math.max(str.length,max);
}
return max;
};