当前位置:网站首页 > 技术团队招聘与面试 > 正文

重绘和回流(重绘和回流面试题)



#行内外空元素

行内元素: a/img/span/b/strong/input/select/section

块级元素: div/p/table/ul/li/h1-h6

空元素: br/hr/img/input/link/meta

#浏览器内核

Trident: IE,360,搜狗

Gecko: Firefox

Presto: 旧Opera

Webkit: Safari,旧Chrome

Blink: Chrome,Opera

#浏览器存储

cookie: 一般表示用户状态的数据,大小为4KB,Cookies的数据始终在同源的http请求中携带,会在浏览器和服务器中来回传递。

sessionStorage:关闭浏览器后就销毁,大小一般都是:5MB,把数据存储在本地。

localStorage:永久保存,大小一般都是:5MB,把数据存储在本地。

#html新特性

加入了canvas绘图和SVG绘图,加入了video和audio标签。

语义化标签:header、nav、footer

本地存储:sessionStorage,sessionStorage

#html语义化

用正确的标签做正确的事情,html语义化让页面的内容结构更加简单易懂,

便于搜索引擎解析,便于阅读维护和理解。

#img的title和alt有什么区别?

title是当鼠标划到图片元素时显示的图片描述

alt是img的特有属性,是图片内容的等价描述,用于图片无法加载时显示

#Web标准,w3c标准是什么?

标签闭合、标签小写、不乱嵌套,使用外链css和js、结构行为表现的分离。

#浏览器盒模型?

W3C: 宽度/padding/border/margin都是单独分开的

IE盒模型: 宽度 = 内容宽度+padding+border 是一起的

#清除浮动的方式

1.在子元素并级后面添加一个新元素,添加clear:both属性

2.给父元素添加overflow:hidden

3.通过给父级元素添加伪类after

 

#CSS选择器

