cvte视频二面
面试问的问题依然比较基础:
- 介绍一下项目,项目里面做了哪些工作?
- 你觉得你的项目里面有哪些地方可以优化的?
- weabpack有了解吗?
- websocket和ajax有什么区别?
- 你们项目对web安全采取了哪些措施?
- 你平时是怎么学习前端的?
- 说收ES6里面的箭头函数有什么特点?
- html里面的meta里的属性uft-8有什么作用,说说utf-8,除了这个还有别的编码形式吗?
- 开始做题了:
题目1
function job1(cb) {
setTimeout(function () {
console.log(1);
cb();
}, 200)
}
function job2(cb) {
setTimeout(function () {
console.log(2);
cb();
}, 300)
}
function job3(cb) {
setTimeout(function () {
console.log(3);
cb();
}, 100)
}
实现一个线程池*
*@param {array} list 任务列表
@param {number} count 线程池中线程的数量 */
function queue(list, count) {
}
// 输出 1, 2, 3
queue([job1, job2, job3], 1)
// 输出 1,2, 3
queue([job1, job2, job3], 2)
function queue(list, count) {
//获取首先要执行的线程
const tempList=count>0?list.splice(count-1,1):[];
//改变线程的执行顺序
list=tempList.concat(list);
//Promise进行异步操作,reduce对list进行遍历操作
list.reduce(function(calu,cu,index){
return calu.then(function(){
//构建promise对象,返回异步执行的结果
return new Promise(function(resolve,reject){
//状态转换
cu(resolve);
})
})
//将calu对象转换为promise对象
},Promise.resolve())
}
题目2
/** * 将一个绝对路径简化
*在一个类 Unix 系统中, 一个点(.)表示当前路径, 两个点(…)表示上一层目录 *
比如,
输入 /Users/, 输出 /Users
*输入 /Users/./frank/…/…/Codes/, 输出 /Codes
*输入 /Users/…/…/frank/…/Codes//.//, 输出 /Codes
*输入 /Users//frankCodes/koa//././/…, 输出 /Users/frank/Codes
/ * @param {string} path
*@return {string}
*/
function simplifyPath(path) {
}
console.log(simplifyPath(’/Users/./frank/…/…/Codes/’))
console.log(simplifyPath(’/Users/…/…/frank/…/Codes//.//’))
console.log(simplifyPath(’/Users//frankCodes/koa//././/…’))
- 了解正则表达式吗?
- 你以后有哪些前端的学习计划?
招银网络电话一面
- 介绍一下项目,以及自己在项目里面做了哪些东西?
- css3的新特性?动画特效有了解吗?flex布局有哪些属性?
- 有了解ES6吗 ?有什么特性?
- 说说let和const的特点以及与var的区别?
- 举个例子说一下变量提升?
- 了解什么前端框架?
- react里面的props和state的区别?
- react里面的生命周期?
- react之间的路由是如何实现的?
- css 里面有哪些常用的选择器?选择器的优先级如何?
- vue和angular有什么特点?
- 说说什么是双向数据流?
- 你有什么要问的?