当前位置: 首页 > 面试经验 >

1.11 滴滴前端面经

优质
小牛编辑
162浏览
2023-03-28

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

#滴滴##前端实习##面经#
 类似资料: