前言
大家好呀,博主最近在找工作,也是经历了一波面试的过程,现在想给目前被吊打的自己来一次阶段性总结,希望对自己和大家有所帮助~
由于博主长得太帅很容易被人记住(bushi,所以此处就不特地放出公司名字,统一用 A,B,C,D 等等来代替。这里的面试题可能有些遗漏的,不过我能记住的才是精华,大家看看就好。我是不会告诉你们有中大厂但是我面试失败了的 QAQ...
面试过程
这里就只放一些面试题目,相信各位都能随便答出来,后续有时间我再出一版带答案的面经~
- 公司 A
- 介绍一下浏览器从输入 URL 到页面展示的过程?
- 分我可能抓错了重点,疯狂说浏览器缓存方面的内容,而面试官一直问我渲染方面的内容,比如 DOM 树,CSSOM 树等...
- 说一下回流和重绘?
- 了解浏览器分层吗?
- 是指的 z-index 吗?不是。那我不了解。(该死,写这段文字的时候想扇自己两巴掌)
- 说一下深浅拷贝的区别?
- Vue2 和 Vue3 的区别?怎么实现的双向数据绑定?
- Vue2 和 Vue3 中 v-model 有什么不同?
- 你在使用 Vue3 的过程中使用过 watchEffect 吗?它有什么副作用?
- 题我到现在也不太理解是什么意思?评论区有没有大神告诉我一下?我当时答不上来,现在想就算不知道也应该把 watch 和 watchEffect 的区别说一通。
- 说一下父子组件之间传值的方式?
- 说一下 es6 有哪些新特性?
- 有多个 promise 请求如何写代码比较合适?
- 公司 B
公司 B 是电话面试,问了我两个问题:
- 不设置固定的长度,将一个 div 的长宽比设置为 1 : 1.65 的方法?
- 如何不通过 js,直接用 css 获取 HTML 标签中的属性值?
- 公司 C
- 说一下防抖和节流的区别?
- 说一下深浅拷贝的区别,如何实现深拷贝?
- 说一下 Vue 中组件间传值的方式?
- 说一下 Vue2 的生命周期?
- 说一下父子组件中生命周期从创建到销毁的执行顺序。
- 为什么 Vue2 中直接用数组的下标修改它的值不能引起页面更新?有哪些解决的办法。
- 这个公司问的太入门了,我着实是记不起来了...
- 一个机试题,写一个用于展示和操作树形数据的 tree 组件,每个节点都有一个新增和删除按钮。
- 公司 D
- 说一下 BFC 是什么?
- 如何让一个 div 盒子在页面中居中。
- 说一下 Vue2 和 Vue3 的区别?
- 详细说一下 Object.defineProperty 的实现方式。
- 说一下 Vue 组件间传值的方式有哪些?
- inject 和 provide 是怎么使用的?
- 说一下 js 的事件循环机制。
- 说一下深浅拷贝。
- 说一下 js 有哪些基本数据类型,如何判断 js 的数据类型?
- 说一下 instanceof 的实现原理?
- 说一下原型和原型链。
- 说一下闭包是什么?闭包的使用场景有哪些?
- 介绍一下浏览器的本地存储方式有哪些?
- 说一下 es6 有哪些新特性?
- 说一下 Promise。
- 说一下 Promise.all 和 Promise.race 的区别?
- 说一下 es6 中 ?? 和 ?. 的用法?
- 面试官画了一个树的结构,问我怎么写出这个组件。
- 算法题:一个一维对象数组,每个对象包含一个 key 为 id 的值和一个 key 为 pid 的值,如何将 pid 与 id 数字相同的对象放入该 id 所在对象的 children 数组当中,并简化原数组,删除已在其他对象的 children 数组中的顶层对象?
- 其他公司
还有一些公司问的都是项目中的一些细节,以及穿插着部分常见面试题,比如:
- 说一下 Promise.all 和 Promise.finaly 的作用?
- 如果让你自己实现 Promise.all,你会怎么写?
- 了解 https 吗?它和 http 的区别是什么?
- 说一下 Vue2 和 Vue3 实现数据双向绑定的原理。
- 你喜欢看源码,看过哪些项目的源码?最近学到的一个源码知识是什么。
总结
在写这篇文档的过程中,我渐渐发现距离当前时间越久的题目以及对我来说越简单的题目越难记起来,相反,那些刚面试过不久的或者对我的知识储备造成挑战性的问题很容易记起来。总的来说,由于我面试前没有做什么准备,一开始的几次面试几乎是帮我复习以及重新学习的过程。为了应对这种情况,个人觉得还是要多多学习,随时总结,才能丰富自己的知识储备,更好的应对挑战。
实践是检验真理的唯一标准,我们不要畏惧困难,只有通过面试这个过程才能更好地查漏补缺。很多面试题都是重复的,我们面的多了,被问得多了,才能熟能生巧,化被动为主动,成为一名让面试官闻风丧胆的选手。