秋招面试复盘(第五家了)

139 阅读6分钟

(时间 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,再进行相应的处理,这样有利于节省内存(没有回答上原理。。。只是浅谈了一下应用)

常规回答:事件委托是利用事件冒泡的原理,将事件绑定到父元素上,当子元素触发事件时,会冒泡到父元素,父元素通过事件对象来判断是哪个子元素触发了事件,然后执行相应的处理函数。

(发散一下)事件委托有什么好处

  1. 可以减少事件绑定,提高性能,因为只需要绑定一次事件,而不是给每个子元素都绑定事件。
  2. 可以动态添加子元素,不需要重新绑定事件,因为事件是绑定到父元素上的,当子元素被添加到父元素中时,会自动触发事件。
  3. 可以避免内存泄漏,因为当子元素被移除时,不需要手动解绑事件,因为事件是绑定到父元素上的,当父元素被移除时,会自动解绑事件。

讲一下事件冒泡和事件捕获

平常开发中,ES6 用到比较多的方法

回答的很少,很不应该 至少 promise,async await 应该要回答上来。 解构,let cont,箭头函数,promise,...运算符,Class 类,模板字符串

(拓展)es6 新特性有哪些

  1. let 和 const 声明变量
  2. 箭头函数
  3. 模板字符串
  4. 解构赋值
  5. 默认参数
  6. 剩余参数
  7. 扩展运算符
  8. Promise 对象
  9. async/await
  10. Class 类
  11. 模块化
  12. Proxy 代理
  13. Reflect 反射
  14. Set 数据结构
  15. Map 数据结构
  16. Symbol 唯一值
  17. 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 个后台。组成四五十人。