面试记录
- 锐捷网络日常实习生前端面试过程记录,基本上整个过程进行了近一个小时,前端三大件从html、css到javascript。感觉答得一般,好多基础的都有点遗忘了。
- 周末面的,第二周收到了offer
HTML4和HTML5区别
-
语法简化
头部文件简化 以标准模式渲染页面
-
语义话标签引入
指定字符编码 charset=‘utf-8’
支持音视频
结构:header、footer、artical
内容:h、title
好处:便于SEO、优化代码结构、方便其他设备解析
-
新增属性
input
placeholder min max
list 配合datalist创建下拉菜单
form
novalidate 禁止表单默认验证行为
可用在input button select等其他标签上,不再局限于层叠关系
autofocus
-
新增浏览器缓存机制
-
cookie
-
localStorage
本地存储,长时间存储
-
SessionStorage
会话存储,窗口标签页关闭后会被删除
-
-
使用Canvas替代了flash,引入svg
-
Canvas:封装js绘图API
Echarts基于Canvas
-
svg:xml文档
D3基于svg,js库
-
-
使默认不可编辑标签变得可编辑 contenteditable=’true’
使用css中user-modify同样可以实现
CSS3
-
css3新增
-
文字边框阴影
-
动画
-
transition:简单动画
-
animation:复杂动画
- @keyframes规则定义各个阶段属性
@keyframes animationName { 0% { properties: value; } percentage { properties: value; } 100% { properties: value; } }- animation-name:设置需要绑定到元素的动画名称;
- animation-duration:设置完成动画所需要花费的时间,单位为秒或毫秒,默认为 0;
- animation-timing-function:设置动画的速度曲线,默认为 ease;
- animation-fill-mode:设置当动画不播放时(动画播放完或延迟播放时)的状态;
- animation-delay:设置动画开始之前的延迟时间,默认为 0;
- animation-iteration-count:设置动画被播放的次数,默认为 1;
- animation-direction:设置是否在下一周期逆向播放动画,默认为 normal;
- animation-play-state:设置动画是正在运行还是暂停,默认是 running;
- animation:所有动画属性的简写属性。
animationstart\animationend 事件监听动画的开始结束,transition也存在
-
-
-
选择器
- id、类、属性、标签、组合、伪类、否定选择器
- 组合选择选择器:可以通过自定义属性选择
eg:选取div标签下面所有包含a字母的所有选择器
div[*=’a’]
*包含 $结尾 ^开头
-
组合选择器:
~同级元素选择,只匹配一个兄弟
+同级元素选择,匹配所有兄弟
儿子选择器
-
选择器优先级
id > 类=伪类=属性 > 标签=伪元素
-
var()函数
:root{ --white:#fff; } p{ color:var(--white); } -
pointer-events:none 禁用button点击
-
box-sizing :用来改变盒模型中计算宽高的方法
-
盒模型
-
默认(content-box)宽高只包含content区域
-
块元素的border,padding属性会影响盒子的宽高
- 使用border-box使宽高包含border,padding
-
-
scss
- css预处理器
JavaScript
-
es5数组相比较es3增加方法
-
es3
- splice(index,length,newArr):将元素插入到指定位置,返回“”,若不添加元素,返回删除元素(改变原数组)
- slice:也可用于数 组截取
- concat:连接多个数组(返回新数组)
-
es5
- map:不改变原数组
- filter:不改变原数组
arrNum.filter((item) => { return item > 3 })- some:任意一项返回true,返回true
- every:每一项true,返回true
const res = arr.some((item,index,arr)=>{ return item > 3 })- indexOf
- lastIndexOf
-
es6
- find
- findIndex
- copyWith
- fill:将元素全部替换(改变原数组)
-
操作字符串:
- slice:切割字符串,返回切出来的
- split:分割字符串
-
数组去重
- Array.from(new Set(arr))
-
数组遍历
-
for .. in ..(常用于对象的遍历,获取键)
会遍历所有可遍历元素
-
for ..of ..(遍历数组,类数组,对象中的值)
for (let key of arr){ console.log(key) } -
forEach(item,index,arr)
通过return跳出循环
-
reduce(total,item,index,arr):用于累加
const res = arrNum.reduce((total,item)=>{ return total+item })
-
-
forEach实现
-
ES6新特性
-
箭头函数 zhuanlan.zhihu.com/p/57204184
- 箭头函数没有this
- 没有arguments
延迟执行
-
AJAX设置成同步操作
- async 设置为false
-
同步函数异步执行
-
const
- 定义基本数据类型不可以改变
- 定义引用数据类型可以改变,仅限于值(即修改对象属性的方式)
-
从1加到100
- for循环
- 递归
- reduce
-
驼峰下划线的转化
💡 正则表达式// 下划线转换驼峰 function toHump(name) { return name.replace(/\_(\w)/g, function(all, letter){ return letter.toUpperCase(); }); } // 驼峰转换下划线 function toLine(name) { return name.replace(/([A-Z])/g,"_$1").toLowerCase(); }/g
-
webpack配置
-
·Canves事件监听