前端面试题

233 阅读3分钟

javascript相关面试题

1. 如何理解前端模块化?

  • 模块化方案: CommonJs(nodejs) AMD(requirejs) CMD(sealjs) es6(import)
  • 模块化优点:1.解决命名冲突,避免污染全局作用域 2. 按需加载 3.形成依赖关系4.保持私有的作用域,通过暴露接口实现访问5.便于维护查错
  • CommonJS/ES6:
  1. CommonJS: 同步加载,一个文件就是一个模块,运行的时候加载并执行js脚本,导出的是一个对象,且为基本类型值的拷贝(即内部有基本值改变了,导出后的值不会改变),会缓存导出的值,只加载执行一次,即下次加载直接从缓存读取。
  2. ES6: 编译阶段就要加载解析,导出相应的接口,导出的是值的引用,内部值改变,导出的值依然会改变。
  • AMD/CMD:都是适用于浏览器端异步并行加载js文件
  1. AMD:预加载,加载后则会执行脚本,即同时会加载依赖的脚本。优点:加载速度快, 缺点:加载顺序不一定,会导致bug
  2. 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的一些区别

  1. 缓存http头增多,http1.0: if-modified-since expires http1.1:if-match if-none-math etag if-unmodified-since
  2. 连接: http1.0: connection关闭 http1.1: connection: keep-alive保持长连接
  3. 范围:新增请求头range请求资源的某一范围,返回206(partical content)
  4. 错误管理:新增错误码 410资源永久被删除 409请求资源和现有资源冲突
  5. host头:需要带上主机名和Ip地址 服务端存在虚拟主机,故需要主机名。

2.http1.0 和 http2.0的区别? 降低请求时延

  • http1.x: spdy(speedy)快速
  • 特点:1. 多路复用,一个连接上有多个请求,加快请求速度 2. 压缩http头,减低网络资源,减轻网络阻塞 3. 使用https加密 4. 服务端主动推送信息,减少不必要的请求和连接 5.每个请求有优先级,优先级高的先处理 1.http2.0基于spdy的一种协议,具体区别如上,但是只为明文传输,故不算区别
  1. 编码使用二进制编码,Http1.0使用文本协议编码,多路复用,Header压缩,优先级,服务端主动推送。

jquery相关面试题

node相关面试题

computer science 基础面试题

1. 冯诺依曼结构体系?

  1. 计算机由运算器 控制器 存储器 输出 输入设备组成
  2. 指令由操作码和地址码组成
  3. 采用存储程序的方式,指令和数据存在存储器中,以二进制的方式存储
  4. 指令顺序存储,通过PC程序计数器获取指令地址,进行执行。