面试经验合集-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高级程序设计》
面试经验合集-Web前端<一>的更多相关文章
- 面试经验合集-Java后端<一>
面试一:CDKHXJSYJS 时间:2018-12-29 周六 地点:航天科技大厦32楼 一 技术题目 <回忆版> 1.上下转型 2.Java异常:分类.处理.设计 3.二叉排序树 ...
- Java开发面试常见问题合集
次面试事故 面试官:你看过哪些源码?我:都挺熟悉的面试官:对hashMap了解程度怎么样?面试官:那你能讲讲 HashMap的实现原理吗?面试官:HashMap什么时候会进行 rehash?面试官:结 ...
- Java高阶面试问题合集
下面总结一下在Java面试中常用的一些问题,不具体解答,我只附上一些精彩的博文链接. Spring IOC AOP 底层原理 JAVA的反射机制和动态代理 Java反射机制和动态代理 多线程 Spri ...
- 2020大厂web前端面试常见问题总结
本篇收录了一些面试中经常会遇到的经典面试题以及自己面试过程中遇到的一些问题.通过对本篇知识的整理以及经验的总结,希望能帮到更多的前端面试者. 1.web前端项目的结构是怎样的?文件有哪些命名规范? 项 ...
- Web 前端从入门菜鸟到实践老司机所需要的资料与指南合集
http://web.jobbole.com/89188/ 2016 – 对于未来五年内Web发展的7个预测 2015 – 我的前端之路:从命令式到响应式,以及组件化与工程化的变革 怎么成为一名优秀的 ...
- web前端-面试经验总结
这几次面试主要是冲着百度去的 面试1的主要问题: 笔试: 1.解释css盒子模型 2.常用选择器,以及优先级 3.B如何继承A 4.写一个闭包实例,有什么优点缺点 5.html5的心特性有哪些 6. ...
- web前端学习(二)html学习笔记部分(11)-- 没有标号记录的知识合集
这一部分内容相对比较简单,就不按规矩排序了.(主要是网站上也没有这一部分内容的排序) 1. html5的 非主体结构元素 学习笔记(1)里面记录过. 2. html5表单提交和PHP环境搭建 1. ...
- web前端技术合集
视频课程包含: 微服务精品课程包含:Ajax和Jquery基础入门视频.ajax教程.css视频教程.JQuery视频教程.MUI快速混合APP开发-视频.vuejs教程.极客学院HTML5全套教程. ...
- 【干货分享】前端面试知识点锦集04(Others篇)——附答案
四.Others部分 技术类 1.http状态码有哪些?分别代表是什么意思? (1).成功2×× 成功处理了请求的状态码.200 服务器已成功处理了请求并提供了请求的网页.204 服务器成功处理了请求 ...
随机推荐
- Ubuntu 16.04 安装GIMP绘图软件
Ubuntu上比较好用的绘图软件,GIMP,安装方法如下: 终端输入 : sudo apt-get install gimp ,回车,输入密码,即可安装简单易行. 输入 :gimp ,启动程序.
- Quick Select算法
https://blog.csdn.net/Yaokai_AssultMaster/article/details/68878950 https://blog.csdn.net/mrbcy/artic ...
- df、du命令
EXT3 最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件 Ext3目前只支持32000个子目录 Ext3文件系统使用32位空间记录块数量和i-节点数量 ...
- 《.NET和Java之争》 读后感
原文地址:https://www.cnblogs.com/adalovelacer/p/dotnet-vs-java.html 这是博客园被推荐上首页的文章,本着好学的心态,点进去拜读... 我也不清 ...
- Vue (二) --- Vue对象提供的属性功能
--------------------------------------------不是井里没有水,而是你挖的不够深. 3. Vue对象提供的属性功能 3.1 过滤器 过滤器,就是vue允许开发者 ...
- LeetCode21—合并两个有序链表
方法一:这是我一开始的想法,将链表L2的各个元素与链表L1的元素进行逐一比较,将L2中的数据元素插入L1中的合适位置. 时间复杂度:O(m+n):空间复杂度:O(1) 1)首先,可能要对第一个元素进行 ...
- Nginx 常见问题
1. CreateFile() "C:\Users\zhang\Desktop\K\My Project\SSL-数字证书\Nginx配置\nginx-1.12.2/conf/nginx.c ...
- Java的String和StringBuilder
一.String 1.创建String对象的方法: String s1="haha"; String s2=new String(); String s3=new String(& ...
- element vue 表格编辑
https://xuliangzhan.github.io/vue-element-extends/#/editable/click1
- python3的字符串和字节
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分.文本总是Unicode(16进制) ...