【面试题】前端春招第二面

news2024/11/17 13:39:44

不容错过的一些面试题小细节,话不多说,直接看题~

大厂面试题分享 面试题库

后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库

HTML/CSS/Javascript/ES篇

(1)标准盒模型和怪异盒模型?设置box-sizing:border-box后,content有哪些内容?

标准盒模型:盒子内容的宽/高=margin(左右/上下)+border(左右/上下)+padding(左右/上下)+content;内容区只包含 content;设置box-sizing:content-box; 怪异盒模型:盒子内容的宽/高=margin(左右/上下)+content(包含border(左右/上下)+padding(左右/上下));内容区包含content + padding + border;设置box-sizing:content-box;

<style>
     div{
       width: 200px;
       height: 200px;
       background-color: #ff6700;
       margin: 30px;
       padding: 10px;
       border: 20px solid #bfa;
    }
     .standardBox{
       box-sizing: content-box;
    }
     .weirdBox{
       box-sizing: border-box;
    }
 </style><h2>标准盒模型</h2><divclass="standardBox"></div>
​
 <h2>IE|怪异盒模型</h2><divclass="weirdBox"></div>复制代码

结果如图所示:

(2)有哪些属性是可以继承?
可继承属性:
  1.字体系列属性:font-family,font-size
  2.文本系列属性:text-indent,line-height,color
  3.元素可见性:visibility
  4.表格布局属性:border-style
  5.列表布局属性:list-stylelist-style-type
  6.光标属性:cursor复制代码
(3)引入css样式会不会阻塞html的渲染?css预处理器解析css会阻塞html的渲染?
css的加载会阻塞html的渲染嘛?
    css的加载不会阻塞html的解析,但是会阻塞渲染。这是因为从浏览器输入url到页面渲染的过程中,html通过html
解析器生成DOM树,css通过css解析器把 CSS 解析成 CSS 对象,然后组装成 CSSOM 树,这两个步骤是互不影响,并行的,
因此CSS不会阻塞页面DOM的解析。
    结合DOM树 和CSSOM树,生成一个render树(重排),由此可见render tree的生成是依赖DOM Tree和CSSOM Tree的,因
此CSS必然会阻塞DOM的渲染;严谨一点的说,CSS会阻塞render tree的生成,进而会阻塞DOM的渲染。
复制代码
(4)执行js脚本会阻塞html的渲染?有没有解决方式?
<script async></script>
    当浏览器读取到属性为async的script标签,获取该脚本的网络请求是异步的;解析html的过程中会进行js脚本的异步
加载,如果网络请求脚本返回后,如果此时 HTML 还没有解析完,浏览器会暂停解析,先让 JS 引擎执行代码,执行完脚本
后再进行解析;反之,如果网络请求脚本返回后,html已经解析完毕,那就相安无事。
    async 是不可控的,因为执行时间不确定,如果在异步JS 脚本中获取某个 DOM 元素,有可能获取到也有可能获取不到。如果存在多个 async 的时候,执行顺序也不确定,完全依赖于网络传输结果,谁先到执行谁。
    总结:解析html过程中会进行脚本的异步下载,下载成功后会立即执行,有可能会阻断html的解析。
    
<script defer></script>
    当浏览器读取到属性为defer的script标签,获取该脚本的网络请求也是异步的;
解析html的过程中会进行js脚本的异步加载,如果网络请求脚本返回后,如果此时 HTML 还没有解析完,浏览器不会暂停解
析并执行 JS 代码,而是等待 HTML 解析完毕再执行js代码。
    如果存在多个defer script 标签,浏览器(IE9及以下除外)会保证它们按照在 HTML 中出现的顺序执行,不会破坏
js脚本之间的依赖关系。
    总结:不会阻塞html的解析。
