# 安装依赖
npm install
# 执行测试
npm run test
对于一个复杂的 web 应用来说,把多条同类型的异步请求合并成一条异步请求,是一个常见的提高性能的方式。 假设有接口 getUserById , getUserByIds ,在系统各处被使用。
- getUserById 接受 用户 id 作为参数,发起 XHR 按 用户 id 查询对应的用户详情
- getUserByIds 接受 用户 id 数组 作为参数,发起 XHR 按 用户 id 数组 查询对应的用户组详情
function getUserById(userId) {
return fetch(`/api/user/${userId}`).then(resp => resp.json());
}
function getUserByIds(ids) {
return fetch(`/api/users/${ids.join(',')}`).then(resp => resp.json());
}
这时候我们希望能做如下优化:
- 当同时调用多个 getUserById 函数时,自动把它们合并成一个新的请求 getUserByIds ,合并处理。一次返回所有结果。
- 设计一个缓存,当再次调用之前调用过的 getUserById(1) 时,从缓存中取之前查到的结果。(不考虑服务端的数据更新问题)
- 考虑请求失败时的情形。
<div id="main" data-x="hello">Hello<span id="sub" /></div>
这样的一串字符串变成如下的一棵树,考虑尽可能多的形式,比如自闭合标签等。
{
tag: "div",
selfClose: false,
attributes: {
"id": "main",
"data-x": "hello"
},
text: "Hello",
children: [
{
tag: "span",
selfClose: true,
attributes: {
"id": "sub"
}
}
]
}
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。
注意你不能在买入股票前卖出股票。
示例
输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例 1:
输入: 1 1
/ \ / \
2 3 2 3
[1,2,3], [1,2,3]
输出: true
示例 2:
输入: 1 1
/ \
2 2
[1,2], [1,null,2]
输出: false
示例 3:
输入: 1 1
/ \ / \
2 1 1 2
[1,2,1], [1,1,2]
输出: false