携程前端面经

五道题目
1.比较经典的,类似于
for(let i=0;i<10;i++){
    setTimeout(function(){
        console.log(i)
    },1000)
}
如何输出0 1 2 3...答的let,闭包,第三个参数
问为什么let可以输出这个,答的作用域,面试官让详细解释,我不知道是要怎么样详细解释
2.引用类型考察
let a={m:10,n:30}
let b=a;
let c=b;
b.m=20;
let d={...b}
c={n:40}

console.log(a.m) //20
console.log(a===b) //true
console.log(a===c) //false
console.log(b===d) //false(...运算符第一层深拷贝,如果某项还是引用类型会互相影响)
console.log(b===c) //false
3. 千分位补充逗号,且保留两位小数
let str='1234567'
function convertMoney(str){
    let strarr=str.split('.');
    let first=strarr[0];
    let second=strarr[1] || '00';
    let idx=0;
    let res=[]
    for(let i=first.length-1;i>=0;i--){
       idx++;
       res.unshift(first[i])
       if(idx %3==0){
          res.unshift(',')
       }
       console.log(res)
    }
    let results=res.join('')+'.'+ second;
    return results
}
console.log(convertMoney(str))
也可以用正则,网上的答案
let str='1234567'
function convertMoney(str){
    let reg=/\d{1,3}(?=(\d{3})+$)/g;
    let newarr=str.replace(reg,'$&,')
    return newarr
}
console.log(convertMoney(str))
4.按照index排序
采纳评论区大佬答案。。
let arr=[
    {value:'北京',index:'beijing'},
    {value:'上海',index:'shanghai'},
    {value:'北海道',index:'beihaidao'},
    {value:'日本',index:'ribeng'}
]

let newarr=arr.sort(function(a,b){
    if(a.index > b.index) {
        return 1
    } else if(a.index < b.index) {
        return -1
    } else {
        return 0
    }
})


5.把数字提取出来
平时做正则容易出错,比较怂还是用charCodeAt()了
let str='ahbc345lkiol876kkk67';
let res=[];
let temp=[];
for(let i=0;i<str.length;i++){
    if(str[i].charCodeAt()>='0'.charCodeAt() && str[i].charCodeAt()<='9'.charCodeAt() ){
        temp.push(str[i])
    }else{
        res.push(temp)
        temp=[]
    }
}
res.push(temp)
console.log(res.filter(item=>item!=0))
可以用正则
let str='ahbc345lkiol876kkk67';
let reg=/\d+/g
let newreg=str.match(reg)
console.log(newreg)

不太会搞这些,有错的或者有更好的方法欢迎大家指出来我学习一下
****************************
更新
二面,最近面试太忙可能和其它面试记混了,尽量还原
1.手写防抖节流
2.为什么不用es6写,es6转换原理
3.redux的流程
4.为什么redux数据管理框架可以和react这种UI框架结合起来(提示与provider和contexts有关)
5.手写一个简单的闭包
6.闭包概念,使用到闭包的例子说明
7.有没有看过源码
8.react-thunk
9.有没有用过ts
10.简单介绍一下webpack
11.简单说明loaders和plugin的不同
12.https传输的内容需不需要另外加密

没啥后续了,应该是挂了

迷惑,8月27一面,今儿都10月12了,来个三面链接?!!!!!!!


#面经##校招##携程##前端工程师#
全部评论
你这个第四题的得出来的答案好像不对
点赞 回复 分享
发布于 2020-08-27 17:58
第四题直接用index的字典序比较感觉就可以啊,大佬看看这样行不 let arr=[     {value:'北京&(9631)#39;,index:'beijing&#39;},     {value:'上海&(9633)#39;,index:'shanghai&#39;},     {value:'北海道&(9635)#39;,index:'beihaidao&#39;},     {value:'日本&(9637)#39;,index:'ribeng&#39;} ] let newarr=arr.sort(function(a,b){     if(a.index > b.index) {         return 1     } else if(a.index < b.index) {         return -1     } else {         return 0     } }) console.log(newarr)
点赞 回复 分享
发布于 2020-08-27 23:14
直接就是五道题?
点赞 回复 分享
发布于 2020-08-28 07:35
你投的岗位是哪个城市的啊?
点赞 回复 分享
发布于 2020-09-24 21:42
第四个题为啥要用两个charCodeAt() 啊?
点赞 回复 分享
发布于 2020-09-24 22:03
楼主base哪啊?
点赞 回复 分享
发布于 2020-09-25 19:11
楼主三面是hr面吗
点赞 回复 分享
发布于 2020-10-19 18:51

相关推荐

11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
3 33 评论
分享
牛客网
牛客企业服务