面试经验合集-Web前端<一>
面试一:MF
时间:2019-1-2
试题一
// [mf: stringify-query-string]
// 类型: x z
// 时长: 15 分钟
// 姓名:
// 日期:
// 实现下面的 stringify 函数, 用于将键值对数据序列化为 query string.
// 提示:
// 运行代码快捷键: Ctrl + S
function stringify(data) {
var str = '';
//str = JSON.stringify(data);
str = JSON.stringify(data);
//str = encodeURIComponent(str);
//str = JSON.toString(data)
return str;
}
// 参考用例:
const query = stringify({
id: '123',
subject: 'hello, world!'
});
console.log('输出结果:');
console.log(query);
// 输出结果参考
// 输出结果:
// id=123&subject=hello%2C%20world!
附:
function stringify(data){
var str = '';
var keys = [];
// if(typedof(data) == 'object'){
// keys = data.keys();
// }
for(var item in data) {
if (data.hasOwnProperty(item))
keys.push(item);
}
for(i=0;i<keys.length;i++){
str += "&" + keys[i] +"=" + escape(data[keys[i]]);
}
str = str.substring(1);
return str;
}
q = stringify({
id: '123',
subject: 'hello, world!'
});
console.log('输出结果:');
console.log(q);
试题二:
// [mf: string-template]
// 类型: xz
// 时长: 15 分钟
// 姓名:
// 日期:
// 实现下面的 format 函数, 用于替换字符串模板中对应的占位符.
// 提示:
// 运行代码快捷键: Ctrl + S
function format(template, data) {
//思路:正则匹配 + 提取
var str = template;
var keys = [];
var values = [];
for(var i in data){
if(data.hasOwnProperty(i)){
keys.push(i);
values.push(data[i]);
}
}
for(var item=0;item<keys.length;item++){
str = str.replace(new RegExp("{" + keys[item]+"}","g"),values[item]);
}
return str;
}
// 参考用例:
const output = format('{name}今年{age}岁了.', {
name: '狮子大哥',
age: 18,
});
console.log('输出结果:');
console.log(output);
// 输出结果参考
// 输出结果:
// 狮子大哥今年18岁了.
试题三
// [mf: async-task-queue]
// 类型: xz
// 时长: 30 分钟
// 姓名:
// 日期:
// 修改下面的 start 函数, 使 execute 对应的 id 按顺序打印.
// 提示:
// 运行代码快捷键: Ctrl + S
var queue = [];
var flag = false; //是否执行完
function exe() {
if (queue.length > 0) {
execute(queue.shift(id)).then(() => {
exe();
}).catch(console.error);
}
}
function start(id) {
queue.push(id);
if (!flag) {
exe();
flag = true;
}
}
// 测试代码 (请勿更改):
console.log('输出结果:');
for (let i = 0; i < 5; i++) {
start(i);
}
function sleep(duration) {
return new Promise(resolve => setTimeout(resolve, duration));
}
function execute(id) {
let duration = Math.floor(Math.random() * 500);
return sleep(duration).then(() => {
console.log('id', id);
});
}
// 输出结果参考
// 输出结果:
// id 0
// id 1
// id 2
// id 3
// id 4
参考文献
《JavaScript高级程序设计》
本文作者:
千千寰宇
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!

浙公网安备 33010602011771号