面试经验合集-Web前端<一>
2023-09-27 14:24:42 时间
面试一: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高级程序设计》
相关文章
- Web 前端颜色值--字体--使用,整理整理
- Web 前端攻防(2014版)
- Web开发技术的演变
- web开发的模式的介绍与身份认证
- web 前端常用组件【06】Upload 控件
- web 前端常用组件【04】Datetimepicker 和 Lodop
- web 前端常用组件【01】Pagination 分页
- Web前端:匾牌设计案例
- Web前端:Web前端开发工程师工作内容网页案例设计
- Flutter Web 开发实践与优化
- Eclipse项目中web app libraries和 Referenced Libraries区别
- Web前端学习笔记之JavaScript、jQuery、AJAX、JSON的区别
- Web前端学习笔记之jQuery基础
- 采用开源Web应用:先破除“盲目”和“偏见”
- Web前端性能优化教程:精简JS 移除重复脚本
- springboot中判断当前项目是否为web项目
- 【java web篇】Servlet执行流程与生命周期
- 尤雨溪对 2022 Web前端生态趋势是这样看的
- 政府安全资讯精选 2017年第十二期 中国网络安全漏洞披露平均效率远超美国; 美国美国国土安全部发布指令,要求联邦机构强化Web和电子邮件安全
- web前端面试问题总结
- Bootstrap 简介(Web前端CSS框架)
- 如何提升Web前端性能?
- python学习之Web静态服务器