(时间 2024.10.10 鹤*医)
总结,问的问题不多,感觉像是象征性的走个过场,技术问题问了几个,回答的也是比较一般。这家公司说新业务起步,需要不少的技术,但是给的钱是很少的,感觉是想招一些能干活,能加班,要的还不多的,项目结束就解散的那种。
面试流程
进公司 hr 拿来一张表让填写基本信息,填完两个人进来面我,一个应该是技术 leader,另一个应该是项目 leader
面试题过程
介绍自己
看你之前做过架构负责人,讲一下做架构的时候,对代码规范怎么看待的
回答:项目代码规范分为开发时规范 eslint+prerrer,提交,husky。 ...
代码编写的时候,有怎样规范的写法(对团队成员代码做过 code review),觉得怎样的代码时高质量
回答:代码封装,公共代码抽离,代码复用,代码简洁,可读性高,注释清晰,代码规范,代码健壮性,代码可维护性,代码可扩展性。 vue3 组合式 api,相同功能,写在一块。 。。。需要总结
(拓展)做项目架构的时候,是如何做技术选型,考虑哪些因素
一个页面 1 千行代码,合不合适(比方说页面是一个 form 表单,有很多个字段)
工作中遇到过很有挑战的问题
回答:难的点不是技术,是业务难点。回答的还是不太好
如果说,线上的系统出现白屏,你要怎么排查
回答:分情况,是一直白屏,还是首次加载白屏时间比较长。如果是一直白屏,远程线上,看是否有 js 代码报错,或者资源 404 之类的。
如果是首次加载白屏时间比较长,看是否有资源加载失败,或者接口请求失败,看是否有代码报错,看是否有代码阻塞,看是否有代码优化空间。
后面聊了一下 js
讲一下 apply,call,bind 的区别
回答:apply,call,bind 都是用来改变 this 指向的,apply 和 call 的区别是参数的传递方式不同,apply 是将参数以数组的形式传递,call 是将参数以单个的形式传递,bind 是返回一个新的函数,需要手动调用。
讲一下事件委托(大概讲一下原理)
我的回答是:比方说我们要有一个 ul,下面有很多 li,那通常情况下我们要给 li 绑定点击事件,每个 li 都要有一个 onclick,使用事件委托的话,其实我们只要在 ul 上绑定点击事件,也可以获取到点击的是哪个 li,再进行相应的处理,这样有利于节省内存(没有回答上原理。。。只是浅谈了一下应用)
常规回答:事件委托是利用事件冒泡的原理,将事件绑定到父元素上,当子元素触发事件时,会冒泡到父元素,父元素通过事件对象来判断是哪个子元素触发了事件,然后执行相应的处理函数。
(发散一下)事件委托有什么好处
- 可以减少事件绑定,提高性能,因为只需要绑定一次事件,而不是给每个子元素都绑定事件。
- 可以动态添加子元素,不需要重新绑定事件,因为事件是绑定到父元素上的,当子元素被添加到父元素中时,会自动触发事件。
- 可以避免内存泄漏,因为当子元素被移除时,不需要手动解绑事件,因为事件是绑定到父元素上的,当父元素被移除时,会自动解绑事件。
讲一下事件冒泡和事件捕获
平常开发中,ES6 用到比较多的方法
回答的很少,很不应该 至少 promise,async await 应该要回答上来。 解构,let cont,箭头函数,promise,...运算符,Class 类,模板字符串
(拓展)es6 新特性有哪些
- let 和 const 声明变量
- 箭头函数
- 模板字符串
- 解构赋值
- 默认参数
- 剩余参数
- 扩展运算符
- Promise 对象
- async/await
- Class 类
- 模块化
- Proxy 代理
- Reflect 反射
- Set 数据结构
- Map 数据结构
- Symbol 唯一值
- for...of 循环
扩展运算符 是深拷贝还是浅拷贝
回答:是浅拷贝,但是可以用来实现深拷贝。
ts 能在 js 中运行吗(ts 文件,引用到 js 中,可以执行吗)
回答:可以,但是需要配置 tsconfig.json 文件,将 target 设置为 es5 或者更高版本,将 module 设置为 commonjs 或者 amd,然后将 ts 文件编译成 js 文件,再引用到 js 中。
vue v-model 原理
vue2 中,v-model 是一个语法糖,它实际上是 v-bind 和 v-on 的结合,v-bind 绑定的是 value 属性,v-on 绑定的是 input 事件,当 input 事件触发时,会更新 value 属性的值,从而更新绑定的数据 vue3 modelValue emit('update:modelValue', value)
.sync 修饰符 原理是啥
.sync 修饰符是 Vue.js 中用于简化父子组件之间双向数据绑定的语法糖。通过在子组件的 props 中添加 .sync 修饰符,父组件可以直接修改子组件的数据,而不需要通过事件的方式
watch 和 computed 区别
watch 是监听一个数据的变化,当数据发生变化时,会执行相应的回调函数,
computed 是计算属性,当依赖的数据发生变化时,会重新计算属性的值,
computed 的值是缓存的,只有当依赖的数据发生变化时,才会重新计算属性的值。
watch 的值不是缓存的,每次都会执行回调函数
兄弟组件通讯,常用的方式
状态管理工具,event bus,vuex,pinia,父组件通讯
问题问完了。后面是负责人沟通
前端小组长多一点,他们现在只招前端开发。
期望薪资
加班是否接受 996 大小周
业务是否了解吗(要招 智校园区)
大小周情况 可以调休
项目比较大 有四期,五期
不打卡,时间比较自由。
了解一下成员情况
现在有三四个前端,计划招 5 个前端,10 个后台。组成四五十人。