⭐一面
没有一丝丝防备,上课一半电话就打过来了,是个小姐姐
- 自我介绍
- 技术栈(vue2 vue3简单做过项目 react只是简单学过)
- vue2随便挑一个底层原理来讲讲(选了响应式,详细地讲了一遍)
- 说说vue3的响应式原理,做一下对比(vue3的还不是很熟,只说了通过proxy实现,能弥补vue2中删除和通过key添加属性不能触发响应式的缺陷,深层原理没有了解)
- 打包工具了解哪些(webpack学习过,vite只是用过现成配好的)
- 说说你用webpack做过什么优化(打包速度:开启oneof、开多线程/多进程,生产环境请求速度:分包,这里举了我在实际项目中的分包优化,把面试官引向我的项目)
- 项目只做了webpack首屏优化吗(回答我的另一个长文章优化,提到了利用缓存、分块传输)
- 你提到的分块传输是懒加载吗(有一些区别,因为我还想让用户通过ctrl-f来进行全局检索,所以要分块加载,但不能懒加载)
- 你提到了利用缓存,详细说说浏览器缓存还有本地存储(强缓存协商缓存答了一遍,本地缓存我以为是在问我PWA的ServiceWorker)
- 问的本地缓存是指cookie webstorage这些,不过你提到了PWA就都说说吧(都答了一遍,并且说在项目中本地配置后跑过PWA,只是需要HTTPS所以不能发布上线)
- 做过登录鉴权吗(说了我的博客项目,用的单token进行鉴权)
- 说说ES6+(脑子有点短路,只答了块级作用域 proxy,小姐姐引导性的问了我几个,说到promise时我说深入了解过)
- 那就说说Promise底层实现吧(整个答了一遍,重点讲了then方法的实现,链式调用和promiseA+要的判定条件)
- 再说说闭包和模块化(经典八股,模块化讲了闭包、catch块、IIFE、ESM)
- 反问(面试流程:2 + 高管 + HR 四轮面试,流程时间:不确定,投的人是不是很多,每天大概有多少面试:小姐姐说今年人很多,她一个人已经面了四十多个人了,其他面试官也差不多,这还是第二批捞的)
⭐二面
这次面试也是小姐姐负责的
- 自我介绍
- 主要了解vue2框架是吧(对)
- 为什么一开始选择vue框架上手呢?(vue设计理念就是为了让新手更好上手,而且现在国内公司大部分用的还是vue)
- 路由懒加载具体是怎么实现的?(使用上来说的话,就是配置时动态引入组件。原理上来说的话,就是webpack打包时会根据我们动态引入的组件进行分包操作,这样在首屏的时候就不需要加载全部内容)
- 动态路由相关的API(一时间没反应过来,她说是动态挂载路由,我就说了我的后台项目中根据用户角色来实现路由权限的控制,其中就用到了动态路由,主要是通过addRoutes进行动态添加)
- 问项目中的留言墙
- 留言的随机位置是如何生成的?(随机数+定位)
- 如何判断重复位置(生成后对比)
- 那点位重复概率应该比较小,怎么判断不会被遮盖呢(我这个当时没有详细考虑,如果让我现在修改逻辑的话,考虑添加宽度信息,进行比对看是否被遮盖。后来想了想,应该回答只要left和top定位不在同一个点上,那么就不会被完全遮盖,只要鼠标放在对应的块上面,它的层级就会变到最高,而这里要实现的也不是留言的完全展示,而是一个热闹的景象,就和山崖边的同心锁或老树上的许愿条幅一般,聚集着的是人们的一个寄托。)
- 你是怎么想到做留言墙的(在博客里面感觉留一个这样的东西比较有趣)
- 考虑过其他一些实现形式吗(没太懂问哪方面的,小姐姐提示我说是UI设计方面的,我就说可以和qq空间朋友圈一样排布,也可以做瀑布流)
- 项目中的黑白主题变换是如何实现的(封装了一个切换主题的工具函数,内部通过修改css变量的形式来修改主题色,当前主题是在vuex中保存的,也会在localstorage做一个持久化,这样下次打开的时候就可以加载上次的主题)
- js操作css变量的底层原理,是借助库来实现的吗(没有,它原生就有这个能力)
- 有在网上了解其他一些css换肤方案吗?(没,因为需求简单,所以就采取的现在这个设计方案)
- 另一个电商项目
- 也是你的练手项目对吧?(√)
- 是PC还是移动?(H5)
- 用的什么UI框架(因为是练手项目,所以自己尝试着去把各个组件封装了一下,包括其中的轮播图、按钮之类的)
- 这些项目有用打包工具吗,是webpack吗?(是)
- 说说webpack常用的配置项(分了开发环境的优化配置以及一些常用的loader和plugin说了)
- 分包打包的chunk了解吗(了解,说了项目中首屏优化做的分包操作)
- websocket连接机制(先返回101表示切换协议,后续发送心跳包来检测是否存活,记得不清了,不知道这样答对不对)
- 说一下HTTPS中证书发放流程(不太懂这个发放流程是指什么,说了非对称加密交换对称密钥,此后通过对称加密通信)
- HTTPS中用到的加密算法有哪些(这个真不懂)
- 你了解的加密算法(常见的是计算哈希,有MD5,还有一个很长的叫什么H什么X什么256,记不太清了,项目中登录密码加密用的是MD5)
- 前端开发时常见的安全问题(说了文章上传时用第三方转义库进行特殊符号转义防XSS,还有get请求会有一个csrf的问题,所以只能用get做查询操作)
- svg和canvas的异同点(都是作图的,canvas放大会失真,svg是不会失真的向量图,还有svg我一般是设计拿来直接用的)
- 你了解的前端领域范围有哪些(传统的网站开发,PC和H5,以及一些nodejs前端设计到服务端的一些知识)
- 前端吸引你的地方在哪里(一开始选前端是因为所见即所得,可以给别人展示,成就感高)
- 函数式编程的概念(要做什么就写什么,把过程写出来,而面向对象编程就是对对象发出命令,让它去帮助我们完成事情)
- 柯里化的概念(调用函数时,可以先传入一部分参数,后续执行时再传入另一部分参数,可以通过bind实现)看看计算器案例算是柯里化吗
- react的设计思想(与MVVM不同,和vue3有点像,上手难度较高一些,只知道这些了)
- 你认为java的工作经历对前端岗位的帮助有哪些(有一些相通的设计思想,也对理解SSR有帮助,可以了解更多的业务逻辑)
- 结束,没有反问
同样面完没有后续了,间隔时间很长
#面经##大华浙江#