拼多多二面凉经

怎么就这么巧,我在国际机票实习,他在国内机票干过,于是问了好多ctrip的问题,还想看看我有没有读过内部框架代码,痛苦的几十分钟啊 =。=

问题基本都是让我尽可能多说实现方法 但我就是说不出他要的那一个

前端动画实现方式

  • setTimeout、setInterval、requestAnimationFrame;
  • CSS Animation、Transition;
  • webGL;
  • Web Animation API (WAAPI)

// 面试官想让我说出来webGL或者WAAPI

前端异常监控

  • 重写console.error();
  • React: ErrorBoundary, componentDidCatch();
  • 监听页面error事件;

// 面试官想让我说出来error事件监听

window.onerror = (msg, url, row, col, error) => {
  console.log({
    msg,  url,  row, col, error
  })
  return true;
};

window.addEventListener('error', (msg, url, row, col, error) => {
  // 并不知道是404还是其他500导致的,还需要配合服务端日志才进行排查分析才可以。
  console.log(
    msg, url, row, col, error
  );
  return true;
}, true);

元素进入可视区域

  • content-visibility: auto;
  • element.getBoundingClientRect();
  • IntersectionObserver;

// 面试官想让我说出来IntersectionObserver

const callback = (entries) => { /*可见性变化时(进入/离开)的回调函数*/ };
const option = {
	threshold: 0, // intersectionRatio交叉比例
	rootMargin: 0, // 至boundingBoxd的偏移量
};

const io = new IntersectionObserver(callback, option);

io.observe(document.getElementByClass('listItem'));// 开始观察 元素是否到可视区

io.unobserve(element);// 停止观察

io.disconnect();// 关闭观察器

手机扫二维码登录

如何实现:二维码就是URL,扫码==GET请求,会自动发cookie带设备信息

那么,扫码验证之后 除了websocket如何实现页面刷新?

// 面试官可能想问的是SSE
全称是 Server-Sent Events,不同的是,WebSocket 是一种全双工通信协议,而 SSE 则是一种单工通信协议

const es = new EventSource("/sseApi");

es.onopen = e => console.log("open");

es.onmessage = e => console.log(e.data);

es.onerror = e => console.log("error");
  • SSE 使用 HTTP 协议,现有的服务器软件都支持。WebSocket 是一个独立协议。
  • SSE 属于轻量级,使用简单;WebSocket 协议相对复杂。
  • SSE 默认支持断线重连,WebSocket 需要自己实现。
  • SSE 一般只用来传送文本,二进制数据需要编码后传送,WebSocket 默认支持传送二进制数据。
  • SSE 支持自定义发送的消息类型。

// 面试官强调的就是断线重连

(其实后来还是三面了)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值