首页 > 字节提前批前端tiktok三面
头像
lllbbbwww
发布于 2021-08-15 11:54
+ 关注

字节提前批前端tiktok三面

1. 实现一个模板语法 underscore _.template:
function template(tmplStr, data) {
//
}

template(`Hello, <%=      name%>, I am a <%= role %> > <% if (name === 'a') { %><% } %>`, {name: 'stephen', role: 'engineer'}) 
// Hello, stephen, I am a engineer
大概就是字符串的切割提取替换,用了slice切割和replace+正则两种方式实现,中间巨尴尬的一点是,我忘了slice Api和split Api了,然后切出去看了一眼,被发现了。。。面试官说要看可以跟他说,他会让我看的。。。 希望大家注意

解答:
function template(tmpStr, data) {
    let l = tmpStr.indexOf('<%=');
    let r = tmpStr.indexOf('%>');
    if(l === -1 || r === -1) {
        return tmpStr;
    }
    let key = tmpStr.slice(l+3, r).trim();
    tmpStr = tmpStr.slice(0, l) + data[key] + tmpStr.slice(r+2);
    return template(tmpStr, data);
}

function template2(tmpStr, data) {
    return tmpStr.replace(/<%=\w*%>/g, (match)=>{
        return data[match.slice(3, -2)]
    })
}

`${}`
console.log(template('Hello, <%= name %>, I am a <%= role %>', {name: 'stephen', role: 'engineer'}))

2. 压缩字符串 'aaaaaabbbbbcccca' => 'a6b5c4a1'
function compress(str) {
    let pre = str[0];
    let curNum = 1;
    let res = ''
    for(let i=1;i<str.length;i++) {
        if(str[i] === pre) {
            curNum++;
        } else {
            res += pre;
            res += curNum;
            pre = str[i];
            curNum = 1;
        }
    }
    res += pre;
    res += curNum;
    return res;
}

console.log(compress('aaaaaabbbbbcccca'))

3. 第一题因为优点紧张,忘了api,花了可能有15分钟,第二题秒答,大概过去了20分钟的样子,后来问了很多实习相关,就一直聊实习的工作内容,你做的事情,我当时答的也不算特别好。。。


顺利通过,希望下周可以顺利通过hr面

更多模拟面试

全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