更新动态:写给初级前端的面试经验
# 部分面试题
## CSS
- 怎么实现三列布局(左右固定,中间自适应)
- 绝对定位 + 中间版块不给宽度
- 两侧浮动 + 中间自动撑开
- flex , 左右设置 flex-basis , 中间设置 flex-grow
- flex 具体是怎么实现三列布局(左右两侧的宽度是怎么设置的,中间自适应使用哪个属性)
- 设为 flex 属性后,子元素的哪些属性会失效
- float
- clear
- vertical-align
- float / 绝对定位 怎么实现中间宽度自适应
- 移动端开发 rem 布局的原理( rem 单位换算)
- 有没有自己写过组件
- 怎么实现样式的继承和复用
- 平时怎么管理自己的 CSS
- base.css
- common.css
- page.css
- 以上对应都存放哪些内容
- 平时使用 sass/lass/styles 的哪些功能,sass 的计算属性对页面性能有影响吗?
- 如何在页面上画一个圆
- SVG
- Canvas
- CSS border-radius
- background
- map + area
- img
- 如何在页面上用CSS画一个椭圆
.sector { width: 0; height: 0; border-width: 50px; border-style: solid; border-color: #f00 transparent transparent; border-radius: 50px; } - 如果圆边界模糊,有什么办法去锯齿
## JS
- JS 数据类型
- null undefined string number boolean object Symbol(es6新增)
- 基本数据类型和引用数据类型的区别
- 基本数据类型存放在栈中,引用数据类型存放在堆中
- 基本数据类型由系统自动释放内存,堆不会自动释放内存
- 赋值上,基本数据类型传值,引用数据类型传址
- 深/浅拷贝的区别
- 怎么实现浅拷贝
- ES6:
object.assign() - ES6: 展开运算符
... - 自己封装函数实现
- ES6:
- 怎么实现一个深拷贝
- ES6:
JSON.parse()(内部有 function 和 undefined 不可用) - lodash
- 自己封装
- ES6:
- null 和 undefined 的差异
- if 判断时,都隐式转为 false
- 大体上两者都是代表无
- null 转为数字为 0 ,undefined 转为数字为 NaN
- 变量定义,但未被赋值是,值为 undefined
- null 是一个特殊的对象,常见用法是作为参数传入
- 设置 null 的变量或对象将被内存收集器回收
- 实现给数字添加千分位符
- 正则:
"12345678".replace(/(\d)(?=(?:\d{3})+$)/g,'$1,') - 字符串分析,循环,然后每3位加一个分位符
- 数据分析,取到整数部分,对1000取余,然后加逗号,拼接字符串
- 正则:
- 面向对象的三大要素
- 封闭
- 继承
- 多态
- 能简单说明面向对象和面向过程的区别吗
更新点........
问题库
- vue 的双向绑定原理
- vue 的 nexttick 原理
- diff 算法
- promise 的底层是怎么运转的
- 如何遍历一个树,并对其进行优化