2019年面试遇到的笔试题

前端面试,肯定是少不了笔试题,果然,今天去面试就遇到的笔试题,慌了一批。回来赶紧整理了一下

一、 css3的常用的新特性?flex布局和传统布局有什么区别?

css3的新特性那就多啦,简单的列举了几个:

  • 过渡 transition: CSS属性,花费时间,效果曲线(默认ease),延迟时间(默认0)
  • 动画 animation:动画名称,一个周期花费时间,运动曲线(默认ease),动画延迟(默认0),播放次数(默认1),是否反向播放动画(默认normal),是否暂停动画(默认running)
  • transform:适用于2D或3D转换的元素
    + transform-origin:转换元素的位置(围绕那个点进行转换)。默认(x,y,z):(50%,50%,0)
    + transform:rotate(30deg);
    + transform:translate(30px,30px);
    + transform:scale(.8);
    + transform: skew(10deg,10deg);
  • 选择器
    - 元素选择器,属性选择器,
  • 阴影
    - box-shadow 盒子阴影
    - text-shadow 文字阴影
  • 边框圆角 border-radius
  • 弹性布局 flex
  • 盒子模型 box-sizing
  • 媒体查询 @media
  • 超出省略号
    • 单行
      • overflow:hidden;
      • white-space:nowrap;
      • text-overflow:ellipsis;
    • 多行
      • overflow:hidden;
      • text-overflow:ellipsis;
      • display:-webkit-box;
      • -webkit-line-clamp:2;
      • -webkit-box-orient: vertical

Flex布局跟传统布局的区别:
传统的布局方案,基于css盒子模型,float+display+position,TA对于很多特殊布局方案就非常不方便,必须垂直居中
Flex 是 Flexible Box 的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。任何元素都可以设置为flex

说说你所知道的UI框架和js框架;你比较熟悉使用哪些框架

UI框架的那就很多啦

  • MUI
  • AUI
  • Mint-UI
  • layui
  • VUX – VUE移动端UI组件库
  • Vant – Vue UI组件库
  • Element-Ui VueUI组件库
  • iview - vueUI组件库

js框架也很多,不过我就写了前端三大流行框架

  • vue.js
  • react.js
  • angular.js
    比较熟悉的话,因为我之前都是在使用vue.js,所以对它周边的UI框架还算熟悉,其实也没啥,开发看着官方文档,杠杠的
  • 比较熟悉 vue.js MUI Mint-Ui Element-Ui iview

ES6有哪些常用的新特性

es6的话,在用vue开发中,经常用到,不过我还没来得及去深入了解,懂得的大概都是皮毛

  • let const 变量声明
  • 模板字面量 ${}
  • 解构赋值 从数组和对象提取并赋值给独特的变量
  • 展开运算符 …
  • 箭头函数
  • Iterable类型 (map() Array() Set() )
  • 函数的参数默认值
  • promise
  • modules模块 ( import export )
    说真的,es6真是好东西,所以你懂的,赶紧去学,面试必问

什么是跨域?跨域请求资源的方法有哪些?

其实我就纳闷了,每次面试,都会问到跨域的问题....
跨域:由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一个与当前页面路径不同即为跨域

方法:

  1. Proxy代理
    用法: proxy 代理用于将请求发给后台服务器,通过服务器来发送请求,然后将请求的结果传递前端
  2. CORS [ Cross-Origin Resource Sharing ]
    需要后端人员在处理请求数据的时候,添加允许跨域的相关操作
  3. Jsonp
    通过动态插入一个script标签。浏览器对script的资源引用没有同源限制,同时资源加载到页面后悔立即执行

我就简单写了三种,后来技术面我的时候,直接问我怎么解决。。。

什么是闭包?闭包有什么作用?可举例说明

  闭包就是能够读取其他函数内部变量的函数。由于在`javascript`语言中,只有函数内部的子函数才能读取局部变量,因此可以吧闭包简单理解为“定义在一个函数内部的函数”。所以本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

用处:

  1. 可以读取函数内部的变量;
  2. 让这些变量的值始终保持在内存中。
    注意点:
  3. 由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页性能问题,在IE中可能导致内存泄漏。解决方法,在退出函数之前,将不使用的局部变量全部删除
  4. 闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象使用,把闭包当作公用方法,把内部变量当作私有属性,这是一定要小心,不要随便改变父函数内部的变量的值。
