欢聚前端实习一二面面经
第一次面到欢聚,不知结果如何,但感觉那天挺神奇的,所以要把第一个在牛客发的帖子献给它哈哈哈。
一面
自我介绍
笔试
简单的一道排序题
原谅我脑子里飘过sort方法,写了冒泡和快排。(感觉其他几种也得去复习一下)
然后问了两种方法的思路和时间复杂度。
面试
- 介绍项目
- 由项目引出的sessionStorage、localStorage、cookie各自特点以及区别
cookie:客户端第一次向服务器端发起请求,服务器端在响应请求中携带cookie并将其存储到用户本地的一种数据,当下一次再有同源的请求时客户端会将保存的cookie写入请求头部,这样可以用来实现记录用户登录状态等功能。它的属性有name、value、domain、path、Expires/Max-Age、secure、HttpOnly等。在服务器端通过Set-Cookie来设置,客户端可以通过document.cookie来设置。存储的数据大小为4k左右,默认在关闭浏览器时失效。
sessionStorage和localStorage是HTML5本地存储Web Storage的组成部分,其中sessionStorage是会话存储,会话关闭之后存储数据会消失,而localStorage是永久存储,就算浏览器关闭之后数据仍会保存。使用window.sessionStorage/window.localStorage来访问,通过getItem和setItem来获取和存储。 - 如何设置用户信息一段时间后失效
设置cookie过期时间;定时器清除sessionStorage和localStorage的信息
然后搜了一下看到一个答案是使用storage存数据的时候存入时间戳,拿数据时判断数据是否过期。不知道还有没有更多方法,欢迎交流~ - Vue里面v-if、v-show的区别
两者都可用来控制DOM元素的显示和隐藏,区别在于:
v-if是真正的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件被适当地销毁和重建;v-if也是惰性的,就是初始条件为假的话什么也不做,直到条件第一次变为真时才开始渲染条件块。相比之下,v-show就简单得多,无论初始条件是什么都会进行渲染,只是简单地基于CSS进行切换,隐藏的话就加入display:none的属性值。所以v-if具有较高的切换开销,适用于运行时条件很少改变的场景,而v-show具有较高的初始化渲染开销,适用于需要频繁切换的场景。 - computed和watch的区别
- 如果在Vue里面改变一个数组的某个元素,Vue可以检测到变化吗?为什么?
不可以,说了下数组变化侦测的原理。
- 使用Vue提供的哪个API去解决上一个问题?
- 有没有封装过什么(通用)组件?
- 你知道哪些组件通信方式?
父子、兄弟
- 用过Vuex吗?
- 知道HTML的标准模式和兼容模式有什么区别吗?(好久前看过 和html版本有点混了)
- 行内元素和块级元素的区别
行内元素会在同一行显示,不换行;块级元素独占一行。
行内元素设置宽高以及竖直方向的边距无效;块级元素设置宽高以及边距有效。 - display的属性值有哪些
block、inline、inline-block、none、inherit
table、table-cell、table-row等 - display:none和visibility:hidden
两者都可以实现元素隐藏的效果,但不同的是
(1)display:none隐藏的元素不占据空间,而visibility:hidden隐藏的元素会占据空间;
(2)visibility属性具有继承性,父元素设置了visbility:hidden的话,子元素也会隐藏,但如果子元素设置了visibility:visible的话又会重新显示,而父元素如果设置了display:none,子元素的display无论设为什么都无法显示;
(3)visibility:hidden不会影响CSS中counter的计数,display:none会;
(4)CSS的transition支持visibility属性,而不支持display属性。 - visibility还有哪些其他的属性值?
hidden、visible、inherit、collapse(没用过这个)
- 介绍下CSS的盒子模型
有两种,对应box-sizing的两个值:标准盒模型content-box(我们最常用的,width即为content的width)
border-box(ie盒模型,width=content+padding+border)。 - CSS优先级
- 说下原型链
- JS数据类型
- 基本数据类型和复杂数据类型有什么区别?
(永远折服于面试官姐姐的温柔,没想到的是答完就直接约接下来的二面)二面
- 写一个html页面,有一个ul列表,每个li元素对应一个事件,显示的是事件状态,实现点击li之后切换状态,状态切换顺序为todo->doing->done,初始状态都是todo,状态变为done之后不再变化。
- 输入行号,打印等腰三角形星星。