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) 回帖