复制代码
(5)css选择器有哪些?伪类和伪类选择器有什么区别?
css选择器:
    通用选择器:选择所有元素
    元素选择器:按照给定的节点名称,选择所有匹配的元素(div-->匹配任何<div><div>元素)
    层级选择器:如:nth-child(n)
    属性选择器
    类和id选择器
    标签属性选择器
    伪类与伪元素:伪类用于选择处于特定状态的元素(a:hover|a:first等);伪元素以类似方式表现,不过表现得是像
你往标记文本中加入全新的 HTML元素一样,而不是向现有的元素上应用类(a::after|a::before)
    关系选择器:后代选择器(AB-->单个空格组合两个选择器,选择A元素包含的所有B元素),
                子代关系选择器(A>B-->选择A的直接子元素B),
                邻接兄弟(A+B-->选择紧跟A后的B),
                通用兄弟(A~B-->选择A后任何地方的B元素),
                列组合器(A||B-->选择属于某个表格行的节点,即A作用域内的B元素)
    分组选择器:通过(,)将不同的选择器组合在一起(A,B-->同时匹配A,B元素)
    伪类:(:)伪选择器支持按照未被包含在文档树中的状态信息来选择元素(a:visited-->匹配所有曾被访问过的 
    <a> 元素)
    伪元素:(::) 伪选择器用于表示无法用 HTML 语义表达的实体(p::first-line 匹配所有 <p> 元素的第一行)
复制代码
(6)typeof和instanceof的区别?
typeof 只能准确判断基本数据类型,判断所有的引用类型都为object,但是有两个例外:
        console.log(typeofnull);//object
        console.log(typeofFunction);//function
​
instanceof 只能准确判断引用数据类型,但是用来判断基本数据类型也不会报错,例如:
        const arr=[1,2]
        console.log(arr instanceofArray);//true
        let len=arr.length
        console.log(len instanceofNumber);//false复制代码
(7)原型和原型链?

原型和原型链

原型:
    原型(prototype)是函数function对象的一个属性,它定义了构造函数制造出来的对象(new运算符调用的函数)的公
共祖先,通过构造函数产生的对象可以继承到该原型的属性和对象,原型也是对象。
    隐式原型(__proto__-->每个实例上都有的属性)和显式原型(prototype-->构造函数的属性)
    函数的原型和对象的原型(对象原型的最顶端是null)
原型链:
    在原型上再加一个原型,再加一个原型..把原型连成链,访问顺序也是按照这个链的顺序跟作用域链一样,叫做原型链
复制代码
(8)深拷贝和浅拷贝?如何拷贝函数?

那就聊聊深拷贝和浅拷贝

浅拷贝:    
    创建一个新对象,如果源对象的属性是基本数据类型,拷贝的是基本数据类型的值;如果源对象的属性是引用数据类型,
拷贝的是内存地址,如果新对象改变了这个地址,会影响到源对象。
    拷贝方式:Object.assign({},obj,...),扩展运算符(...),Array.prototype.concat(),
    Array.prototype.slice(),Array.prototype.concat()
    
深拷贝:将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新的对象,且修改新对象不会影响
到源对象。
    拷贝方式:JSON.parse(JSON.stringify(obj))
    缺点:A.会忽略Symbol和undefined和function
         B.不能拷贝循环引用的对象
         C.不能序列化函数,拷贝出来的对象的属性顺序可能会和源对象不一致
         D.拷贝Date对象,得到的是字符串;拷贝RegExp对象,得到的是{}
         E.对象中含有NaN,Infinity会变成null
         
拷贝函数:
    如果拷贝箭头函数,可以直接调用函数的toString方法,然后通过eval解析;如果拷贝普通函数,则需要使用正则表达式匹配函数体,然后通过newFunction生成。
复制代码
(9)闭包?

闭包

闭包:
    当一个外部函数返回一个内部函数,这个内部函数存在对外部函数变量的引用,这些变量不会随着垃圾回收机制而
  被回收,这些变量的集合就是闭包。
