面了45分钟左右,面试官评价还可以
- 自我介绍,问之前实习过吗?
- 问两个项目是做什么的?上线后的情况?// 直接打开屏幕共享介绍的,上线后的数据统计平台用的51LA
- 介绍项目是怎么实现的?
- 问网站是自己开发的吗?什么技术栈?
- 会用react吗?// 了解,写过一个小项目
- 介绍第一个项目,聊了项目中的一些功能怎么做的
- 介绍第二个项目,聊了项目中的一些功能怎么做的
- 又问了一遍react了解多少?// 看文档能写简单功能
- ant design 用过form table这些组件吗?// 用过table,看文档复制粘贴,配置数据源,简单的触发事件
- table 用过什么?
- 做过哪些比较复杂的业务? // 聊了两个,一个是设计模式相关的,一个bug排查修复相关的
- 事件循环机制 // 宏任务,微任务....
- 项目里面是怎么解决跨域的 // 讲了几种方案
- 会用git吗?平常代码怎么存的?
- 会用TS吗? // 用过,但用的比较浅
大概剩下30分钟在写这三道题,以及面试官在点评项目中的一些东西三个手写题:
对象属性合并
const obj = [
{ key: "a", val: 1 },
{ key: "a", val: 3 },
{ key: "a", val: 2 },
{ key: "b", val: 4 },
{ key: "a", val: 5 },
];
// result: {a: [1, 2, 3, 5], b: 4}
function transform(arr) {
let res = {};
arr.forEach((el) => {
if (el.key in res) {
if (Array.isArray(res[el.key])) res[el.key] = [...res[el.key], el.val];
else res[el.key] = [res[el.key], el.val];
} else res[el.key] = el.val;
});
return res;
}
console.log(transform(obj)); // { a: [ 1, 3, 2, 5 ], b: 4 }
防抖节流 // 写了一个简单的节流,没写优化版的节流
发布订阅模式 // 写完让优化一下三元运算符的写法,差点翻车
写代码过程中的一些闲聊:
- vue这些技术栈是自己学的吗?
- 会ES6的哪些新特性?
- 问第二个项目是想做成一个社区吗?// 就是一个小工具
- 那第二个项目和掘金,GitHub,GitLab这些有什么区别,侧重点?
- 如果不登陆,发布之后如何记录 原发布?
- 网站上线是不是花了不少钱?
- 业务场景比较复杂,能接受吗?前端也需要写业务逻辑?
- 评价感觉项目做的还行...
- vue原理熟吗?// 了解一点原理,没看过源码;面试官锐评:也就是会用....
- 有什么想问我的吗?
- webpack,vite哪个好用一点?
- 登录是怎么做的?
- jwt 的理解?
- 那你为什么不用 cookie,session之类的呢?
- 感觉基础还可以,但我也没问什么太多问题。。。
- gzip