http1.0 和 http2.0 https 对比
- http1 文本形式传输 http2 二进制传输数据
- 连接复用:HTTP/1.0 采用“短连接”,请求和响应都需要单独建立和关闭一条 TCP 连接。而 HTTP/2.0 支持“长连接”,即可复用同一条 TCP 连接发送多个请求和响应。
- 多路复用:HTTP/1.0 每次只能发送一个请求,请求的顺序与响应的顺序相同。而 HTTP/2.0 支持多路复用,即可以同时发送多个请求,在服务端响应时按照请求的优先级和顺序依次返回。
- 请求头压缩:HTTP/1.0 的请求头信息没有压缩,可能会导致一些额外的网络开销。而 HTTP/2.0 使用了 HPACK 算法对请求头进行压缩,减少了网络传输的数据量。
- 服务器推送:HTTP/2.0 支持服务器推送,即在客户端请求的同时,服务端可以主动将一些与请求相关的资源推送到客户端缓存中,加速页面加载速度。而 HTTP/1.0 并不支持服务器推送。
- HTTPS:HTTPS 是在 HTTP 协议基础上加入了安全层的协议,通过使用 SSL/TLS 加密通信内容,确保数据的安全性和完整性。HTTPS 使用了公钥加密和对称密钥加密等多种技术,使得数据在传输过程中不容易被窃听或篡改。使用 HTTPS 可以保护用户的隐私信息,防止恶意攻击和数据泄露。
设计过复杂的功能点
你觉得你同时懂前后端有什么用?
- 需求评审阶段可以提前发现问题,避免后续一系列问题
- 开发阶段中更好的定位问题
pinia 和 vuex区别
- pinia更友好支持compositionApi
- Vuex使用全局单例模式,即在整个应用程序中只有一个Store实例,所有组件共享这个实例。而Pinia则为每个组件实例创建一个自己的Store实例
- vuex 修改状态我们会调mutations或actions中的函数 Pinia中我们只会调store实例 的属性或方法修改数据
实现两个大数相加
javascript
let a = "9007199254740991";
let b = "1234567899999999999";
function add(a ,b){
//...
}
实现代码如下:
function add(a ,b){
//取两个数字的最大长度
let maxLength = Math.max(a.length, b.length);
//用0去补齐长度
a = a.padStart(maxLength , 0);//"0009007199254740991"
b = b.padStart(maxLength , 0);//"1234567899999999999"
//定义加法过程中需要用到的变量
let t = 0;
let f = 0; //"进位"
let sum = "";
for(let i=maxLength-1 ; i>=0 ; i--){
t = parseInt(a[i]) + parseInt(b[i]) + f;
f = Math.floor(t/10);
sum = t%10 + sum;
}
if(f!==0){
sum = '' + f + sum;
}
return sum;
}跨域
前端配置 代理服务器 后端响应 请求头 cors nginx配置 反向代理
cors请求预检
前端微应用是一种将前端应用拆分成独立的小型应用,每个应用都可以独立部署、运行和维护的架构模式。以下是前端微应用的优缺点:
优点:
灵活性: 前端微应用可以独立开发、部署和运行,各个微应用之间相互独立,可以根据需要单独更新或扩展某个微应用,提高整体系统的灵活性。
可维护性: 拆分成多个微应用后,每个微应用的代码量和复杂度都会减少,便于团队成员理解和维护,同时也降低了修改一个微应用对其他微应用的影响。
性能优化: 每个微应用可以独立加载和运行,可以根据需求进行性能优化,提升用户体验。
技术栈独立: 每个微应用可以选择适合自己业务场景的技术栈,不同微应用之间可以使用不同的框架或语言,灵活性更高。
缺点:
跨应用通信: 不同微应用之间的通信可能会变得复杂,需要设计合适的通信机制来实现数据共享和交互。
项目搭建成本: 拆分成多个微应用会增加项目的搭建成本,需要设计合适的架构和规范,以及建立统一的脚手架工具来支持微应用的开发和部署。
路由管理: 多个微应用之间的路由管理可能会变得复杂,需要考虑如何统一管理路由和页面跳转,以保证用户体验。
总体来说,前端微应用架构适合大型复杂的前端应用,能够提高系统的灵活性和可维护性,但也需要在设计和实施上花费一定的精力和成本。
初中级开发
1.1 HTML&CSS
- 请说出你所知道的移动端适配方案及对比
媒体查询 ,流式布局,响应式布局,rem,百分比,(vw、vh)
- 说说你理解的语义化,你平时会怎么做来保证语义化?
- CSS盒模型
- CSS常见的布局方式有哪几种
- CSS如何实现一个半圆/三角形
- CSS如何实现动画
- CSS垂直水平居中实现方式
1.2 JS
- JS数据类型有哪些
- 如何解决ES6的兼容问题
- 请列举10个左右数组的原生方法
forEach includes map reduce join concat every some push splice slice
- var,let,const有什么区别
- 异步实现有六种方式,你知道哪几种
- 箭头函数与普通函数的区别
- 你知道的数组去重方式有几种
1.3 Vue
- Vue封装组件时,如何实现v-model。
- 父子组件传值有哪几种方式
- 说一下Vue的生命周期,一般在哪一步发请求
- Vue中computed和watch有什么区别
- v-if 和 v-show 的区别
- vue内置指令有哪些
- v-for 为什么要加 key
1.4 其他
- 列举平时常用的开发与调试工具
- 谈谈你平时如何做性能优化
- 聊聊你开发最成功的一个项目
- 使用过哪些第三方工具和插件
2.中高级开发
2.1 HTML&CSS
- 说一说你知道的CSS函数
- CSS伪类与伪元素区别
- 说一下减少DOM 数量的办法?一次性给你大量的DOM 怎么优化?
2.2 JS
- 谈谈你对JS函数式编程的理解
- 举出闭包实际场景运用的例子
- apply call bind 的作用与区别
- 手写函数:JS防抖节流、深拷贝
- JS原型和原型链
- JS事件循环机制(event loop)
2.3 Vue
- Vue2,Vue3 数据响应式原理
- nextTick 使用场景和原理
- Vue 修饰符有哪些
- Vue Diff算法原理
- Vue3对比Vue2有哪些新特性
- Vue要如何开发插件才能使用Vue.use方式调用
- 说下你的Vue 项目目录结构,如果是大型项目你该怎么划分结构和划分组件呢
2.4 前端工程化
- 打包工具:webpack,vite等打包工具。
- 代码检查:eslint,airbnb等代码风格校验
- 包管理工具:npm,yarn
- 项目管理工具:git,svn
2.5 其他
- 谈谈前端性能定位以及优化指标
- 说一下项目性能优化过程中,是怎么充分利用 Chrome 调试工具的?
- 从输入一个 URL 地址到浏览器完成渲染的整个过程
- babel 是什么,原理了解吗
用来将比较新的js代码转换为兼容的js代码,确保代码的可执行性
- Tree shaking 是什么,原理是什么
摇除不需要的代码,通过import export 筛选出没有被引用到的代码
- 简述一些提升项目体验的案例和技术方案
- 微前端的解决方案,以及各自的优劣
- 长列表渲染底层原理?业内有哪些解决方案?
- 页面(动画)卡顿原因分析
ssh、http、https 的默认端口都是什么
ssh[安全外壳协议]: 22 http[超文本传输协议]: 80 https[安全超文本传输协议]: 443
