Skip to content

A2

1. 自我介绍,简述项目

您好,我叫付寅生,支付的付,因为寅时出生,所以叫付寅生。喜欢动漫、摄影和运动,最爱棒球,位置是一垒和投手。 目前就职于成都网思科平,做了威胁分析、robin文件检测,流量监控系统等,目前主要是负责EDR威胁响应系统,公司前端主要是webpack+vue技术栈。

2. React vue区别

  • react 和 vue 构建方式类似通过各自脚手架搭建用webpack打包,前后端分离的是现代前端框架

  • 数据是否可变

    • React整体是函数式思想,把组件设计为纯组件,状态和逻辑通过参数传入,在React中,是单向数据流,易记录状态变化,易追朔数据源
    • Vue是响应式思想,基于数据可变,对每个属性进行依赖收集,通过watcher来监听
  • 更新

    • React setState 进入重新渲染流程,可用shouldComponentUpdate钩子控制是否更新
    • Vue 当响应式属性变化时,有watcher派发nofity,触发patch进行前后virtual dom对比然后更新dom
  • 编码和操作

    • React 是all in js,jsx. 类的声明方式,易与ts搭配
    • Vue vue-template单文件,自己的模版语法,

3. virsualDOM实现

描述真实DOM的JavaScript对象,tag, props, children

4. Diff算法为什么是O(n)复杂度而不是O(n^3)

因为框架都树节点的比较做了很大的前提假设,不做过于复杂的操作,所以降低了复杂度。

  • 策略和前提假设,把O(n^3)复杂度问题转换成O(n)
  • 通过分层求异策略,对tree diff进行算法优化
  • 通过设置key的策略 对element diff进行算法优化

5. http code码?

  • 2xx 成功
    • 200 成功
    • 204 无内容
  • 3xx 重定向
    • 301 永久重定向
    • 302 临时重定向
    • 304 未修改,服务端不返回资源
  • 4xx 客户端错误
    • 400 坏请求
    • 401 未授权
    • 403 被禁止的
    • 404 未找到
  • 5xx 服务端错误
    • 500 内部错误
    • 503 服务超时

6. 移动端rem布局如何实现? 简述原理?

  • rem布局 vm + rem
  • hotcss、flexible

根据设备屏幕的DPR(设备像素比,又称DPPX,比如dpr=2时,表示1个CSS像素由4个物理像素点组成) 动态设置 html 的font-size, 同时根据设备DPR调整页面的缩放值,进而达到高清效果。

https://www.jianshu.com/p/b00cd3506782

7. JSbridge原理, js和native是如何通信的?

8. Rollup和webpack区别, treeshaking是什么?

  • Rollup 是一个 JavaScript 模块打包器
  • webpack 是一个现代js应用程序的静态模块打包器

通常用于描述移除 JavaScript 上下文中的未引用代码(dead-code)。它依赖于 ES2015 模块系统中的静态结构特性,例如 import 和 export

9. TCP三次握手、四次挥手的过程, get post请求的区别 ?

三次握手

客户端 -> SYN 同步序列编号0 -> 服务端
服务端 -> SYN + ACK -> 客户端 客户端 -> ACK -> 服务端

四次挥手

客户端 -> FIN -> 服务器 服务器 -> ACK -> 客户端 服务器 -> 关闭连接 也发FIN -> 客户端 客户端 -> ACK -> 服务端 确认 序号+1

10.静态文件的浏览器缓存如何实现?

https://juejin.im/post/5a098b5bf265da431a42b227

  1. 浏览器自带HTTP缓存功能,需要服务器设置相应响应头。
  • Cache-Control 缓存策略
  • Expires 绝对(过期)时间
  • Last-Modified 服务器最后一次修改时间
  • Etag 唯一的资源标识
  1. HTML5离线缓存 - 编写manifest文件
  2. PWA - Service worker (生命周期:注册、安装(第1次)、激活(第n次))
  3. LocalStorage
  4. CDN缓存

11.前端跨域方案

  1. jsonp 利用<script>、<img>、<iframe>等标签没有跨域限制的“漏洞”(历史遗迹啊)来达到与第三方通讯的目的
  2. window.name(window.domain) + iframe
  3. postMessage
  4. nginx
  5. node proxy server
  6. CORS
  7. websocket

12.http 请求包含哪些字段 分别是什么意思

  • General
    • request url
    • request method
    • remote address
    • status code
    • referrer policy
  • Request Headers
    • origin cors跨域
    • referrer 从哪个连接过来的
    • user-agent 客户端环境
  • Response Headers
    • access-control-allow-origin 跨域
    • date
    • content-type
    • content-length
    • server
    • Last-Modified
    • If-None-Match

13.js 有哪些数据类型 如何判断? null 和 undefined区别 应用场景?

  • 六种基本类型:Number、String、Boolean、null、undefined和Symbol,通过typeof
  • null表示 无 的对象,转换数值为0,而undefined表示无的原始值,转换数值为NaN

14.new String('a') 和 'a' 是一样的么?

typeof new String('a') // object
typeof 'a' // string

15.移动端如何实现下拉到底部 跟随移动 结束后回弹的动画?

16.移动端如何优化首页白屏时间过长 ?

  1. 降低请求量:合并资源,减少 HTTP 请求数,minify / gzip 压缩,webP,lazyLoad。
  2. 加快请求速度:预解析DNS,减少域名数,并行加载,CDN 分发。
  3. 缓存:HTTP 协议缓存请求,离线缓存 manifest,离线数据缓存localStorage。
  4. 渲染:JS/CSS优化,加载顺序,服务端渲染,pipeline。

17.ES6 generator函数简述

ES6早期异步解决方案, 是一个状态机,封装了多个内部状态。运行*函数返回一个遍历器对象

18.数组去重实现?

[...new Set([arr])]

19.js浮点数运算不精确 如何解决?

20.工作中最得意和出色的点, 头疼的点, 问题如何解决的

先讲一个小故事,团建活动之口口相传,作为执行者

  • 出色的点

    1. 原有需求上,提出自己的意见和理解
    2. 1200定宽 改最小宽1200的响应式布局
    3. 图表数据雷达图 改为 饼图
  • 头疼的点

    1. 技术难点、进程树关系图
    2. 搜索、整理、找组件,用three.js实现

21.为何换工作?

22.工作压力、企业文化等话题

平衡工作与生活,把学习当成生活的一部分,学会取舍与抉择

企业有自己独特的文化, 企业有独一无二的员工, 性格迥异的一堆人在共同的文化号召下为之一起努力。 这样的企业也是有魅力的, 我虽然做不到,但我能做到别人做不到的事。

共 20 个模块,1301 篇 Markdown 文档。