记一次面试经历
一面:
1.有了解那些数据结构?用js写过链表和二叉树吗?
2.实现左边输入框自适应,右边按钮宽度固定(写代码)
3.写一个 sleep 函数
4.promise 是什么?promise.all的使用方法
8.Vue的响应式原理
追问:用 Object.defineProperty 实现一个功能:将输入框的值展示在div里,实现双向绑定
// es5
let data = {
text: ""
};
search.addEventListener(input, (e) => {
data.text = e.target.value;
})
Object.defineProperty(data, text, {
set(val) {
button.innerText = val;
},
get(key) {
}
})
// es6
let data = {
text: ""
};
let dataProxy = new Proxy(data,{
get(target,key){
if(key === text){
target[key] = _val
}
},
set(target,key,val){
target[key] = val
if(key == text){
button.innerText = target[key]
}
}
})
search.addEventListener(input, (e) => {
dataProxy.text = e.target.value;
})
6.补全代码:
var obj = {
name: byte,
last: dance,
email: [email protected],
id: 1
}
function getParams(obj, kes) {
...
}
var user = getParams(obj, name last email)
// output
// { name: byte, last: dance, email: [email protected] }
当时的回答:
function getParams(obj, kes) {
let arr = kes.split(" ");
let o = {};
arr.forEach((item) => {
o[item] = obj[item];
})
return o;
}
追问:有了解复杂度吗?
7. arguemnts是数组吗?怎么转为数组?
8. peventDefault干什么的,stopPropagation呢?
9. 有了解那些HTTP状态码?
追问:403,206,405呢?
10. HTTP2.0了解多少?
11. 知道那些Web安全问题,如何防护?
12. cookie sessionStorage localStorage的区别?
13. 如何指定歌曲播放时间(看项目问的)?
答:audio.currentTime
14. es6用过哪些?class了解过吗?继承能写出来吗?
15. rem怎么用?
16. 跨域是什么?如何实现跨域?
答:Jsonp,CORS,postMessage
追问:还有呢
17. Vue父子组件如何通信,兄弟组件呢?
19. 大学有学习过相关计算机课程吗
答:c语言等基础课
二面:
- 介绍一下你的项目
- 项目有哪些亮点
- 项目的reset.css(全局的css)主要做了哪些?
- eventHub发布订阅添加 once (只触发一次) 如何实现?
- 用 es5 实现数组的 flat 方法
- promise.all 怎么用,如果要实现三个请求一起发送,但是不关心结果怎么写?
- 有做过资料库方面的吗?(learnCloud 和 七牛加的戏)
- 项目遇到哪些问题,怎么解决的?
三面:
- 对项目有想过优化吗,怎么优化?
- 关于项目你觉得还需要那些改进
- 技术上有什么规划,最近在学习些什么(一二三四全都问了)
- 选这三个项目有什么用意(自己加的戏)
- 平时怎么学习的,有人带吗? 为什么选择材料?为什么想学习前端?(一二三面都问)
四面:加面
- 写这些项目有什么背景(介绍一个项目然后提问)
- 平时动画用那些技术;如果写一个时针动画,CSS怎么实现?
- setInterval有延迟怎么解决(Js写动画加的戏)
- svg用过吗,path写过没
- rem与em对比
- vw的兼容性了解吗?手机端的兼容性是怎么样的?
- Vue1.0 和 Vue2.0有哪些改进,在演算法上面?如何对比虚拟DOM?
- 微信小程序相对于html5渲染有哪些优势
- Vue源码看过没?
- Vuex是什么,怎么用?
- Vue 和 React对比,React有虚拟DOM吗
- 有关注些那些前端的知识呢,最近有那些新技术?hybird,flutter 桌面程序有了解吗?
总结:
一面以基础为准,二面写代码,问项目,三面以项目为准,为什么写,怎么写,遇到什么难题,怎么解决的,有什么收获,怎么优化,四面深入问,考察学习深度与广度,考察是否真的感兴趣,平时是否有关注技术热点。
最大的收获其实就是在面试的过程中所作的准备和思考,有些问题平常可能不容易发现的,但是面试官问了就知道自己缺在哪里了,然后下来查资料补补,多复习形成长期记忆,四面的回答感觉并不好,本来就像是一场梦,心里还是要有点B数的,所以静等结果,调整心态;应当是有愈挫愈勇的心态,继续投简历,继续反思,继续学习,打怪升级,让暴风雨来得更猛烈些吧。
So,Keep calm and carry on!
仅做记录,不代表我就会
2019-3-13 已凉
推荐阅读: