百度前端一二面经
4.12百度连续两面,暂时想到那么多,后面想到再补充
百度一面
1.说一下快排
2.介绍一下状态码
3.两栏布局(一列固定一列自适应)还有两边有空隙(空隙在不同屏幕是固定的怎么实现)
4.元素的垂直水平居中?有考虑过兼容写法吗?
5.本地存储(cookie、sessionstorage、localstorage),有考虑过网络攻击处理吗?写项目的时候使用到了哪些?
6.vue的双向数据绑定原理
7.vue的父子通信
8.说一下怎么消除递归
9.后台给你返回一个很多层叠的数据,你会怎么设计一个数据结构(类似{name:"xx",{id:"xx",{sex:"xx"}}}json格式转对象这种)
10.js内存泄漏
11.跨域(iframe缺点)
12.有使用过webpack吗?
13.你们团队合作流程是什么?多少人?
14工作室使用的技术栈
15.js数据类型分类
16.深拷贝和浅拷贝的区别
百度二面
1.获取当前时间,并格式化化为‘yyyy-mm-dd’格式
function getNowFormatDate() {
var date = new Date();
var seperator = "-";
var year = date.getFullYear();
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var currentdate = year + seperator + month + seperator + strDate;
return currentdate;
} 再补充一个可以传入时间格式的通用格式化时间函数
function formatDate(date, fmt) {
//获取年份
// y+ -->y的个数(1个或多个)
if (/(y+)/.test(fmt)) {
// ‘yyyy’,2019+''变成字符串2019,后面取个数 2019/019/19替换前面yyyy
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
}
// 获取
let o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'h+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds()
};
for (let k in o) {
if (new RegExp(`(${k})`).test(fmt)) {
let str = o[k] + '';
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
}
}
return fmt;
};
// 比如传进来是4m,返回04m
function padLeftZero(str) {
return ('00' + str).substr(str.length);
};
var date = new Date();
console.log(formatDate(date,"yyyy:MM:dd")); 2.[2, 50, 8, 20] 升序排列
let arr =[2, 50, 5, 20]; arr.sort((a,b)=>a-b);
3.获取url里的参数,比如www.baidu.com?a=1&b=2
const parseQueryString = url => {
var json = {};
var arr = url.substr(url.indexOf('?') + 1).split('&');
arr.forEach(item => {
var tmp = item.split('=');
json[tmp[0]] = tmp[1];
});
return json;
}
let result = parseQueryString("www.baidu.com?a=1&b=2");
console.log(result); 4.'abc123'用正则提炼数字
// 第一种 let string = "abc123ds45"; let reg = /\d+/g; let result = string.match(reg); console.log(result);//返回的是数字数组,可以再讲数组转为字符串 // 第二种 let result2 = string.replace(/\D+/g,""); console.log(result2);
5.写一个方法,获取参数的数据类型
function type(target) {
var typeStr = typeof (target),
toStr = Object.prototype.toString,
objStr = {
"[object Object]": "_objectObject_",
"[object Array]": "_arrayObject_",
"[object Number]": "_numberObject_",
"[object Boolean]": "_booleanObject_",
"[object String]": "_stringObject_"
}
if (target === null) {
return null;
}
//原始数据类型+function类型
if (typeStr !== "object") {
return typeStr;
} else {
return objStr[toStr.call(target)];
}
}
function a() {
}
console.log(type(a)); 6.深度clone一个对象
7.状态码
8.箭头函数和普通函数区别
9.平时又遇到什么难点吗
10.解释一下闭包
#百度春招##百度##实习##前端工程师##面经#