栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

【前端面经搬运】铜三铁四面试经验-快手篇

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【前端面经搬运】铜三铁四面试经验-快手篇

前言

本系列主要搬运牛客网中大家的面经以及我自己做的答案。

本文面试题来自:铜三铁四面试经验-快手篇

文章目录
  • 前言
  • 一面
    • 1、如何在前端进行权限控制?
    • 2、网页布局的方式有哪些?
    • 3、说一下盒模型
    • 4、说一下flex布局
    • 5、你了解哪些HTLML5新特性
    • 6、你了解哪些ES6新特性
    • 7、说一下vue的nextTick的原理
    • 8、说一下vue父子组件的生命周期
    • 9、说一下vue的虚拟DOM是什么
    • 10、从页面输入一个URL到页面展示详细说一下


一面 1、如何在前端进行权限控制?

(1) 界面的控制:比如用户想进入订单界面,只能从购物车中点击结算,如果直接在地址栏输入地址,不能跳转到订单界面(路由独享守卫)。

{
    name: 'Trade',
    path: '/trade',
    component: Trade,
    meta: { showFooter: true },
    //路由独享守卫
    beforeEnter: (to, from, next) => {
        if (from.path == '/shopcart') {
            next()
        } else {
            next(false)
        }
    }
},

(2)菜单的控制:在登录请求中,会得到权限数据。前端根据权限数据,展示对应的菜单,点击菜单,才能查看相关的界面。
常量路由:不管用户是什么角色,都能看到的路由;
异步路由:根据不同用户过滤出的路由,称之为异步路由;
任意路由:当任意路径出现错误的时候,都要跳转到的路由。
(3)按钮的控制:在某个菜单的界面中,还得根据权限数据,展示出可进行操作的按钮,比如删除,修改,增加。

2、网页布局的方式有哪些?

(1)浮动
优点:兼容性好,比较简单;
缺点:浮动会使元素脱离文档流,需要清除浮动,还会造成高度塌陷(父元素没有设置足够大小的时候,子元素设置了浮动的属性,子元素就会跳出父元素的边界,尤其当父元素的高度为auto时)
(2)定位(绝对定位,相对定位)
缺点:脱离文档流,会导致后续元素全部脱离文档流,可用性差。
(3)弹性布局(最常用的)
(4)网格布局:比较擅长将一个页面划分为几个主要区域,以及定义这些区域的大小、位置、层次等关系。

3、说一下盒模型

CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:外边距(margin)、边框(border)、内边距(padding)、实际内容(content)四个属性,分别标准模型和IE模型,标准模型的宽度不包括内边距,IE模型的宽度要包括内边距。
(1)标准模型

(2)IE模型

4、说一下flex布局

flex布局可以为盒状模型提供最大的灵活性。
flex布局中的基本属性:

属性名称属性意义属性可能的值
容器的属性flex-direction决定item排列方向row,row-reverse,column,column-reverse
justify-contentitem在主轴上的对齐方式flex-start,flex-end,center,space-between,space-around
flex-wrap排列不下时,item如何换行nowrap,wrap,wrap-reverse
align-content侧轴上子元素的排列方式(多行)flex-start,flex-end,center,space-between,space-around,stretch
align-items侧轴上子元素的排列方式(单行)flex-start,flex-end,center,space-between,space-around,stretch
flex-flow复合属性相当于同时设置了flex-direction和flex-wrap
item的属性order定义item的排列顺序整数,默认为0,越小越靠前
flex-grow当有多余空间时,item的放大比例默认为0,即有多余空间时也不放大
flex-shrink当空间不足时,item的缩小比例默认为1,即空间不足时缩小
flex-basis项目在主轴上占据的空间长度值,默认为auto
flexgrow,shrink,basis的简写默认值为0 1 auto
align-self单个item独特的对齐方式同align-items,可覆盖align-items属性
5、你了解哪些HTLML5新特性

