一面面试官是个小姐姐,也没有问太难的东西,唯一的遗憾就是没看到一面小姐姐长什么样(ps:她那边没开摄像头)。
好了,步入正题:
先做个自我介绍吧
介绍一下写的项目
那我们正式开始吧
你了解CSS选择器吗?那他们的优先级呢
伪元素 伪类有用过吗?什么时候会用到?
怎样清除浮动
rem,em有了解吗
position定位都了解哪些?区别?使用之后有什么影响呢?
盒模型
水平居中
background的值以及作用
事件冒泡、捕获、委托
数组的方法,都了解多少?
如何删除一个 数组最后一个元素
let,var,const有什么区别
讲一下闭包吧
你都知道哪些数组方法?如果要删除数组最后一位元素,有哪几种方法?
你了解箭头函数吗?
知道深浅拷贝吗?
讲一下vue的生命周期
v-if 和 v-show 有什么区别?
知道localstorage和sessionstorage吗?说下区别?
localstorage如何添加,如何删除,如何清空?
手写一个深拷贝吧?
能自己实现节流防抖吗?
那最后写个冒泡吧
觉得一面还是问的挺基础的,基本都回答上来了
面完我人傻了,第一次听说有将近2个小时的面试,结果还发生在了我身上,但是面试官人很好,不会的也会慢慢的引导。
做个自我介绍吧
介绍一下项目
那我们开始吧
这有两道操作题,先看第一题
页面上有一个元素和一个按钮,请实现:元素在页面水平居中,点击按钮,元素在1s后,水平从左至右移动100像素,旋转90度,动画维持200ms
因为看到了要点击按钮动画才,所以开始想着用JS实现,结果发现动画没有过程。
Q:那用css如何实现?
A:animation
Q:animation实现一个动画,具体过程?
A:balabalabala
Q:那用css的animation实现动画,是页面刚加载动画就开始了,如何实现点击之后动画才开始的效果呢?
A:可以用:focus实现吗?
Q:应该是不行的,有其他方法吗?
A:暂时想不出来了
其实这里面试官想得到的是当点击按钮时,用js改变class名来实现。这竟然没有想到,被自己蠢哭
第二题
刚看到题的想法:这么长,这么复杂!!!凉了
写了一半放弃,说了下自己的想法。
回归你问我答环节。怎样实现一个上边自适应下边定高度的布局?
由于上一个问题回答中提到了flex,开始追问flex。
那你能简单说一下flex吗?
flex说了我知道的属性和对应的功能后,追问还有什么?
然后问 flex:1; 具体内容?
那用flex怎样让元素垂直排列呢?
还有些记不太清了qaq
Q:你知道怎么适配移动端吗?
A:用媒体查询多一点
Q:那媒体查询是怎么用的呢?
A:balabalabalabala
Q:那我现在要适配iPhone 5 应该怎样写?
A:balabalabala
Q:那了解em,rem吗?
A:了解,em是相对于父级字体大小,rem是相对于html根元素字体大小,balabala
Q:那要是我现在要适配不同屏幕大小的设备,应该在怎样修改html根元素的字体大小?
A:我觉得应该可以和媒体查询配合使用。
Q:那具体怎么实现呢?
A:balabala
Q:viewport是干什么的?
A:balabala
Q:可以介绍下里面都有什么属性吗?
A:balabala
Q:那我要是适配手机,里面应该怎么设置?
A:balabala
Q:了解webpack吗?
A:配置过简单的webpack,
Q:那说一下你是如何配置的?
A:balabalabala,配置过简单的loader、plugins
Q:那你知道webpack默认会识别哪些文件呢?
A:不太清楚,,
Q:那你知道webpack性能优化吗?
A:balabala
Q:有用过vue-router吗?说一下内部内部实现原理?
A:hash history,,,
Q:那history内部是怎样实现路由跳转、后退前进的?
A:history.push, history.replace,forward,back,go==。 都是将url入栈的操作,如果push会入栈,然后返回栈顶url,然后页面加载栈顶url,每个操作都是加载栈顶url。
Q:那如何监听路由改变呢?
A:我在vue中用过keep-alive,keep-alive有两个生命周期钩子函数,actived和deactived,分别是**当前路由执行,和离开放开路由执行。
Q:那不用框架什么的怎样实现路由的监听?
A:我知道hash通过hashchange,
Q:那history是如何实现的呢?
A:不太清楚
Q: 原型 原型链
A:从prototype , __proto__, constructor
开扯
Q: 原型链查找过程
A:balabala
Q:怎么判断我要查找的元素在哪一层?
A:通过hasownproperty
Q:可以实现一下吗?
A:那我试一下,,,
Q:聊一下项目吧(此时心在想那应该要结束了吧)
Q:我看你有个公司外包项目,是一个人写的吗?上线了没?有什么难点吗?
A:说了难点和如何解决的
Q:追问,那你为什么不用localstorage?
A:我觉得表达数据量大的话应该会考虑用
Q:那你说一下localstorage和sessionstrage区别吧?
A:localstorage存储时间长。。。。等等
Q:那localstorage存储时间长是有多长呢?
Q:那如何删除它呢?
Q:我看你还有一个购物商城,难点?怎么解决的呢?
(然而并没有结束)简单介绍下Http
Q:git 用过吗?如何给远程仓库上传文件呢?
A:balabala
Q: 那如何将远程主机的最新内容拉到本地?
Q:那从本地到远程主机呢?
Q:了解Promise吗?Promise是干什么的?
Q:如何用promise发送多个网络请求
Q:写一个函数:参数数量不定,每个参数都是数组,在传入所有数组中实现去重?
A:先想到的是把所有数组拼接一起,然后再去重,但面试官说这样返回的是一个数组。而她想要的结果是在元素中实现。
A:用agruments吗?
Q:那你说一下agruments是一个数组吗?
A:是一个类数组
Q:那怎样就成一个数组了
A:我常用[…agruments]让他变成一个数组
Q:还有其他方方法吗?
A:暂时没有了
Q:那我们还是回到刚才那个问题吧?用agruments怎么实现呢?
A:挣扎了半天,最后只说了思想
暂时只能想起这些,后面想起来会补充
这一面其实运气也挺好的,本来说是视频面。但在自我介绍的时候面试官说,你那边网络好像不太好,听不太清我说话,然后就改为电话面试了(心里暗自窃喜)。
三面技术问的少
Q:自我介绍
Q:问了参加比赛是一个什么样的项目,有什么难点,有什么亮点,如何实现?
Q:那自己写的项目有什么难点?
Q:数据结构与算法学过吧?讲一下快排的思想?
A:balabalabala
Q:那快排的事件复杂度是多少呢?
A:记得是O(nlogn)
Q:我这里有两个数组,如何找出他们相同的元素?
A:先说了双重循环
Q:那这个时间复杂度是多少呢?
A:O(n方)
Q:浏览器中从输入url到页面渲染出来的整个过程?
A:balabalabalabalabalabalabala
Q:那具体浏览器是如何对页面进行渲染的?
A:balabalabalabalabala
Q:那你了解重绘与重排吗?
A:重绘:…重排:…
Q:那他们是如何引发的呢?
A:balabalabalabala
Q:如何减少重绘与重拍?
A: 。。。。。。。。。
然后就开始软技术,问了几个问题就结束了。
聊了聊入职时间,什么时候发offer,以及工资等情况。
努力回忆,目前就记得这么多。
总的来说这次面试问的东西很多,但都不太难。