复制代码
(10)异步编程?
Promise,async-await,generator
复制代码
(11)ES6中map和every的区别?
Array.prototype.map()  参数为一个回调函数,这个回调函数有三个参数,item,index,array;有返回值,
返回一个新数组
Array.prototype.every()  参数为一个回调函数,这个回调函数有三个参数,item,index,array;有返回值,只有所有的
元素都满足条件,回调函数返回trueArray.prototype.some()  参数为一个回调函数,这个回调函数有三个参数,item,index,array;有返回值,只要
有一个元素满足条件,回调函数就会返回true复制代码
(12)localStorage是永久缓存,如何实现设置localStorage的有效期?

这个实际上就是根据业务逻辑手动去定义一个有效期,有效期到了就手动删除

(13)浏览器的缓存策略(强缓存和协商缓存)?

已经第二次面了,看来真的很重要!

Vue篇

(14)v-if和v-show的区别?
v-if:
    条件渲染
    通过操纵DOM元素来进行切换显示
    值为true的时候元素存在于DOM树中,值为false的时候从DOM树中移除
    会引起回流和重绘
v-show:
    原理是修改元素的的CSS属性(display)来决定实现显示还是隐藏
    指令后面的内容最终都会解析为布尔值
    值为真(true)的时候元素显示,值为假(false)的时候元素隐藏
    数据改变之后呢对应的元素的显示状态也是会同步更新的(响应式的)
    不会引起回流,但是会引起重绘
复制代码
(15)子组件如何使用父组件的方法(父子组件通信)

组件通信

Props用于父组件向子组件传值
emit用于子组件向父组件传值
expose/ref用于父组件接收子组件传来的的属性或方法
provide/inject用于父组件向子组件或者其他跨级组件或多级嵌套组件之间的通信
attrs用于子组件接收父组件中不是通过Props接收的属性
另外,可以试试mitt.js
复制代码
(16)说说vue中nextTick()?
nextTick():等待下一次 DOM 更新刷新的工具方法
当你在 Vue 中更改响应式状态时,最终的 DOM 更新并不是同步生效的,而是由 Vue 将它们缓存在一个队列中,直到下一个
“tick”才一起执行。这样是为了确保每个组件无论发生多少状态改变,都仅执行一次更新。
nextTick() 可以在状态改变后立即使用,以等待 DOM 更新完成。你可以传递一个回调函数作为参数,或者 await 返回的
Promise
​
实现原理:
在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后立即使用 nextTick 来获取更新后的 DOM。 nextTick主要
使用了宏任务和微任务。 根据执行环境分别尝试采用Promise、MutationObserver、setImmediate,如果以上都不行则采用
setTimeout定义了一个异步方法,多次调用nextTick会将方法存入队列中,通过这个异步方法清空当前队列
复制代码
(17)vue中是如何阻止事件冒泡的?
<!-- 单击事件将停止传递 --><a @click.stop="doThis"></a>
​
<!-- 事件处理器不来自子元素 --><div @click.self="doThat">...</div>复制代码
(18)如何保证一份css文件样式不会作用在全局(样式隔离)?
scoped
BEM(block element modifier) 可读性好,命名太长,css打包后的体积会更大
css-loader(css模块化) 会将css类名转换成哈希值;代码可读性变差
css in js
预处理器的嵌套样式
shadow DOM(微前端)

大厂面试题分享 面试题库

后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/353539.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s集群概念组件简介

一、Kubernetes 集群概述1.2 Kubernetes 资源资源用途服务&#xff08;Service&#xff09;Kubernetes 使用服务在一组 pod 上公开正在运行的应用程序。ReplicaSetKubernetes 使用 ReplicaSet 来维护恒定的 pod 号。Deployment维护应用程序生命周期的资源对象。1.3 Kubernetes …

重生之我是赏金猎人-SRC漏洞挖掘(七)-看我如何从FUZZ到SRC官网XSS

