面试题(持续更新)

387 阅读6分钟
小程序热启动及冷启动?

www.jianshu.com/p/056d3e1a8…

冷启动:如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动,会调用onLoad
热启动 :如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。 

什么时候销毁小程序:如果小程序占用的内存过高或者小程序切入后台超过5分钟以上没有操作,那么微信会销毁小程序

onShow()不管冷启动还是热启动都会调用
小程序如何统一处理登陆?

blog.csdn.net/yyjjyysleep… 重写onShow方法

如何保持代码风格统一?

www.jianshu.com/p/b80a52377…

Eslint  代码规范检查
pitter  代码格式化插件
husky   git钩子,可以执行自己的操作,防止一些问题commit
commitlint  commit规范
用过哪些eslint插件?
名称作用
eslint-plugin-import这个插件意在提供对ES6+ import/export语法的支持,有助于防止你写错文件路径或者引用的变量名。
eslint-plugin-import-helpers在模块导入顺序中强制执行可配置约定
eslint-plugin-promise这个插件意在通过代码风格检测让开发者养成较好地使用promise的方式(最佳实践,best practices)。比如在对promise使用了then之后会要求你加一个catch捕获下异常,
eslint-plugin-reactwww.npmjs.com/package/esl… www.jianshu.com/p/339bdb463…
eslint-plugin-jsx-a11y一些 jsx 的 rules 规范
github.com/jsx-eslint/…
eslint-plugin-react-hooks不要在循环,条件或嵌套函数中调用 Hook
只在 React 函数中调用 Hook
eslint-plugin-vueeslint.vuejs.org/rules/
首屏及白屏时间优化?

blog.csdn.net/z9061/artic… segmentfault.com/a/119000000…

白屏时间 = 地址栏输入网址后回车 - 浏览器出现第一个元素
首屏时间 = 地址栏输入网址后回车 - 浏览器第一屏渲染完成

首屏时间优化:
    服务端渲染 缓存
    图片懒加载
    图片大小
    js大小
    
可以使用工具,也可以在chrome中输入Performance.timing

performance

react-router模式及原理

www.jianshu.com/p/d991a4a55…

  • createHashHistory: 主要通过hash来实现,监听hashchange方法
  • createBrowserHistory: 通过html5里面的history,监听popstate方法,只有浏览器会触发
  • createMemoryHistory:node环境下:,主要存储在memeory里面

export和commonjs的区别

zhuanlan.zhihu.com/p/71098263

IM聊天

kdocs.cn/l/cuRpXHrf3… 图片预加载 blog.csdn.net/weixin_3040…

// Preload
preloadImage() {
    const imgList = [
        require('@/assets/imgs/error.png'),
        require('@/assets/imgs/ticket_bg.png')
    ];
    for (let i = 0; i < imgList.length; i++) {
        const newIMG = new Image();
        newIMG.src = imgList[i];
    }
}

//Prefetch
<link rel="prefetch" href="static/img/ticket_bg.a5bb7c33.png">

图片上传进度交互

// 设置请求头
let config = {
    headers: {
    'Content-Type': 'multipart/form-data'
    },
    onUploadProgress: (e) => {
        console.log('原生获取上传进度的事件: ', e);
        // 原生获取上传进度的事件
        if (onUploadProgress) onUploadProgress(e);
    },
};

对文件进行切片断点上传,失败重传, file.slice(i, 1024*50)

juejin.cn/post/705365…

BFC

www.bilibili.com/read/cv5005…

http1.0和http2.0的区别

  • 新的二进制格式(Binary Format),HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。

  • 多路复用(MultiPlexing),即连接共享,即每一个request都是是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。

  • header压缩,如上文中所言,对前面提到过HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。

  • 服务端推送(server push),同SPDY一样,HTTP2.0也具有server push功能。


作者:code小生助手
链接:juejin.cn/post/684490… 来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

wenku.baidu.com/view/08268d…

setState发生了什么

pingan8787.blog.csdn.net/article/det…

小程序中白屏问题

1、使用webview组件打开h5页时,需要先在b端平台配置域名

2、为了监测域名的合法性,需要下载一个校验文件,并放到域名的根目录下。这样,开放平台才能校验这个域名是不是属于你的。如果web-view组件中不使用配置好的域名,则web-view组件不会生效。

