面试一: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. 爬虫技术实现空间相册采集器V.0.0.1版本

    一.    功能需求分析: 在很多时候我们需要做这样一个事情:我们想把我们QQ空间上的相册高清图像下载下来,怎么做?到网上找软件?答案是否定的,理由之一:网上很多软件不知有没有病毒,第二它有可能捆了很 ...

  2. docker镜像和容器的导出导入

    本文介绍docker镜像和容器的导入导出,用于迁移.备份.升级等场景.主要用到export.import.save.load四个方法. 原文地址:代码汇个人博客 http://www.codehui. ...

  3. Web框架本质及第一个Django实例

    Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 半成品自定义web框架 impor ...

  4. Storm入门(五)Twitter Storm如何保证消息不丢失

    转自:http://xumingming.sinaapp.com/127/twitter-storm如何保证消息不丢失/ storm保证从spout发出的每个tuple都会被完全处理.这篇文章介绍st ...

  5. python接口自动化-post请求4

    云盘登录实操案例: 代码参考: # coding:utf-8 import requests ''' https的请求相对于http安全级别高,需要验证SSL证书 import urllib3 使用这 ...

  6. timers模块

    timers模块 var timers = require('timers'); function A() { //将A对象注册到定时器里 timers.enroll(); //进行激活,如果不激活, ...

  7. python+selenium运行时,提示元素不可见

    python+selenium运行多次新增项目脚本(出错的元素通过by_id的方式定位),当第三次新增时报Message: element not visible的错误,加入等待时间,等页面加载完成, ...

  8. 洛谷-p4555

    题意:给你一个串,问你以i结尾的回文串加上以i+1开头的回文串的最大长度 解题思路:回文自动机板子题,记录下每次正着添加字符的时候,当前字符能够到达的最大回文子串的长度和倒着添加字符的时候,能够到达的 ...

  9. Nmon实时监控并生成HTML监控报告

    前面的博客介绍了服务端监控工具:Nmon使用方法,最近在github找到了一个nmon自动监控并生成HTML格式报告的工具:easyNmon,使用体验蛮不错的,这里介绍下它的安装及使用方法. 一.关于 ...

  10. linux系统设置cpu孤立

    介绍 针对cpu密集型的任务,消耗cpu较高,最好设置cpu亲和度,以提高任务执行效率,避免cpu进行上下文切换,浪费不必要的性能. 特定任务(进程/线程)需要独占一个cpu核心并且不想让其他任务(进 ...