百度二面

//就这些了呜呜呜
最后一题是个什么,答得也不好。

Function.prototype.mybind = function(context){
if(typeof this !== 'function'){
throw new TypeError('Error')
}
let _this = this
let arg = [...arguments].slice(1)
return function f(){
if(this instanceof f){
return new _this(...arg,...arguments)
}

else{
return _this.apply(context,arg.concat(...arguments))
}
}


const id = '120106198810200518'

function getAge(id) {
var length = id.length;
if(!id){
return 0
}

else{
if(length != 18){
return 0
}

var year = '',month='',day=''
if(length == 18){
year = id.substr(6,4)
month = id.substr(10,2)
day = id.substr(12,2)

var date = Date.now()
var curYear = date.getFullYear()
var curMonth = date.getMonth()+1
var curDay = date.getDay()
var age = Number(curYear)-Number(year)
if(curMonth<month || (curMonth == month && day <curDay){
age --

}

return age

}

}


// 返回年龄
}



//评测题目: 3-日志上报
/*
现在有一个基于 http 的前端日志采集系统,为了优化性能,我们需要把较密集的单次上报日志的行为,
改成合并掉 100ms 时间窗口内的单次上报为批量上报。

假设现有的单次上报的函数如下,请改写此函数的实现,不能使用任何库:
const uploadLog = (logStr) => {
fetch('https://log.xxx.com', {
method: 'POST',
body: JSON.stringify([logStr])
});
}


注意:
1.没有日志上报调用时,不发生 http 请求。
2.无论日志上报调用有多频繁,http 请求间隔"不小于" 100ms

*/
var str = '1';
function delay(delay){
let pre =   Date.now()
let arr=[]
return function(str){
let now = Date.now() // 10

arr=[str,...arr]
if(now - pre >= delay){
upload(arr)
pre = now) // 12
arr =[]
}
}
}
// delay(string,delay)
// delay(string1,delay)
let fn = delay(100)
setInterval(()=>{
str += '231'
fn(str)
}  , 10)





















#百度##面试题目#
全部评论
第三题说的节流吧
点赞 回复
分享
发布于 2021-04-21 12:11

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务