例子
    Function outerFun () {
        var a = 0
        function innerFun () {
          a++
          alert(a)
                }
        }
        innerFun ()

function outerFun () {
    var a = 0
    alert(a)
}
var a = 4
outerFun ()
alert(a)

谈谈性能优化问题?

代码层面的优化

  1. 少用全局变量
  2. 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能
  3. 多个变量声明合并
  4. 尽量避免写在HTML标签中写style属性

移动端性能优化

  1. 尽量使用css3动画,开启硬件加速、
  2. 适当使用touch事件代替click事件
  3. 避免使用css3渐变阴影效果
  4. 不要滥用float。Float在渲染时计算量比较大,尽量减少使用
  5. 不要滥用web字体。Web字体需要下载,解析,重绘当前页面,尽量减少使用
  6. CSS中的属性(css3 transition transform opacity canvas video)会触发GPU渲染,请合理使用。过渡使用会引起手机耗电增加
    Web前端开发性能优化
  7. 减少HTTP请求
  8. 减少Dom元素数量
  9. 使得Ajax可缓存

针对HTML

  1. 语义化HTML
  2. 减少DOM节点;加速页面渲染
  3. 给图片加上正确的宽高值,可减少页面重绘,同时防止图片缩放
  4. 防止src属性和link的href属性为空。当值为空时,浏览器很可能会把当前页面当成其属性值加载
  5. 正确的闭合标签
  6. 链接为目录或首页地址后面加 / 如 http://5icool.org/
  7. 用link而不用@import方式导入样式
  8. 样式放页头,js放在页尾
  9. 缩小favicon.ico并缓存

针对CSS

  1. 把CSS放在代码页上端
  2. 从页面剥离javascript与CSS
  3. 精简javascript与CSS,能简写就简写
  4. 避免CSS表达式
  5. 通过CSSSprite把同类图片合成一张,减少图片请求
  6. 减少查询层级如.header .logo要好过.header .top .logo
  7. 减少查询范围如.header>li要好过.header li;
  8. 避免TAG标签与CLASS或ID并存 如a.top、button#submit;
  9. 删除重复的CSS

针对javascript

  1. 脚本放到HTML代码页底部
  2. 尽量少用全局变量
  3. 使用事件代理绑定事件
  4. 避免频繁操作DOM节点

针对服务器

  1. 尽量合并CSS、JS文件,或将其直接写在页面上,减少HTTP请求
  2. 压缩CSS、JS文件,所短文件传输时间
  3. 避免404错误
  4. 使用CDN加速,使用户从离自己最近的服务器下载文件
  5. 减少cookie的大小,使用·无cookie的域,客户端请求静态文件的时候,减少cookie的反复传输对主域名的影响
  6. 为无文件头指定Expires,使内容具体缓存性
  7. 使用gzip压缩内容

针对图片

  1. 不用图片,尽量用css3代替
  2. 使用矢量图SVG替代位图
  3. 使用字体图标

Cookie和session的区别;登录信息保存在哪里?

Session的中文翻译是“回话”,当用户打开某个web应用时,便与web服务器产生一次session。服务器使用session把用户的信息临时保存在服务器上,用户离开网站后session会销毁。这种用户信息存储方式相对cookie来说更安全,可是session的缺陷:如果web服务器做了负载均衡,那么下一个操作请求到另一台服务器的时候session会丢失。

Cookie是保存在本地终端的数据。Cookie有服务器生成,发送到浏览器,浏览器把cookie以kv形式保存到某一个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于从cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每一个域的cookie数量是有限的。

Session和cookie的区别
1.Cookie数据存放在用户的浏览器上,session数据放在服务器上
2.Cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session
3.Session会在一定时间内保存在服务器上。当访问增多,会比较占用服务器的性能,考虑到减轻服务器性能当面,应当使用cookie
4.单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie
所以将登录信息等重要的信息存放在session,将其他信息如果需要保留,可以放在cookie中。

好了,就这么多了,不知道写啥了,就这样吧。
第一次写,见谅,哈哈哈哈哈哈哈哈哈哈哈哈。

你可能感兴趣的:(2019年面试遇到的笔试题)