web开发前端面试知识点目录整理
基本功考察
-
关于Html
1. html语义化标签的理解; 结构化的理解; 能否写出简洁的html结构; SEO优化
2. h5中新增的属性; 如自定义属性data, 类名className等, 新增表单元素, 拖拽Drag
3. h5中新增的API, 修改的API, 废弃的API 稍作了解 (离线存储, audio, video) -
关于CSS
1. CSS选择器( 三大特性 )
2. BFC机制
3. 盒模型
4. CSS模块化开发(封装); SCSS和LESS的使用
5. 屏幕适配 以及 页面自适应
6. CSS3中新增的选择器
7. CSS3中新增的属性, transform trasition animation等... -
关于布局
1. 标准文档流(padding + margin + 负margin) + 浮动float + 定位
2. 百分比布局(流式布局): px单位 用 %num代替, 占父级元素的百分比
3. flex弹性布局: 主轴 辅助轴的几个属性
4. grid栅格布局: 使用框架中的类名来替代: 本质上还是百分比布局 -
关于JS基础
1. 变量数据类型及检测: 基本 + 引用
2. 运算符: 算术 + 条件 + 逻辑 + 位 + 短路, 隐式转换等
3. 条件, 循环, 异常处理 if switch(){case xxx:} try catch finally throw
4. 函数定义, 调用方式(apply, call, 直接调用), 传参: 实参给形参赋值
5. 字符串, 数组, 对象常用API,
6. 正则表达式 -
关于JS高级
1. 作用域, 作用域链, 闭包
2. 原型, 原型链, 继承
3. 函数上下文, this指向
4. js的运行机制, 事件队列和循环
5. Ajax原理, axios库
6. 同步, 异步编程
7. jQuery源码学习 -
关于浏览器
1. 浏览器的构成和运行机制,
2. 浏览器内核
3. 浏览器交互: BOM和DOM相关webApi, 监听事件
4. 浏览器缓存机制
5. 浏览器的渲染原理
6. 浏览器的安全性: 跨域 和 攻击 -
关于网络协议
1. HTTP协议
2. cookie, session, token -
关于ES6语法
1. 字符串, 数组, 对象 扩展的api
2. 变量扩展: let const 解构赋值 块级作用域
3. 函数扩展: 箭头函数 默认参数, rest参数
4. 展开运算符, 模板字符串
5. set 和 map数据结构
6. 迭代器和生成器函数 next 和 yield的理解
7. proxy对象 属性代理器: 属性的读取(get)和设置(set)相关操作
8. promise对象, 异步编程的解决方案
9. async + await: 异步编程的终极方案 promise + generator的语法糖
10. class语法 构造函数的语法糖
11. 模块化编程 export + import 的 导出和导入 -
VUE基础
1. 基本指令
2. 实例的 属性 和 方法
3. 实例的生命周期
4. 组件基础: 创建,注册,添加属性方法,套用等...
5. 组件通信传值 父子, 兄弟, 跨级
6. 插槽slot 等... -
VUE高级
1. vue-router: 搭建SPA
路由,组件的配置
路由间的传值
路由跳转
路由的导航守卫 记住在router.js 和 组件页面中的使用方式 2. vuex: 状态管理: 数据仓库store
实例化仓库的5大属性的使用
state, getters, mutations, actions, modules
辅助函数mapState等..., 仓库中计算属性的映射, 方便操作 记住在 store.js 和 组件中 使用方式 -
VUE深入, 源码阅读
1. 数据响应式原理
2. virtual dom
3. diff 算法
4. nextTick等等...
工程能力考察:
-
项目能力
1. vue-cli脚手架搭建 和 功能配置 vue.config.js
2. webpack的常用配置
3. 项目构建 打包
4. 熟悉各类框架的文档...
5. UI框架: Bootstrap, MUI, Element-ui等
6. 常用的插件整理, 整理一个自己插件库, 封装自己的方法库,组件库
7. 常用的工具熟练度
8. PC端 和 移动端开发注意事项
9. 经验总结: 快速确定项目的技术选型
10. 坑点总结: 项目遇到坑坑坑!!!
11. 项目中的性能优化记录 ( 都是细节点...多记录 )
12. 需求文档的理解, 可以结合 项目流程图, UML图
13. 问题解决能力: (bug定位调试, 查找文档, 寻求他人...)
14. 记录习惯养成 -
模块化, 组件化开发能力
1. 项目分类; 各类文件整理,分类
2. 各类功能封装
3. 组件和功能模块的抽离, 解耦, 复用
内功考察:
-
面向对象的编程思想
1. 类的抽象
2. 对象的封装, 继承
为了更好的去管理数据, 分类数据 实现高内聚, 低耦合 -
设计模式
设计模式感觉也是 将面向对象思想 再度抽象成现实中 某些特定模式
-
数据结构和算法
学习常用的排序搜索算法, 顺序表,链表,栈,队列,树,堆 结构等等...
考验你的 抽象思维 和 数学功底了
将现实需求 抽象成 计算机代码 的思维能力
附加技能考察:
1. 学习能力
1. 持续学习的态度--博客, 笔记记录
2. 技术论坛活跃度高, 问答多
3. GitHub开源项目参与
2. 了解一门后端语言
1. python, node.js, php等...
2. 数据库mysql,redis,mongodb. sql的操作语句, mongo的操作语句, redis操作语句
3. node + express 搭建本地服务等
4. python + django + request + scrapy
3. 系统编程
1. Linux命令行操作, 系统文件管理
2. 多任务, 多线程, 多进程, 协程, 并发, 并行, 串行, 同步, 异步等概念的理解