面试一: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前端<一>的更多相关文章

  1. 面试经验合集-Java后端<一>

    面试一:CDKHXJSYJS   时间:2018-12-29 周六 地点:航天科技大厦32楼   一 技术题目 <回忆版> 1.上下转型 2.Java异常:分类.处理.设计 3.二叉排序树 ...

  2. Java开发面试常见问题合集

    次面试事故 面试官:你看过哪些源码?我:都挺熟悉的面试官:对hashMap了解程度怎么样?面试官:那你能讲讲 HashMap的实现原理吗?面试官:HashMap什么时候会进行 rehash?面试官:结 ...

  3. Java高阶面试问题合集

    下面总结一下在Java面试中常用的一些问题,不具体解答,我只附上一些精彩的博文链接. Spring IOC AOP 底层原理 JAVA的反射机制和动态代理 Java反射机制和动态代理 多线程 Spri ...

  4. 2020大厂web前端面试常见问题总结

    本篇收录了一些面试中经常会遇到的经典面试题以及自己面试过程中遇到的一些问题.通过对本篇知识的整理以及经验的总结,希望能帮到更多的前端面试者. 1.web前端项目的结构是怎样的?文件有哪些命名规范? 项 ...

  5. Web 前端从入门菜鸟到实践老司机所需要的资料与指南合集

    http://web.jobbole.com/89188/ 2016 – 对于未来五年内Web发展的7个预测 2015 – 我的前端之路:从命令式到响应式,以及组件化与工程化的变革 怎么成为一名优秀的 ...

  6. web前端-面试经验总结

    这几次面试主要是冲着百度去的 面试1的主要问题: 笔试: 1.解释css盒子模型 2.常用选择器,以及优先级 3.B如何继承A 4.写一个闭包实例,有什么优点缺点 5.html5的心特性有哪些 6. ...

  7. web前端学习(二)html学习笔记部分(11)-- 没有标号记录的知识合集

    这一部分内容相对比较简单,就不按规矩排序了.(主要是网站上也没有这一部分内容的排序) 1.  html5的 非主体结构元素 学习笔记(1)里面记录过. 2.  html5表单提交和PHP环境搭建 1. ...

  8. web前端技术合集

    视频课程包含: 微服务精品课程包含:Ajax和Jquery基础入门视频.ajax教程.css视频教程.JQuery视频教程.MUI快速混合APP开发-视频.vuejs教程.极客学院HTML5全套教程. ...

  9. 【干货分享】前端面试知识点锦集04(Others篇)——附答案

    四.Others部分 技术类 1.http状态码有哪些?分别代表是什么意思? (1).成功2×× 成功处理了请求的状态码.200 服务器已成功处理了请求并提供了请求的网页.204 服务器成功处理了请求 ...

随机推荐

  1. mybaties xml 的头部

    config.xml的头部: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE config ...

  2. #034Python选修课第二届Turtle绘图大赛

    Pythonturtle库选修课作业 目录 目录 代码效果 题目要求 合作同学 程序实现 最初目标 实现方式 代码如下 代码效果 题目要求 具体内容可参阅课程教学网站或超星学习通. 按照2人一组,结对 ...

  3. codeforces div2 220 解题

    这套题我只写了a, b, c..  对不起,是我太菜了. A:思路:就是直接简化为一个矩阵按照特定的步骤从一个顶角走到与之对应的对角线上的顶角.如图所示. 解释一下特定的步骤,就像马走日,象走田一样. ...

  4. Django 使用mysql 创建项目

    一.安装 mysql 和 mysqlclient 1. 安装 mysql ,https://www.jianshu.com/p/07a9826898c0 2. pip3 install mysqlcl ...

  5. ValueError: too many values to unpack

    Error msg: 执行: python manage,py makemigrations 报错:Value: too many values to unpack 问题: django第一次数据库迁 ...

  6. JS 设计模式九 -- 装饰器模式

    概念 装饰者(decorator)模式能够在不改变对象自身的基础上,动态的给某个对象添加额外的职责,不会影响原有接口的功能. 模拟传统面向对象语言的装饰者模式 //原始的飞机类 var Plane = ...

  7. Spring Boot 集成Swagger

    Spring Boot 集成Swagger - 小单的博客专栏 - CSDN博客https://blog.csdn.net/catoop/article/details/50668896 Spring ...

  8. c提高第五次作业

    重写结构体嵌套一级指针老师和二级指针学生的代码 //结构体类型,每个导师有三个学生 typedef struct Teacher { char *tName; //导师 char **stu; //三 ...

  9. ftm国际化解决方案

    记录一下踩过的坑,在使用ftm:message的时候我发现这个的国际化是依赖于本地浏览器的语言环境的!关于自主设置这个语言的方法有如下3种:(个人建议使用第二种,可以更加灵活且有效!第一种我这边没有生 ...

  10. PHP7中的数据类型

    PHP中变量名→zval,变量值→zend_value.其变量内存是通过引用计数管理的,在PHP7中引用计数在value结构中. 变量类型: 头文件在PHP源码 /zend/zend_types.h ...