一面
- 实习经历等
- 数据类型,基本和引用
- 从url到页面展示发生了什么?
- 状态码
- 缓存相关
- es6知道什么?箭头函数和普通函数有什么不同?
- promise用过吗?做过什么事
- 重绘和重排,如何避免重排
- es6的set和map,以及使用场景
- react生命周期,新的和旧的
- css垂直居中
- get和post的区别
- 同源策略以及跨域方式
- js文件的加载会导致页面的阻塞吗?
三道代码题
- 解析url为object
- 上一个的修改
- 给函数绑定多个事件,封装方法
//1.
const testURL1 = 'http://www.youzan.com?name=coder&age=20';
//{name: coder, age: 20}
function parseQueryString1(url){
let arr1={};
let arr2=url.split("&");
arr2.map((item)=>{
let sh=item.split('=')[0];
arr1[sh]=item.split('=')[1];
});
return arr1;
}
//2.
const testURL2 = 'http://www.youzan.com?list[]=a&list[]=b';
// &list[]=a&list[]=b
//list: ['a', 'b']
function parseQueryString2(url) {
let arr1 = [];
let uu = url.split('?')[1];
let arr2 = uu.split('&');
let arrName = arr2[0].split('[')[0];
arr2.map((item)=>{
let temp = item.split('=')[1];
arr1.push(temp);
});
let obj = {};
obj[arrName] = arr1;
return obj;
}
//3.
// 返回值示例:
// {
// "add1"
// "add2"
// "delete"
// "add2"
// }
//思路:存储方式
/*
query{
add:[
add1: 1,
add2: 2
],
del:[
del1: 1
]
}
*/
const eventBus = (function() {
function listen(event, fn) {
// code
}
function trigger(event) {
// code
}
function remove(event, fn) {
// code
}
return {
listen,
trigger,
remove
};
})();
const add1 = () => {
console.log('add1');
}
const add2 = () => {
console.log('add2');
}
const remove = () => {
console.log('delete');
};
eventBus.listen('add', add1);
eventBus.listen('add', add2);
eventBus.listen('remove', remove);
eventBus.trigger('add');
eventBus.trigger('remove');
eventBus.remove('add', add1);
eventBus.trigger('add');
二面
- node.js中express的使用
- node.js中间件
- http传输的是文本还是二进制
- 如果传输的是文本,那么体积会是非常庞大,那应该怎么做呢?
- 压缩文本,要怎么压缩,要是让你设计,怎么设计呢?
- 分割文本进行传输,怎么分割呢??
- 还有一堆主观性的问题,比如大学最骄傲的事情等等…
- 让你自己做补充,挑自己比较擅长,有一定技术含量的方面进行阐述一下,讲的好了的话肯定会是加分项。