图森未来前端一面
自我介绍
tcp三次握手
http长连接和短链接的区别
怎么判断长连接 connec:tionkeep-alive字段
osi七层模型,以及会话层的作用(不会)
实习的项目:
主要讲了断点续传
worker的postMessage会拷贝文件(不清楚,面试官说的)
promise看输出(让我讲了一下原因)
new Promise((resolve, reject)=>{
console.log("1")
resolve()
}).then(()=>{
console.log("2")
new Promise((resolve, reject)=>{
console.log("10")
resolve()
}).then(()=>{
console.log("20")
}).then(()=>{
console.log("30")
})
}).then(()=>{
console.log("3")
}).then(()=>{
console.log('4')
}) 实现一个retry函数
假设有一个异步获取数据的请求每次都在1000ms后失败, 报错“server unavailable”。
function fetchData() {
return new Promise(function (resolve, reject) {
setTimeout(function () {
console.log('promise')
// resolve('success')
reject('server unavailable')
}, 1000)
})
}
//假设我们最多重试3次就不再尝试发送该请求,每次重试间隔100ms。
// parameter #1, the function to return a Promise
// parameter #2, the max retry times
// parameter #3, the delay between each attempt
retry(fetchData, 3, 3000)
function retry(fn, count, delay) {
let reCount = 0;
let retryFn = function () {
return new Promise((resolve, reject) => {
fn().then(res => {
resolve(res)
}).catch(e => {
reCount++;
if (reCount < count) {
setTimeout(retryFn, delay)
}
})
})
}
return retryFn();
} 生成括号(回溯)
coding:
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
function createF(n) {
let res = []
let r = n;
let l = n;
function back(str,l, r) {
if(str.lenght === 2*n) res.push(str)
if(l>0) {
back(str+'(', l-1, r)
}
if(r > l) {
back(str+')', l, r-1)
}
}
back('', l , r)
return res;
}
let t = createF(3)
console.log(t)#图森未来##面试题目#
查看15道真题和解析