百度前端一二面经
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.解释一下闭包
#百度春招##百度##实习##前端工程师##面经#