1.11 滴滴前端面经
1.11 一面
时长50min
- 自我介绍
- 问实习经历,学到了什么
- 埋点,追问怎么埋,为什么要埋。
- 国际化适配
- ...
- 问项目,问最有挑战的项目是哪个,然后问了几个别的,聊了蛮久
- 其实项目答得不是太好,很久之前的老项目了,不少线上的url都失效了...
- 问使用的react版本
- 答:16,有点老了。面试官表示确实,然后问我有没有用过新的,答:
- react生命周期
- 你刚刚提到了shouldComponentUpdate,为什么新版没有了呢(不知道)
- 谈谈js异步
- 讲了事件循环机制
- 追问,你刚刚提到了宏任务微任务,他们是怎么划分的呢
- 没答上
- 面试官解释:
- coding,解析url,转为目标对象,做出来了,但是面试官后面说一开始写得不优雅,要想好了再写,后面想想确实写得不好,没必要开一个map来标记对象有没有重复出现,完全多余。
let url = "http://www.domain.com/?user=jack&id=123&id=456&city=%E5%8C%97%E4%BA%AC&enabled"; // 实现一个函数: parseParam // 输入解析后的结果为: // { // user: 'jack', // id: [ 123, 456 ], // 重复出现的 key 要组装成数组,能被转成数字的就转成数字类型 // city: '北京', // 中文需解码 // enabled: true, // 未指定值得 key 约定为 false // } function parseParam(url: string) { const paramsArr = url.slice(url.indexOf("?") + 1).split("&"); const map = new Map(); return reverseToRes(paramsArr, map); } function reverseToRes(strArr: string[], map: any) { const res = {}; strArr.forEach((item) => { const [key, value] = item.split("="); // 判断key是否单次出现 if (map.get(key) !== undefined) { res[key] = [map.get(key), reverse(value)]; } else { res[key] = reverse(value); } map.set(key, value); }); return res; } function reverse(value: string) { return (`${parseInt(value)}` === value ? parseInt(value) : value) ?? false; } parseParam(url);
- 反问
- 问面评
- 答:挺好
1.12 二面
聊了项目和实习经历,确实感觉自己对于自己写的项目已经不那么熟悉了(虽然全是我写的),后面会花时间进行整理并且把失效的项目都重新进行部署。
OC
#滴滴##前端实习##面经#