3、如果web-view使用的网页中如果使用了iframe,iframe的src中使用的域名也需要配置到域名白名单中

4、h5页必须是https的

setTimeout和requestAnimationFrame

www.cnblogs.com/liuxiaoru/p…

如何使a==1&&a==2&&a==3为true

重写valueOf segmentfault.com/a/119000001…

0.1+0.2!=0.3

二进制,相加溢出,四舍五入 zhuanlan.zhihu.com/p/95318421

浏览器缓存
涉及状态码304504
cache-control(http1.1)
expires
etag
If-None-Match
Last-Modified
If-Modified-Since

mp.weixin.qq.com/s/r-sTmNpft… www.jianshu.com/p/b5188d6dc…

xss 攻击

blog.csdn.net/qq_21956483…

cookie跨站
跨子域
跨站:cookie+ticket

blog.csdn.net/weixin_4353…

跨域

www.cnblogs.com/laixiangran…

vue2.0与vue3.0区别

www.jianshu.com/p/7c5393d32…

  1. Object.defineProperty 对数组和对象的表现一致,并非不能监控数组下标的变化,vue2.x中无法通过数组索引来实现响应式数据的自动更新是vue本身的设计导致的,不是 defineProperty 的锅。

  2. Object.defineProperty 和 Proxy 本质差别是,defineProperty 只能对属性进行劫持,所以出现了需要递归遍历,新增属性需要手动 Observe 的问题。

  3. Proxy 作为新标准,浏览器厂商势必会对其进行持续优化,但它的兼容性也是块硬伤,并且目前还没有完整的polyfill方案。

vue的mixin

cn.vuejs.org/v2/guide/mi…

websocket 握手

chrome版–新版 blog.csdn.net/QQ729533020…

必须是有效的http request 格式; 
HTTP request method 必须是GET,协议应不小于1.1 如: Get / HTTP/1.1;

必须包括Upgrade头域,并且其值为”websocket”
必须包括”Connection” 头域,并且其值为”Upgrade”
必须包括”Sec-WebSocket-Key”头域,其值采用base64编码的随机16字节长的字符序列
如果请求来自浏览器客户端,还必须包括Origin头域 。 该头域用于防止未授权的跨域脚本攻击,服务器可以从Origin决定是否接受该WebSocket连接
必须包括”Sec-webSocket-Version” 头域,当前值必须是13
可能包括”Sec-WebSocket-Protocol”,表示client(应用程序)支持的协议列表,server选择一个或者没有可接受的协议响应之
可能包括”Sec-WebSocket-Extensions”, 协议扩展, 某类协议可能支持多个扩展,通过它可以实现协议增强
可能包括任意其他域,如cookie.

nginx 匹配优先级

www.cnblogs.com/cangqiongbi…

nginx 重定向

keep-alive原理

segmentfault.com/a/119000001…

webpack相关面试题

zhuanlan.zhihu.com/p/44438844

module\chunk\bundle关系

blog.csdn.net/MRlaochen/a…

typeof原理

原理是这样的, 不同的对象在底层都表示为二进制, 在 JavaScript 中二进制前三位都为 0 的话会被判断为 object 类型, null 的二进制表示是全 0, 自然前三位也是 0, 所以执行 typeof 时会返回“object”。


-----------------------知乎-------------

webpack流程,jsx编译,vue 编译。

style-loader\css-loader的区别

www.jianshu.com/p/d2470f719…

promise.all、promise.race的实际应用

promise.all 提交表单时调用多个接口 www.cnblogs.com/coderzzw/p/…

promise.race 超时情况设置超时时间提示 www.zhihu.com/question/67…

promise then的第二个参数和catch的区别

www.jianshu.com/p/9c93f55cd…

reack hooks用到了哪些

window上的i

ssr选型

样式题

头像遮盖 ( () () ) 第一个头像层级最高

BFF

微前端


----------字节---------------

跨域时携带cookie

withCredential = true blog.csdn.net/chjj0904/ar…

组件库

dumi+mdx zhuanlan.zhihu.com/p/196758730 zhuanlan.zhihu.com/p/110381664 www.mdxjs.cn/


实现链表+翻转链表

blog.csdn.net/zhongqw_00/…

im如何保证消息顺序

juejin.cn/post/684490…