/** 1 MVVM的理解
model 数据模型 定义数据修改和操作业务的逻辑
view 视图 UI组件展现数据模型。
viewModel 监听模型数据改变 控制视图行为 处理用户交互,通过数据双向绑定,将view和model连接起来。 不需要开发者操作自动完成。
*/
/**2 vue简述生命周期
从创建到销毁的过程
创建前后
1 beforeCreate 没有data数据
2 created 初始化data数据
3 beforeMount dom挂载前
4 mounted dom挂载完成
5 beforeUpdate 虚拟dom更新之前
6 updated 组件dom更新
7 beforeDestroy 实例销毁之前
8 destroyed 实例所有东西解绑 监听移除
*/
/**3 v-show v-if
v-if 条件渲染 子组件的渲染和销毁 惰性 只有条件true才会渲染
v-show display block 和 none 切换
v-show 初始渲染开销 v-if 切换开销
频繁切换使用v-show
*/
/**4 组件间通讯
1 父子组件
props $emit
ref用在子组件上 指向就是实例组件 $childern $parent
2 隔代组件
$arrts v-bind
3 兄弟组件
$bus 通用 数据总线
vueX 通用 状态管理模式 store
*/
/**5 keep alive 可以是包含的组件保留状态
生命周期 active deactive
使用场景 列表 跳转 里面的详情 每次返回列表 不能重新渲染
*/
/** 6 如何实现双向数据绑定
1 监听器
Object.defineprotety 添加 get 和 set 方法
2 解析器
解析view中的模板指令 模板都替换成 数据 绑定数据监听函数
3 订阅者
当数据发生变化 触发解析器中的 更新函数
4 订阅器 发布订阅
对解析器和订阅器统一管理
*/
/** 7 对VUEX 的理解
状态开发管理
store
state 状态
getter 可以获取状态
mutation 更改状态
action 异步提交mutation
module 状态的拆分
*/
/**8 DNS工作原理
*/
/** 9 GET POST 区别
1 传输方式不同 url传输 和 请求体传输
2 安全性不同 post安全 url中 历史记录和缓存 很容易泄露
3 数据类型 get 阿斯科码和字符 post无限制
4 get无害 post 可能造成 重复提交表单
5
*/
/**10 http状态码
1 2开头成功 200 正确处理 201 请求实现 202 请求接收 不保证完成 204 206范围请求
2 3重定向 301
3 4开头 客户端错误 400请求头 403 服务器拒接 404 不存在
4 5开头 服务器错误 500 执行错误 501 服务器不支持的 503服务器无法处理 505 不支持请求
*/
/**11 css预处理的比较
less sass stylus
区别 变量
*/
/**12 优雅降级 渐进增强
优雅降级 先完成功能,在去兼容
渐进增强 先兼容低级
*/
/**13 输入url 显示页面发生了什么
1 输入URL
2 浏览器查看 浏览器缓存 系统缓存 路由器缓存 如果有就显示 没有就第三步
3 域名解析 DNS解析 (可以将域名和IP互相映射)
4 浏览器拿到IP 向服务器发起TCP 3次握手
5 成功之后浏览器向服务器发起请求
6 返回数据包
7 客户端收到响应
8 读取页面内容 解析html源码
9 生成dom树 渲染页面
*/
/**14 TCP 3次握手
1 客户端发送连接请求报文 syn位置为1 Sequence Number 序列号设置为x 进入 syn_send状态
2 服务器 收到报文 设置Acknowledgment Number 确认号为 x+1 同时自己发送给一个syn=1 Sequence Number 序列号设置为y 进入syn_recv状态
3 客户端收到后 设置Acknowledgment Number 确认号为 y+1 向服务发送 ack报文段
完成连接 传输数据 完成后 4次挥手
*/
/**15 xss攻击的了解
黑客在浏览器插入恶意js脚本 盗取信息 冒充操作
类型 1 反射型 url中
2 DOM型 前端js 安全漏洞
3 存储型 持久性 js代码长期保存 数据库中
盗取cookie 渗透内网 插入广告
防止1 一切用户输入加入验证
2 元素url请求加入 编码
3 白名单 验证 域名
4 使用csp 内容安全策略 定于白名单
5 cookie 设置只读
*/
/**16 csrf攻击 跨站请求伪造
利于网站权限校验
*/
/**17 浏览器
谷歌 火狐 苹果 欧朋
渲染引擎
js引擎 v8
*/
/**18 event-loop 时间循环
js执行机制 先执行 同步代码 在执行异步代码 异步代码 中先执行 微任务 在执行宏任务
*/
/**19 Promise
解决 嵌套函数过深 回调地狱 代码难以维护和难以理解
3个状态 pending 等待 resolve 完成 reject 拒绝
返回 promise 对象
缺点 无法取消
*/
/**20 深拷贝和浅拷贝
在js中包含
基本类型 (栈)string number null undefined boolean symbol
引用类型 (堆) 数据结果 object array function
指针存放在栈中,指针指向同一个堆内存中的对象
浅拷贝:创建一个新对象 有 原始对象的属性值的精确拷贝 如果是基础类型 就是 这个值 如果是 引用类型 拷贝的是指针(会影响另一个对象)
方法
深拷贝:在堆内存中开辟一个空间存放新的对象。
方法 1 JSON.string()然后JSON.parse() 无法拷贝原型链
2 第三方库
3 递归
*/
/**21 简历
1 你是谁
2 你做了什么
3 你哪方面比较厉害
个人信息 姓名 电话 邮箱 微信 博客
教育经历 学校 专业 入学时间 毕业时间
工作经历 1 公司名称 2 职位名称 3 在职时间 4 主要工作 (2-3个)
项目经历 做了什么事情 用了什么技术 解决了什么问题 (如果没有突出 就写 遇到的问题,排查 定位 解决。产出的东西,代码规范,设计的工具。)
专业技能 掌握的技术栈 了解(会使用,用过,了解其思想,没有深入了解)
熟悉 (大量时间 阅读源码)
精通 (深入了解源码,可以指导他人,大量实践经验)
社区 github 掘金 英语 兴趣爱好 沟通能力
简历排版 能1页就1页 留白原则(间隔) 标准字体(宋体) 模板 黑白蓝灰
排序 个人信息 工作经历 项目经历 专业技能 其他
*/
/**22 SSR 服务端渲染 和 客户端渲染的区别
spa 单页面应用 页面之间切换快,减少服务端压力,缺点是首页加载慢
sdu 搜索引擎优化
ssr 服务端渲染 有更快的响应时间 解决 搜索引擎优化。
*/
/**23 跨域
同源策略:(同域:协议,主机,端口号)一种约定,安全功能。
1 image src 可以跨域
2 link标签 href
3 script src
这3个跨域
跨域 问题 1 无法读取cookie localstage
2 dom 无法读取
3 ajax不能发送
方法 1 JSONP 原理 script src 执行回调函数 获取数据 有点 兼容性好,缺点 只能get
2 cors 跨域资源共享 w3c标准 原理 通过服务器 设置 header allow 可以跨域
3 通过修改 document
4 使用window.name
5 window.postman
*/
/** 24 em rem px 区别
px 像素 固定大小单位 1px = 屏幕分辨率最小单位
em 相对长度单位 1em默认16px font-size = 62.5 1em=10px
rem 出现解决em问题 用于自适应布局
*/
/** 25 防抖节流 解决用户频繁操作对内存消耗,服务器压力的方案
防抖 任务频繁触发 只有任务间隙 小于预设时间 才会触发
节流 持续触发的时候 一定时间内置调用一次 执行时间处理函数
*/
/**26 性能优化 雅虎35条军规
1 减少http请求 80%的时间都浪费在 资源的请求上
2 样式表css 放在head中 减少白屏时间 减少 css表达式
3 js脚本要放在页面底部
4 避免重定向
5 1合并js和css 2雪碧图 css通过位置获取图片 3服务器使用cdn 减少请求时间 4启用zip压缩
*/
/**27 宏任务 和 微任务
JS 是单线程的 一个人在操作
同步代码先执行
异步代码后执行
微任务先执行
宏任务后执行
*/
/** 28 定时器 不少于4毫秒 到时间后放入主线程
主线程结束之后 才能 去轮训 执行定时器 所以 定时器的时间会大于设定时间。
*/
/**29 微任务 典型代表promise
*/
/**30 HHTP缓存 加快资源的获取速度 提升用户的体验,减少服务器的压力
1 强缓存 不需要想服务器请求就可以获取
1 放到硬盘中
2 放到内存中
通过 请求头 响应头 设置 (过期时间)
2 协商缓存
*/
/**31 堆栈 数据类型
1 堆 通常指 2叉堆
2 栈
*/