面试问题记录

47 阅读2分钟
  1. 判断图片类型

    • 接口 请求头 accpet 字段
    • 响应头 content-type image/jpeg等等
  2. 通过Ip 区分不同用户

  3. 通过 UA记录

memoizedFn
    双哈希表记录- 
    应对传入值不固定的形式,通过 Map记录 id -- 
    
   或者 通过JSON.stringfy 序列化arguments 用作key


devDependencies: 开发环境的依赖,如果仅需要开发环境使用,可以放在这里,它不会被部署到生产环境中。
dependencies: 生产环境中所必须的,以确保生产环境中需要使用。
peerDependencies: 用于指定当前包依赖其他包的 版本范围, 它不会被自动安装,相反,它由当前包的父级安装。
optionalDependencies: 可选的依赖项,这些包安装失败不会导致整个包的安装失败

封装一个监控上报SDK

需要有一个接口 用于上报

捕获:

1. 监听全局未捕获的错误
    window.addEventListener('error',callback);
2. 监听多个事件,比如click\mousedown\keydown等等 来判断错误类型
3. 监测白屏
    document.elementsFromPoint 
    let centerElements = document.elementsFromPoint( window.innerWidth / 2, window.innerHeight / 2 )
    查看什么时候有内容 dom数组,如果一直没有返回值,可以细分一下16份 返回对应值
    
    jsError
    PromiseError
    


投放初期,页面性能比较差,进行 优化

图片、 接口、首屏、ssr、seo 、代码层面优化、 微信、客户端内嵌等几方面进行优化。

针对于低码、、

微前端、 微服务、 monorepo 经验

沙箱、微前端路由

路由机制

  • 将每个子应用作为组件接入,只托管子应用的根路由。

  • 二级以下的路由由子应用自己负责

  • 路由抢占问题

    1. 通过配置basename,框架根据用户当前访问的子应用,计算出basename,这样它设置之后可以保证应用路由之间互不影响。
 <BrowserRouter basename="/app">
  <App />
</BrowserRouter>
  1. 通过router map--映射 降低维护者理解成本,建立不同子系统的映射和管理。--Codeium

  2. csrf 从其他网站发起请求携带cookie 需要对应网站配置post跨站 预检请求允许携带cookie

  3. 异常捕获jartto.wang/2018/11/20/…

  4. 私域流量治理-- 微信朋友圈--分享海报

  5. 虚拟号治理

  6. 支付逻辑改版 豆包-- pc 吊起中台支付页面、b端app内嵌吊起JSBridge 公众号-通过接口请求拿到支付pay_url 跳转支付