摸底测试
1. 什么是闭包,必包的好处,缺点分别是什么?
a. 闭包就是将函数内定义的变量 通过 return 返回一个函数交给外部来使用
b. 好处:
c. 容易造成内存泄漏
2. 给一个不定宽高垂直水平居中你有哪些方式 (不需要写出具体代码)
a. margin:auto
b. display:flex;just-content:center;align-item:center;
c. top:50%;left:50%; transfrom:-50% -50%;
3. post 和 get 的区别?
a. post 传输的内容是加密的,get 实在 url 上传输明文,post 更加安全
b. get 传输内容有大小限制 1024 字节,post 没有限制,有的话那就是浏览器限制了
c. 访问网页,请求静态文件一般都是 get,调用接口一般都是 post
4. 描述下浏览器从输入网址到渲染页面的整个过程 (简述或者语音发给面试官)
a. 首先输入 url 按下回车之后,浏览器会拿着 utl 去 DNS 服务器寻找它的 ip,如果没有就去上一层 DNS 服务器去找,最后去根 DNS 寻找,找到后会返回 ip,否则查找失败
b. 浏览器拿着 ip 去请求服务器对应的资源
c. ip 服务器接收到客户端的 syn 数据包后会进行一个确认连接,会发一个 syn + ack 给客户端,客户端接受到 syn+ack 后会再发给 ip 服务器一个确认包,到此完成 3 次握手
d. 然后 ip 服务器把客户端请求的资源返回,客户端拿到资源后进行渲染,首先把 css 和 html 文件编译成 cssOM 和 DOM 树,当有 js 加载的时候暂停渲染处理 js,进行重绘和回流,完成之后展现给用户
5. 实现寄生组合继承
function Person(name, age) {
this._name = name;
this._age = age;
}
Person.prototype.getName = function () {
return this._name;
};
const son = new Person('link', 22);
son.__proto__.getAge = function () {
return this._age;
};
console.log('====================================');
console.log(son.getName());
console.log(son.getAge());
console.log('====================================');
6. [3,24,63,9,8] 对这个数组进行排序,使用冒泡排序
var arr = [3, 24, 63, 9, 8];
const length = arr.length;
console.log(arr);
for (let i = 0; i < length; i++) {
for (let j = i + 1; j < length; j++) {
const temp = arr[i];
if (arr[i] > arr[j]) {
arr[i] = arr[j];
arr[j] = temp;
}
}
}
console.log(arr);
var twoSum = function (nums, target) {
const length = nums.length;
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
if (nums[i] + nums[j] === target) {
return [i, j];
}
}
}
};
var fourSum = function (nums, target) {
let length = nums.length;
var arr = [];
var map = new Map();
for (let i = 0; i < length; i++) {
for (let j = i + 1; j < length; j++) {
for (let k = j + 1; k < length; k++) {
for (let l = k + 1; l < length; l++) {
if (nums[i] + nums[j] + nums[k] + nums[l] == target) {
const list = [nums[i], nums[j], nums[k], nums[l]];
const str = list.toString();
console.log(map.has(str));
if (map.has(str) == false) {
arr.push(list);
map[str] = list;
}
}
}
}
}
}
console.log(map);
return arr;
};