ID选择器 (#ID)

Class选择器 (.class名)

标签选择器 (标签)

通配符 (*)

相邻选择器 (div+p)

子选择器 (div>p)

后代选择器 (div p)

多个选择器 (div,p,a,ul)

伪类选择器 (a:hover)

#CSS样式优先级计算法

1/就近原则,后加样式优于前面的样式

2/内嵌样式>内联样式>外联样式

3/!Important 大于一切样式

#文本显示省略号

文本超出隐藏并显示省略号

 

文本只显示两行,第二行超出隐藏并显示省略号

 

#宽高计算

 

#flex布局

flex水平垂直居中

 

align-content:flex-start (竖直方向对齐方式)

多个元素,竖直均匀分布

 

左边固定宽度,右边占满剩余部分

 

#grid布局

居中

 

导航目录自适应布局

每列宽度,然后自动填充

 

#水平垂直居中

 
 

#元素旋转

旋转45度

 

#响应式布局

1.媒体查询,@media可以根据不同的屏幕定义不同的样式。

 

2.百分比布局

2.使用rem布局,vue中使用amfe-flexible和postcss-px2rem插件完成。

原生

 

#BFC

BFC即 Block Formatting Contexts ,块级格式化上下文

独立的渲染区域,内部元素的渲染不会影响外界。

形成BFC 条件

浮动元素 float属性不为none

定位---position: absolute,fixed

给元素添加display属性---display: inline-block, flex, inline-flex, table-cell,table-caption; 给元素添加overflow属性----overflow: hidden,auto,scroll(除了visible);

#字符串方法

String charAt 返回在指定位置的字符。 charCodeAt 返回在指定的位置的字符的 Unicode 编码。 IndexOf 返回某个指定的字符串值在字符串中首次出现的位置。 slice 提取字符串的片断,并在新的字符串中返回被提取的部分。 split 把字符串分割为字符串数组。 toLowerCase 把字符串转换为小写。 toUpperCase 把字符串转换为大写。 trim 去除字符串两边的空白

模板字符串

 

#数组方法

  • join()

    数组转字符串,参数为分隔符。返回字符串,原数组不变。

  • push()和pop()

    向数组的末尾添加元素,返回数组长度,原数组改变。

    删除数组的末尾元素,返回删除的元素,原数组改变

  • shift() 和 unshift()

    删除数组的第一个元素,返回删除元素,原数组改变。

    向数组的开头增加元素,返回数组长度,原数组改变。

  • sort()

    对数组的元素进行排序,默认按照字符编码排序,参数为函数。返回新数组,原数组改变。

     
  • reverse() 反转数组的元素顺序。返回新数组,原数组改变。
  • concat() 合并数组,返回新数组,原数组不变。
  • slice() 数组截取

    arrayObject.slice(start,end),返回所选范围的元素的数组,原数组不变。

     
  • splice() 删除或新增

    arrayObject.splice(index,howmany,item1,.....,itemX)

    从数组中添加或删除元素,返回被删除的元素数组,原数组改变

     
  • indexOf()和 lastIndexOf()

    返回参数在数组中的位置,原数组不变。

    返回参数在数组中最后出现的位置,原数组不变。

  • includes() 判断一个数组是否包含一个指定的值。返回布尔值,原数组不变。
  • find()和findIndex()

    返回数组中符合条件的第一个元素,参数为函数,原数组不变。

     

    返回数组中符合条件的第一个元素的索引。

  • flat() 多维数组转一维数组,返回新数组,原数组不变。
  • forEach() 和map()

    遍历数组,forEach没有返回,map返回新数组。

     
  • filter() 返回数组中符合条件的全部元素,参数为函数,原数组不变。
     
  • every() 和 some()

    every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true。

    some()是对数组中每一项运行给定函数,如果该函数对任一项返回true,则返回true。

#数组去重

 

#数组排序

 

#Date时间对象

getFullYear 从 Date 对象以四位数字返回年份。 getMonth 从 Date 对象返回月份 (0 ~ 11)。 getDate 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 getHours 返回 Date 对象的小时 (0 ~ 23)。 getMinutes 返回 Date 对象的分钟 (0 ~ 59)。 getSeconds 返回 Date 对象的秒数 (0 ~ 59)。 getDay 从 Date 对象返回一周中的某一天 (0 ~ 6)。 getTime 返回 1970 年 1 月 1 日至今的毫秒数。

 

#数据类型

1.基本数据类型(栈):Number,String,Boolean,Undefined,Null,Symbol(es6)

2.引用数据类型(堆):Object,Array,Function , Date

JavaScript 里使用 typeof 来判断数据类型,只能区分基本类型

 

#new操作符在创建实例的经历的阶段

new创建了一个对象,共经历了4个阶段:

1.创建一个空对象

2.设置原型链

3.让实例化对象中的this指向对象,并执行函数体

4.返回创建的对象

#闭包

函数内部嵌套的函数

有权访问另一个函数作用域中的变量的函数。常见方式,就是在一个函数内部创建另一个函数。

功能:在函数外,访问函数内的变量。保持引用,不被回收。创建私有环境。

缺点:内存泄漏

 

#原型

1.每一个函数都有一个'prototype'属性,即显示原型。prototype(对象属性)的所有属性和方法,都会被构造函数的实例继承。

2.每一个实例对象都有一个'proto '属性,即隐式原型。

原型链

获取对象属性时,如果对象本身没有这个属性,就会去找这个对象'proto '属性指向上一个对象,一直找到最顶层()为止。Object.prototype对象也有proto属性值为null

 

#深拷贝

 

#ES6

1.let 和const

var定义变量,会有变量声名提升,let不会。

var定义全局的变量,let和const定义块级的变量。

const定义常量。for循环用let。

2.模板字符串

 

3..函数默认值

 

函数剩余参数

 

4.拓展运算符

 

5.箭头函数

 

箭头函数没有this指向

箭头函数不能使用new来实例化对象

this指向:

1.普通函数,this指向window

2.谁调用指向谁

3.call、apply、bind这三个方法将this指向绑定在传入的对象上

4.new实例化后指向实例对象

5.箭头函数 ,根据外层作用域来决定this

call,apply,bind的区别?

call和apply改变this指向,bind则是绑定this指向后返回新函数。

call和apply立即执行,bind需要调用才执行。

call如果传的多个参数,依次填,apply则是第二个参数是数组。

 

6.解构赋值

 

7.对象的方法

 

8.set和map

 

#Promise

Promise 是异步编程的一种解决方案

对象是一个构造函数,用来生成实例

 

问执行顺序,控制台依次打印?

 

10.class类

 

#http的状态码

1XX:信息状态码

2XX:成功状态码

3XX:重定向

4XX:客户端错误

5XX:服务器错误

常见状态码:

304 自从上次请求后,请求的网页未修改过。

401 没有权限,请求要求身份验证。

403 服务器已经理解请求,但是拒绝执行它。

404 请求失败

500 服务器遇到一个未曾预料的情况,导致无法完成对请求的处理

503 由于请示服务器维护或者过载,服务器当前无法处理请求

#get与post的区别

GET在浏览器回退时是无害的,而POST会再次提交请求

GET产生的URL地址可被Bookmark,而POST不可以

GET请求会被浏览器主动cache缓存,而POST不会,除非手动设置

GET请求只能进行url编码,而POST支持多种编码方式。

GET请求参数会被完整的保留在浏览器历史记录中,而POST中的参数不会被保留

GET请求在URL中传送的参数是有长度限制的,而POST没有

对参数的数据类型,GET只接受ASCII字符,而POST没有限制

GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息

GET参数通过URL传递,POST放在Request body中

#ajax的过程

 

#axios封装

 

#vue的指令

v-text:把数据插入标签

v-html:把html插入标签

v-if:判断是否为真,然后重组、销毁DOM节点

v-for:数据循环

v-bind:class 绑定一个属性

v-model:实现双向绑定

v-on:添加事件

v-else:配合v-if使用

#v-show和v-if

v-show指令是通过修改元素的display的CSS属性让其显示或隐藏

v-if指令是直接销毁和重建DOM节点,达到让元素显示和隐藏的效果

#CSS只在当前组件中生效

在当前文档中使用style标签,并添加scope属性

#动态类绑定

 
 

#避免 v-if 和 v-for

v-for 比 v-if 具有更高的优先级,每一次都需要遍历整个数组,造成不必要的计算,影响性能。

永远不要把 v-if 和 v-for 同时用在同一个元素上,带来性能方面的浪费(每次渲染都会先循环再进行条件判断)

避免出现这种情况,则在外层嵌套template(页面渲染不生成dom节点),在这一层进行v-if判断,然后在内部进行v-for循环

#虚拟Dom

用JS模拟真实的dom结构,作用是高效的渲染页面 减少不必要的dom操作 提高渲染效率

#双向绑定

Vue是采用数据劫持+”发布-订阅模式“的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。

 

#data是函数?

组件中的写成一个函数,数据以函数返回值形式定义,这样每复用一次组件,就会返回一份新的,类似于给每个组件实例创建一个私有的数据空间,让各个组件实例维护各自的数据。

#$nextTick

在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM

#父子组件传值

父传子

 
 
 
 

子传父

父页面

 
 

子页面

 
 

#watch

基础用法

 

deep 深度监听

 
 

#Vue Router

标签中使用

 

方法中使用

 

嵌套路由

 

重定向

 

#路由守卫

全局前置守卫 router.beforeEach

 

全局后置钩子 router.afterEach

 

路由独享的守卫 beforeEnter

 

组件内的守卫

 

路由修改网页标题

 

#路由模式

hash模式

使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载,其显示的网路路径中会有 “#” 号,有一点点丑。这是最安全的模式,因为他兼容所有的浏览器和服务器。

history模式 美化后的hash模式,会去掉路径中的 “#”。依赖于Html5 的history,pushState API,所以要担心IE9以及一下的版本,感觉不用担心。并且还包括forward、back、go三个方法,对应浏览器的前进,后退,跳转操作。就是浏览器左上角的前进、后退等按钮进行的操作。

#vuex

 
 

#vue性能优化

路由懒加载,访问时才异步加载,import()实现异步组件

组件缓存keep-alive,缓存组件以及状态

v-show复用dom,避免重复创建组件

v-for 遍历时不使用v-if

事件销毁,组件卸载的时候,销毁一些自定义的事件,如定时器

图片懒加载 vue-lazyload

按需加载第三方组件库

服务器端开启gzip压缩

#使用echarts

 
 

#跨域解决

1.让服务器的请求头设置允许跨域。

2.jsonp实现跨域请求。

3.vue配置跨域

根目录vue.config.js

 

#环境配置

根目录新建

.env.development,测试环境

 

.env.production,正式环境

 

#判断移动、pc端

 

#安装

npm init -y 生成package.json文件

npm i webpack webpack-cli --save-dev

#1.生命周期

页面生命周期

onLoad、onShow、onReady、onHide、onUnload

#节流和防抖

https://blog.csdn.net/m0_/article/details/?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~LandingCtr~Rate-1.queryctrv4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~LandingCtr~Rate-1.queryctrv4&utm_relevant_index=2(opens new window)

节流和防抖本质上都是控制事件执行的频率,但是触发事件的时机本质上有区别,防抖是在用户多次触发事件,当用户停止触发事件,将事件执行一次;节流是用户多次触发事件,会在多次触发的过程中,间隔执行事件。

防抖是最后一个执行事件才会触发函数,节流在一定时间内会触发函数。

防抖案例:按钮一直被点击,控制时间1s内被点击,事件不执行,1s后没有被点击则执行事件。

节流案例:按钮被点击后变为禁用状态,5s后变为可点击状态。

防抖:输入框应用

节流:页面滚动加载数据

 
 

#简介

  • 什么是 WebSocket websocket是HTML5开始提供的一种网络通信协议,它的目的是在浏览器之间建立一个不受限的双方通信的通道,比如说,服务器可以在任意时刻发送信息给浏览器。在websocket的API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输
  • WebSocket 的方法 ws.send() - 向服务器发送数据 ws.close() - 关闭连接
  • WebSocket 的事件 ws.onopen - 建立连接时触发 ws.onmessage - 客户端接受服务端数据时触发 ws.onerror - 通信错误时触发 ws.onclose - 连接关闭时触发
  • WebSocket.readyState readyState 属性返回实例对象的当前状态,共有四种状态 0 - 表示正在连接 1 - 表示连接成功,可以进行通信 2 - 表示连接正在关闭 3 - 表示连接已经关闭,或者打开连接失败 使用
     

https://lbsyun.baidu.com/index.php?title=jspopular3.0/guide/helloworld(opens new window)

到此这篇重绘和回流(重绘和回流面试题)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • jvm内存结构面试题(jvm的内存结构 面试)2025-05-21 22:54:04
  • jvm内存结构面试题(jvm 内存结构)2025-05-21 22:54:04
  • 存储过程 面试题(存储过程笔试题)2025-05-21 22:54:04
  • 程序员 面试 八股文(程序员面试八股文合集)2025-05-21 22:54:04
  • 字符串转码utf8(字符串转码技术介绍)2025-05-21 22:54:04
  • 程序员 面试 八股文(程序员面试八股文有什么)2025-05-21 22:54:04
  • 存储过程 面试题(存储过程面试常见问题)2025-05-21 22:54:04
  • 存储测试面试题(存储测试的关键技术)2025-05-21 22:54:04
  • 字符串转码技术介绍(字符串转码技术介绍图)2025-05-21 22:54:04
  • 存储过程 面试题(存储过程面试题)2025-05-21 22:54:04
  • 全屏图片