CSS考点:
1:flex布局,有哪些属性,父子元素的属性以及呈现的效果,可以垂直居中,0 1 auto的含义,1个值,2个值,3个值
2:弹性布局:圣杯/双飞翼/上中下(footer自动向下适应)
3:垂直居中方案,文字垂直居中,元素垂直居中
flex、absolute+transform、position+负margin宽高、absolute 0000 + margin auto、line-height+text-align、display:table-cell+text-align+vertical-align
4:文档流,脱离文档流的属性
文档流:absulote、fixed 文字在后方图层
文本流:文字环绕效果float 同级图层
5:BFC 概念原理、常用与清除浮动
块格式化上下文、是一个独立的渲染区域,与外界不相关
float、absuloat/fixed、overflow除visiable之外、inline-block
6:清除浮动
BFC/clear:both
7:伪元素、伪类
伪类:link、visited、hover、active、nth-child、first-letter
伪元素::after :before 不占用dom属于主元素
.clearfix:after{
content: "020";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
8:优先级
!import>内联>id>class>tag
9:rem/em、移动端适配、1像素
设置一个viewport mate标签并且缩放都为1,根据视觉稿来决定分母,font-size = document.clientWidth/750 = 1rem常用
<meta name="viewport" content="initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
1像素:trasform: scale(0.5) 0.5px
10:层级上下文
background/border < 负z-index < 块级水平盒子 < float浮动盒子 < inline/inline-block水平盒子 < z-index auto/0 < z-index > 0
11:box-sizing盒模型
conten-box content即为宽度 (默认)
border-box content + padding + border 为宽度
12:过渡
transition: property duration timing-function delay;
13:transform 、动画、requestAnimationFrame
transform 使用硬件加速不重绘重排常用rotate、translate、scale
动画
demo 1s liner infinite
14:圆形 正方形 三角形
圆: border-radius
三角形:
width: 0;
height: 0;
border: 50px solid transparent;
border-left: 50px solid yellow;
15:less、sass
变量:
结构: @name: { 属性: 值 ;};
使用:@name();
函数
嵌套css
16:css3属性
rgba、border-radius、transform、transition、border-shadow、animition、flex、text-overflow:ellipsis
17:重绘重排
重排(回流):导致文档流发生变化
页面首次渲染
浏览器窗口大小发生改变
元素尺寸或位置发生改变
元素内容变化(文字数量或图片大小等等)
元素字体大小变化
添加或者删除可见的DOM元素
激活CSS伪类(例如::hover)
查询某些属性或调用某些方法
重绘:文档流没有变化
color、background-color、visibility
减少的办法:
少dom操作尽量只1次
使用documentFragment来做dom操作,操作完成之后再添加到文档流
添加class
先将display改为none,再做dom操作,之后再改为显示
JS考点:
es5基础
1:闭包、函数柯里化
闭包:通俗来讲是能够访问函数的内部变量,深层次来讲是当函数定义时就决定了他的词法作用域,并且保持着对词法作用域的引用。函数在当前作用域之外使用,就会形成闭包。
2:eventloop(浏览器、node)、微任务宏任务、promise/async/settimeout/process.nextTick
浏览器进程线程:https://imweb.io/topic/58e3bfa845e5c13468f567d5
3:==隐式转换 a == 1 && a == 2 && a ==3,==、===的区别
4:作用域、执行上下文、箭头函数
作用域在定义时确定,上下文在运行时确定,解释时确认this指向、词法分析、语法分析、作用域确认,执行时创建上下文代码,垃圾回收
5:bind/apply/call,以及polyfill
6:typeof instanceof 的区别以及原理,判断对象的类型
7:promise,有哪些常用方法,polyfill
8:xhr实现、取消fetch、取消请求
9:原型链、继承es5/es6、new操作符的实现 https://juejin.cn/post/6844903872847151112优缺点
https://github.com/mqyqingfeng/Blog/tree/master/articles/%E6%B7%B1%E5%85%A5%E7%B3%BB%E5%88%97%E6%96%87%E7%AB%A0
10:节流、防抖
11:cmd/amd/es6 module
12:事件委托:冒泡、捕获,第三个值的含义
13:深浅拷贝 deep(A,B,fn)
14:process.nextTick
15:map/filter/reduce
16:自定义实现一个event on emit off once
17:js设计模式(常用的)单例模式
18:solid原则
19:0.1 + 0.2 !== 0.3
20:document.ready和window.onload的区别 如何使用
21:遍历html dom节点
22:大文件断点续传
23:鼠标拖拽和跟随 原理区别
24:上传图片预览
25:模板字符串实现、queue链式调用
es6基础
1:箭头函数
2:set/map/weakset/weakmap
3:symbol
4:async/await
5:generator
6:import/require的区别
7:解构赋值
8:let/const/var/class
9:...运算符
10:array (fill of flat flatMap)
11:proxy
12:es6继承super extends
工程化:
1:webpack使用,原理,tabable,实现一个plugin or loader
entry/output/loader/plugin/module/chunk
接受参数 -> 实例化一个complier 在不同的钩子引入plugin -> loader开始解析代码进入entry开始层层遍历 -> 划分为不同的module -> 将所有的module整合为多个chunk代码块,输出到文件中
2:loader、plugin
loader: webpack默认只能解析s,所以需要采用不同的loader使得webpack能够解析不同的代码 常用的有postcss-loader/css-loader/babel-loader/json-loader/file-loader等等
plugin:对编译好的module进行进一步加工,例如代码分割,代码压缩等等
常用的
UglifyJsPlugin
HotModuleReplacementPlugin
NoEmitOnErrorsPlugin
HtmlWebPackPlugin
ExtractTextPlugin
PreloadWebpackPlugin
3:性能优化
dom
dom结构简单,不大量出现重排重绘
css
放到head中,不影响js下载、dom解析,但是会阻塞js执行和dom渲染、图片base64或者使用iconfont
js
减小文件打包体积、与dom关系不大的可以async、依赖dom的可以使用defer
网络
减少网络请求、使用缓存、localstorage、cdn缓存
懒加载、骨架图
4:为什么要用ts
增强代码健壮性、便于团队协作、interface保证代码的数据类型正确
5:type 和 interface的区别
都可以声明对象或者函数、都可以扩展
type可以声明基本数据类型 interface不行
interface可以声明合并 type不行
6:灰度版本的原理
7:sso jwt cas原理
浏览器考点
1:H5新特性
2:重绘重排
3:渲染顺序 domtree csstrss rendertree
4:cookie有哪些属性,含义
5:缓存机制,强缓存/协商缓存 jsonp cors简单请求 复杂请求
6:跨域解决方案
7:web安全xss、csrf
8:postMessage()、webworker
9:<script> defer、async
10:首屏加载优化
11:seo
12:chrome调试工具、录制、断点
13:浏览器多线程、node多线程、js是单线程还是多线程
14:进程与线程的关系
网络:
1:CDN 概念、原理、作用
2:http如何通信、https如何实现加密通信、http2、中间人攻击、httpcode
3:tcp/udp、三次四次握手、tcp为什么是可靠的
4:dns,公网、私网、最多有几个ip,广播,掩码
5:请求头响应头中的内容、有哪些请求方法以及作用
6:httpcode的含义
7:OSI 7层模型
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
8:URL输入到展现的过程
查询dns获取ip,浏览器缓存 本地host 本地dns服务器 根域名 二级 顶级 递归、迭代查询
建立tcp连接三次握手
http请求
四次握手结束通信
9:tcp udp区别 tcp为什么可靠 https://juejin.cn/post/6844903832208539661
tcp可以保证数据包有序、持续传输、失败重发 数据包11对应 需要握手
udp不保证数据包到达的先后顺序、没有重发机制、数据包可能会有多个,不能保证是否被接收到 也无需握手
框架:
1:MVVM,概念,原理,实现
2:angular/vue生命周期
3:双向绑定原理、单向数据流好处、路由 hash+history
4:diff算法
5:vuex
6:组件通信
7:angular相关 组件、service、依赖注入等
8:RXJS常用函数
Nodejs
1:koa、express
2:乐观锁悲观锁
常考题型
1:获取url中的参数
2:深拷贝
3:遍历树
4:滑动窗口
5:背包 分糖果
6:链表
7:排序
8:千分位逗号
9:二分法
10:约瑟夫环
12:排序 快排,归并
13:两个栈写一个队列
综合:
1:最有成就感的项目,遇到的问题,如何解决
2:主动承担的核心项目
3:微前端架构
4:职业发展
5:离职的原因
6:最近关注的新技术
7:平时如何学习
8:需要提问的问题