(1)媒体播放的video和audio;
(2)本地存储 localStorage和会话存储sessionStorage
(3)绘画 canvas
(4)语义化标签 header footer section nav artice等
(5)新增选择器 document.querySelector document.querySelectorAll

6、你了解哪些ES6新特性

(1)变量和作用域

  • let 声明的变量只在所在块中生效;let声明的变量可以解决var与for循环结合使用产生的无法取得最新变量值的问题(以往都需要通过闭包来解决这个问题);let不允许重复声明;
for(var i=0;i<6;i++){
    setTimeout(function(){
        console.log(i);          //输出六个6
    },0)
}

闭包解决:

for (var i = 0; i < 6; i++) {
    ((i) => {
        setTimeout(function () {
            console.log(i);          //输出012345
        }, 0)
    })(i)
}

let解决:

for (let i = 0; i < 6; i++) {
    setTimeout(function () {
        console.log(i);          //输出012345
    }, 0)
}
  • const声明变量行为与let相似,多了两点:声明时必须赋值;内存地址不可变。
  • const可以用来解构赋值。

(2)原生对象的方法扩展

  • String支持字符串的遍历,repeat()等方法的支持,还能使用模板字符串。
  • Function可以使用箭头函数,不改变this的指定。
  • Object中KV同名可以写一个,

(3)Set和Map

  • Set可以实现去重,操作方法有add(),delete(),has(),clear();遍历方法有keys(),values(),entries()和forEach();
  • Map也是K-V的集合,然而其K可以取任意类型。如果需要键值对的集合,Map比Object更适合。Map通过new关键字实例化,Map实例的方法:set()、get()、has()、delete()和clear();遍历方法同Set。

(4)异步编程Async。

7、说一下vue的nextTick的原理
  • nextTick的作用是为了获取更新后的DOM元素。
  • 由于Vue DOM更新是异步执行的,即修改数据时,视图不会立即更新,而是会监听数据变化,并缓存在同一事件循环中,等同一数据循环中的所有数据变化完成之后,再统一进行视图更新。为了确保得到更新后的DOM,所以设置了 Vue.nextTick(),就是在下次DOM更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的DOM。
  • 原理:在下次 DOM 更新循环结束之后执行延迟回调。nextTick主要使用了宏任务和微任务。根据执行环境分别尝试采用①Promise;②MutationObserver;③setImmediate;如果以上都不行则采用setTimeout,定义了一个异步方法,多次调用nextTick会将方法存入队列中,通过这个异步方法清空当前队列。
8、说一下vue父子组件的生命周期

(1)加载渲染过程
父组件beforeCreate —> 父组件created —> 父组件beforeMount —> 子组件beforeCreate —>子组件created —> 子组件beforeMounted —> 子组件mounted —> 父组件mounted
(2)子组件更新过程
父组件beforeUpdate —> 子组件beforeUpdate —> 子组件Updated —> 父组件Updated
(3)父组件更新过程
父组件beforeUpdate —> 父组件Updated
(4)销毁过程
父组件beforeDestroy —> 子组件beforeDestroy —> 子组件destroyed —>父组件destroyed

9、说一下vue的虚拟DOM是什么

目前还不会。

10、从页面输入一个URL到页面展示详细说一下

(1)首先在地址栏输入一个url,查找一下有没有历史记录,有没有缓存,如果有就展示页面。
(2)DNS解析。首先浏览器会查看本地硬盘的hosts文件,看看其中有没有和这个域名对应的规则,如果有就直接使用Hosts文件里面的Ip地址。如果没有找到对应的IP地址,浏览器会发出一个DNS请求到本地DNS服务器。本地DNS服务器会首先查询缓存记录,如果有就直接返回结果,此过程是递归查询,如果没有,本地服务器向DNS服务器进行查询,根DNS服务器没有记录具体的域名和IP地址的对应关系,而是告诉本地DNS服务器,你可以到昱服务器上去继续查询,并给出服务器地址,这里采用的是迭代查询。最后,本地服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器就把IP地址返回给用户,同时进行缓存。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/840931.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号