前端面试题
javascript相关面试题
1. 如何理解前端模块化?
- 模块化方案: CommonJs(nodejs) AMD(requirejs) CMD(sealjs) es6(import)
- 模块化优点:1.解决命名冲突,避免污染全局作用域 2. 按需加载 3.形成依赖关系4.保持私有的作用域,通过暴露接口实现访问5.便于维护查错
- CommonJS/ES6:
- CommonJS: 同步加载,一个文件就是一个模块,运行的时候加载并执行js脚本,导出的是一个对象,且为基本类型值的拷贝(即内部有基本值改变了,导出后的值不会改变),会缓存导出的值,只加载执行一次,即下次加载直接从缓存读取。
- ES6: 编译阶段就要加载解析,导出相应的接口,导出的是值的引用,内部值改变,导出的值依然会改变。
- AMD/CMD:都是适用于浏览器端异步并行加载js文件
- AMD:预加载,加载后则会执行脚本,即同时会加载依赖的脚本。优点:加载速度快,
缺点:加载顺序不一定,会导致bug
- CMD:懒加载,加载后不会执行脚本,待执行的时候才会进行执行加载脚本
优点:待使用的时候才同步执行,执行顺序是可控
缺点:加载速度慢需要等待时间。
2. Javascript常用设计模式?
- 观察者模式(发布订阅模式)promise EventEmitter 注册回调, 触发回调
- 单例模式, 一个class只能有一个实例,只执行一次
- 工厂模式:执行相同的类似的事件,通过类包装
html css相关面试题
1. 介绍下盒模型?
- 盒模型:content, padding border margin
- 标准模型: width = content
- IE模型: width = content+padding+border
- 解决办法:box-sizing: border-box(IE模型) content-box(标准模型)
- 获取dom的width/height: dom.style.width(只能获取行内元素) dom.getBoundingClientRect().width window.getComputeStyle(dom).width
React相关面试题
1. React生命周期函数?
- 首次渲染:
constructor getDerivedStateFromProps(props, state)//返回一个state对象来更新界面,不更新则返回null componentWillMount() render componentDidMount()
- 更新渲染:
shouldComponentUpdate(nextProps, nextState) componentWillUpdate(nextProps, nextState) render() getSnapshotBeforeUpdate(nextProps, nextState, snapshot) //在组件更新前获取dom的相关属性如scrollHeight 其返回值作为参数传递个componentDidUpdate() componentDidUpdate(preProps, preState)
- 卸载组件:
componentDidUnmount()
- 父组件渲染了则会导致
componentWillRecievedProps(nextProps)触发,且必须在组件挂载后;而getDerviedStateFromProps(props, state)每次组件渲染都会执行该方法
- 几个will生命周期函数都不安全官方不推荐使用
http相关面试题
1.HTTP1.0和HTTP1.1的一些区别
- 缓存http头增多,http1.0: if-modified-since expires http1.1:if-match if-none-math etag if-unmodified-since
- 连接: http1.0: connection关闭 http1.1: connection: keep-alive保持长连接
- 范围:新增请求头range请求资源的某一范围,返回206(partical content)
- 错误管理:新增错误码 410资源永久被删除 409请求资源和现有资源冲突
- host头:需要带上主机名和Ip地址 服务端存在虚拟主机,故需要主机名。
2.http1.0 和 http2.0的区别? 降低请求时延
- http1.x: spdy(speedy)快速
- 特点:1. 多路复用,一个连接上有多个请求,加快请求速度 2. 压缩http头,减低网络资源,减轻网络阻塞 3. 使用https加密 4. 服务端主动推送信息,减少不必要的请求和连接 5.每个请求有优先级,优先级高的先处理
1.http2.0基于spdy的一种协议,具体区别如上,但是只为明文传输,故不算区别
- 编码使用二进制编码,Http1.0使用文本协议编码,多路复用,Header压缩,优先级,服务端主动推送。
jquery相关面试题
node相关面试题
computer science 基础面试题
1. 冯诺依曼结构体系?
- 计算机由运算器 控制器 存储器 输出 输入设备组成
- 指令由操作码和地址码组成
- 采用存储程序的方式,指令和数据存在存储器中,以二进制的方式存储
- 指令顺序存储,通过PC程序计数器获取指令地址,进行执行。