第一次面大厂居然是米子, 我的米
实习是在实习僧投的, 反馈很快, 下午打电话约的面试时间, 邮件确认
面试开始拷打项目, 问Vue框架相关的内容, 后面做手写题 ( 心累, 看了一下别人的面经, 猜测小米喜欢问JS基础多一点, 以为项目和框架问的较少, 结果JS基础没有怎么问...... 收到面试邀请的时候比较意外, 准备没有很充分 )
- 项目相关的
- 不用filter对数据如何进行筛选
- 向服务端发送请求用的什么工具
- 谁都可以向服务器发送请求吗?
- 什么是跨域?
- JSONP的工作原理是什么样的?
- 用CORS怎样解决跨域?
- 简单说一下Vue2的生命周期有哪些?
- keep-alive相关
- Vue 爷孙节点如何进行通信
- Vue学习时间有多久
- Vue2和Vue3之间发生的改变?
- Vue组件有个state多次在template中被用到, 如果改变了state10次, 页面渲染几次?
- 如何做到数据改变一次就渲染一次?
- 介绍一下TailwindCSS
- 浏览器打开多个窗口, 对同一个WebSocket地址进行连接能够同时得到数据吗?
- 问的差不多了, 开始做题: (没想到飞书的视频这么高级, 在桌面端能够直接弹窗让写代码, 窗口双方都可以编辑, 几乎没有代码提示)
- 使用CSS手写一个三角形, 这个小米考的比较多, 所以提前背了一下, 本来想多写几种的, 被打断施法说写一种就可以 .
- 面试官说: "既然你项目当中有树相关的内容, 那么就来写一个树的题目吧! ", (我内心狂喜, 刚刚才复习了BFS和DFS, 之前看同公司实习面经也有问到这个题, 这不直接拿下? ), 题目是使用JS将一个{"a.b.c": 123,"a.c": 456}形式的对象转换成一个嵌套的对象, 当时有点紧张, 面试官说树怎么怎么, 但是看示例输出没有node相关的结构, 然后当时就比较纠结是不是要判断已经存在的节点(脑子有点抽了), 而且连split方法也给忘记了, 寄. (题目简单还是下去实现了一下) (自己基础还是比较差, 关键时候想不起来)
- 反问, 互相了解
- 小米前端主要的工作是什么?
- 实习生工作的主要安排是什么?
- 实习的话, 学校那边如何安排?
- 期望的工作地点是哪里?
- 学习相关的
function transformInput(input) {
const result = {};
Object.keys(input).forEach((key) => {
// 将对象的key进行拆分
const splitKeys = key.split(".");
let current = result;
splitKeys.forEach((k, index) => {
if (index === splitKeys.length - 1) {
current[k] = input[key];
} else {
current[k] = current[k] || {};
current = current[k];
}
});
});
return result;
}
// Example usage:
const input = {
"a.b.c": 123,
"a.c": 456,
};
const output = transformInput(input);
console.log(output);