疫情期间,一个前端妹子的面试小记(含答案)

背景我18年本科毕业,年前已有换工作想法,一直没有付诸行动,疫情爆发后回到老家,年后开始找工作,对于自己水平不是很清楚,之前找工作一直都挺顺利的。大学毕业没有留在实习单位继续做前端开发,那时候三大框架已经开始流行了,实习公司用的还是jquery。回老家学了一个月的车和vue、小程序后,凭着自学做的项目找了一周工作入职第一家公司。面试经验比较少,想着多面面看看对方公司的反馈。年前还没开始准备就面了腾讯,终止于二面,所以说还是要好好复习再面大厂。面的岗位以两三年为主,虽然我是1.5年经验,但有的岗位年限要求
摘要由CSDN通过智能技术生成

背景

我18年本科毕业,年前已有换工作想法,一直没有付诸行动,疫情爆发后回到老家,年后开始找工作,对于自己水平不是很清楚,之前找工作一直都挺顺利的。大学毕业没有留在实习单位继续做前端开发,那时候三大框架已经开始流行了,实习公司用的还是jquery。回老家学了一个月的车和vue、小程序后,凭着自学做的项目找了一周工作入职第一家公司。面试经验比较少,想着多面面看看对方公司的反馈。年前还没开始准备就面了腾讯,终止于二面,所以说还是要好好复习再面大厂。

面的岗位以两三年为主,虽然我是1.5年经验,但有的岗位年限要求没那么严格也可以试试,尤其写的优秀者可放宽年限要求。面了四五家,有上市公司,也有小公司,都是远程面试。

html、css部分
如何理解html语义化
html语义化是指从代码上展示页面的结构,而不是从最终视觉上来表现结构。

  • 表现形式

html5新标签:

header-页眉、footer-页脚、aside-附属信息、nav-导航链接、section、article,

caption-表格标题、thead-表头、tbody-表格内容、tfoot-表尾

h1~h6,作为标题使用,且重要性递减

  • 作用

有利于构建良好的html架构,有利于搜索引擎建立索引和抓取

页面结构清晰,有利于代码的维护和管理

有利于不同设备(盲人阅读器、屏幕阅读器)的解析

  • px,em,rem区别
    px 相对长度单位,是相当于显示器的分辨率而言的

em 相对长度单位,相对父元素的字体大小而言的

rem 相对长度单位,相对html根元素的字体大小而言的,css3新增元素

  • 盒子模型
    IE盒子模型 宽度=内容宽度+padding *2+border *2

w3c盒子模型 宽度=内容宽度

通过box-sizing切换,默认为content-box(w3c盒子模型),border-box时为IE盒子模型

  • BFC
    块级格式化上下文,让BFC里面的元素与外面元素隔离,使里外元素的定位不会相互影响。触发条件:

根元素

overflow不为visible

float

position:absolute或fixed

display:inline-block或table

应用:

防止垂直方向margin重叠

不和浮动元素重叠

清除元素内部浮动

  • target和currentTarget区别
    target是事件的真正目标

currentTarget是事件处理程序注册的元素

  • document.ready和window.onload区别
    document.ready是dom树加载后执行,而window.onload是整个页面资源加载完后执行,所以document.ready比window.onload先执行

  • 事件流
    DOM2事件流分为三个部分:事件捕获、处于目标、事件冒泡。

事件冒泡是指事件从执行的元素开始往上层遍历执行

事件捕获是指事件从根元素开始从外向里执行

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<button id="btn">click Me</button>  
<script>
let btn=document.getElementById('btn');
btn.onclick=fucntion(e){
    console.log(e)
}
</script>
</body>
</html>

点击按钮后,事件冒泡的执行顺序是:button->body->html->document

事件捕获的执行顺序则相反:document->html->body->button

  • doctype作用,严格模式和混合模式的区别
    <!doctype>声明位于文档的最前面,在html之前显示。用于告诉浏览器的解析器,用什么文档类型规范来解析文档。严格模式默认用浏览器支持的最高版本解析,混合模式以宽松的向后兼容的方式解析,doctype不存在或格式不正确时会让文档以混杂模式呈现
水平垂直居中
//方法一
display:flex;
justify-content:center;
align-items:center;

//方法二
display:table;
vertical-align:center;

//方法三:适用于已知宽高且父元素定位不为static
postion:absolute;
width:100px;
height:100px;
top:50%;
left:50%;
margin:-50px 0 0 -50px;

//方法四
position:absolute;
top:50%;
left:50%;
transform:translateY(-50%) translateX(-50%);

//方法五:适用于行内元素
display:inline-block;
width:100px;
height:100px;
text-align:center;
line-height:100px;

//方法六:适用于块级元素
display:block;
height:100px;
margin:0 auto;
line-height:100px;

回流和重绘区别
回流:当渲染树中元素尺寸、结构或者某些属性发生变化时,浏览器重新渲染部分或全部页面的情况叫回流。下列元素改变引发回流:

  • getBoundingClientRect()

  • scrollTo()

  • scrollIntoView()或者scrollIntoViewIfneeded

  • clientTop、clientLeft、clientWidth、clientHeight

  • offsetTop、offsetLeft、offsetWidth、offsetHeight

  • scrollTop、scrollLeft、scrollWidth、scrollHeight

  • getComputedStyle()

重绘:当页面中元素样式变化不会改变它在文档流中的位置时,即不会使元素的几何属性发生变化,浏览器会将新样式赋给它并重新绘制页面(比如color、backgroundColor)

频繁回流和重绘会引起性能问题

避免方法:

  • 减少table布局使用

  • 减少css表达式的使用(如calc())

  • 减少DOM操作,用documentFragment代替

  • 将元素设为display:none;操作结束后把它显示回来,因为display:none不会引发回流重绘

  • 避免频繁读取会引发回流重绘的元素,如果需要最好是缓存起来

  • 对复杂动画元素使用绝对定位,使它脱离文档流

  • 减少使用行内样式

js部分

  • setTimeout、setInterval区别
    两者都是定时器,设定一个150ms后执行的定时器不代表150ms后定时器会执行,它表示代码在150ms内会被加入队列,如果这个时间点队列没有其他逻辑在执行,表面上看代码在精确时间执行了。在队列中有其他逻辑时,代码等待时间会超过150ms

setTimeout 只执行一次

setInterval 执行多次,属于重复定时器

  • 防抖节流
    节流:多次触发事件时,一段时间内保证只调用一次。以动画为例,人眼中一秒播放超过24张图片就会形成动画,假设有100张图片,我们一秒播放100张过于浪费,一秒播放24张就够了。

防抖:持续触发事件后,时间段内没有再触发事件,才调用一次。以坐电梯为例,电梯10s运行一次。如果快要运行时进来一个人,则重新计时。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值