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

#滴滴##前端实习##面经#
全部评论
羡慕 我url那个一行都写不出来然后二面被挂了
1 回复 分享
发布于 2023-01-28 16:12 福建
请问二面后多久有消息呢
1 回复 分享
发布于 2023-02-01 21:24 四川
url那个用reduce 一个纯函数解决了
1 回复 分享
发布于 2023-02-10 11:38 广东
老哥,宏任务和微任务怎么划分?
点赞 回复 分享
发布于 2023-01-30 18:00 日本
哪个部门呀
点赞 回复 分享
发布于 2023-02-20 23:18 湖北

相关推荐

评论
16
59
分享
牛客网
牛客企业服务