0x01 前奏 本文来自&#xff1a;RGM78sec 截至发稿&#xff0c;vuln早已修复 前不久在挖掘某SRC时&#xff0c;偶然在该SRC官网的编辑器发现了一个接口。 起初以为是任意文件包含能RCE了&#xff0c;后来测试发现只是拼接读取了远程资源站的图片&#xff0c;原本都想着放弃…

TypeScript(二)基本数据类型

前言 距离上篇博客已有两年了&#xff0c;对TS也有了一定的认识&#xff0c;于是计划继续更新系列文章 基本数据类型 在JS中&#xff0c;基本数据类型有&#xff1a;Boolan&#xff08;布尔&#xff09;&#xff0c;Number&#xff08;数字&#xff09;&#xff0c;String&a…

什么是事务?Mysql事务怎么用?Mybatis怎么操作事务的?Spring呢?快进来看看

目录 一、计算机中的事务 1. 概念 2.事务的ACID特性 3.事务类型 1)手动事务 2)自动事务 4.为什么需要事务? 5.优点 二、MySQL事务 1.语法格式: 2.关闭自动提交&#xff0c;开启新事务 3.开启自动提交&#xff0c;关闭事务控制 三、Mybatis事务 Mybatis开关事务控…

Meta AR眼镜主管:正开发史无前例的AR,但要解决很多困难

前不久&#xff0c;Meta CTO Andrew Bosworth在个人博客上“怒斥”公司内部不够专注&#xff0c;应该将资源投入在有核心竞争力、高投资回报率的业务上&#xff0c;而不是开发取悦用户却不赚钱的产品。尽管删除一些小众功能后&#xff0c;用户可能会不满&#xff0c;但为了让Me…

Bi系统跟数据中台的区别是什么?

随着数据时代的发展&#xff0c;BI分析是当今数据时代必不可少的能力之一。BI系统通过系统化产品化的方法&#xff0c;能够大幅降低数据的获取成本、提升数据使用效率。同时借助可视化、交互式的操作&#xff0c;可以高效支持业务的分析及发展。 BI如此火热&#xff0c;随之而…

openpnp - 增加散料飞达

文章目录openpnp - 增加散料飞达概述笔记飞达在设备上的放置方向编带料在飞达中的方向将相机移动到飞达料的第一孔的中心捕获保存第1孔中心编带设置测试相机位置是否正确测试吸嘴的位置是否正确将吸嘴回到安全位置测试是否能正确抓料ENDopenpnp - 增加散料飞达 概述 使用open…

MySQL性能调优与设计——MySQL调优——慢查询

MySQL调优–慢查询 MySQL调优金字塔 很明显从图上可以看出&#xff0c;越往上走&#xff0c;难度越来越高&#xff0c;收益却越来越小。 对于架构调优&#xff0c;在系统设计时首先需要充分考虑业务的实际情况&#xff0c;是否可以把不适合数据库做的事情放到数据仓库、搜索引…

分享111个HTML旅游交通模板,总有一款适合您

分享111个HTML旅游交通模板&#xff0c;总有一款适合您 111个HTML旅游交通模板下载链接&#xff1a;https://pan.baidu.com/s/1VHJSBVJbj4PQpPAwxysJBg?pwd8b17 提取码&#xff1a;8b17 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 汽车租赁平台网页模板 汽…

时的科技迎1亿融资,这辆“空中的士”能否实现真正飞行?

近期&#xff0c;进行载人eVTOL的研发、生产和销售的时的科技宣布完成1亿元Pre-A轮融资&#xff0c;成立不到两年&#xff0c;这已是时的科技的第三轮融资&#xff0c;此前&#xff0c;时的科技已获得蓝驰创投和德迅投资千万美元种子轮投资。在不少人看来&#xff0c;时的科技所…

恢复出厂设置在哪里?抓住这份官方指南(Win10电脑)

当电脑经常报告错误&#xff0c;并伴有运行缓慢和停滞等问题时&#xff0c;很可能是计算机老化造成的。想要解决这个问题&#xff0c;可以通过恢复出厂设置使得电脑恢复成初始状态&#xff0c;自然而然问题就解决了。 但是很多人不知道&#xff0c;恢复出厂设置在哪里&#xf…

【自学Linux】Linux运行级别

Linux运行级别 Linux运行级别教程 Linux 可以支持运行级别的设置&#xff0c;运行级别就是操作系统当前正在运行的功能级别&#xff0c;级别是从 0 到 6。Centos7 系统之前的版本是通过 /etc/inittab 文件来定义系统&#xff0c;而 CentOS7 用的是 /lib/systemd/system/runle…

MySQL数据库调优————JOIN优化

JOIN的种类 LEFT JOIN SELECT <select_list> FROM Table_A A LEFT JOIN Table_B B ON A.Key B.Key求的是A所有的数据以及A与B的交集 RIGHT JOIN SELECT <select_list> FROM Table_A A RIGHT JOIN Table_B B ON A.Key B.Key求的是B所有的数据以及A和B的交集 IN…

Nginx 新增模块 http_image_filter_module 来实现动态生成缩略图

前言 通过 nginx 的 HttpImageFilterModule 模块裁剪过大的图片到指定大小&#xff0c;这个nginx自带的模块是默认关闭的&#xff0c;所以需要重新编译nginx加上此模块。 一、编译 nginx 1.查看 nginx 模块 由于nginx 是之前装好的&#xff0c;这里需要先看一下是否安装了H…

Sentinel简单使用

目录 1.官网 2.主要作用 3.安装启动 3.功能详细 3.1实时监控 3.2 簇点链路 3.3流控规则 3.4熔断规则 3.4热点key限流 3.5系统规则 4.SentinelResource注解解释 1.官网 gitHub GitHub - alibaba/Sentinel: A powerful flow control component enabling reliability…

尚医通 (十六)搭建平台用户系统前端环境 | 用户平台首页数据

目录一、服务端渲染技术NUXT1、什么是服务端渲染2、什么是NUXT二、NUXT环境初始化1、下载压缩包2、解压3、修改package.json4、修改nuxt.config.js5、在命令提示终端中进入项目目录6、安装依赖7、测试运行8、NUXT目录结构9、封装axios10、引入element-ui三、首页静态数据整合1、…

Docker镜像发布到阿里云和私有库

目录 一、Docker镜像 &#xff08;一&#xff09;概述 &#xff08;二&#xff09;Docker镜像加载原理 &#xff08;三&#xff09;镜像分层结构优势 &#xff08;四&#xff09;重点理解 &#xff08;五&#xff09;docker commit操作实例 &#xff08;六&#xff09;总…

如何解决nas无公网问题,实现kodbox可道云内网映射外网访问

目前&#xff0c;市面上有很多NAS产品&#xff0c;如群晖、威联通以及华硕NAS等&#xff0c;它们都自带提供了一些基础的文件管理功能&#xff0c;有的也可以直接在NAS上使用文件管理的应用程序。 kodbox可道云是一个基于 Web 技术的私有云和在线文件管理系统&#xff0c;有着…

考了PMP证后工资大概是多少 ?(含pmp资料)

这个岗位的不同还有每个公司的薪资也是不一样的&#xff0c;具体的数字肯定是没有的&#xff0c;但大概的比例还是有的&#xff0c;据PMI调查&#xff0c;在获得PMP证书的人当中&#xff0c;在PMP认证一年后&#xff0c;年薪有所增长的比例为66%&#xff0c;上涨幅度主要集中在…

抓包工具Charles(二)-移动端APP抓包(设置手机代理、安装证书)

安装好Charles之后&#xff0c;还只能捕获电脑的接口请求想要抓取移动设备的APP还需要设置代理、安装证书。 文章目录一、抓包原理二、手机设置网络代理1、 查看电脑的IP地址&#xff08;local IP address&#xff09;2、设置手机网络代理&#xff08;1&#xff09;iOS设备&…