软件开发定制定制2022前端面试题附答案.

1、HTML5的新特性?

  • 1、软件开发定制定制语义化标签,比如header、footer、nav、aside、article、section
  • 2、音视频,比如audio、video
  • 3、画布canvas、矢量图svg
  • 3、画布,canvas的api有getContext、fillStyle、fillRect等
  • 4、本地存储localStorage、sessionStorage
  • 5、web worker

2、软件开发定制定制语义化的好处?

  • 1、软件开发定制定制代码分块清晰,便于维护
  • 2、软件开发定制定制页面结构清晰,软件开发定制定制便于浏览器。软件开发定制定制搜索引擎解析
  • 3、软件开发定制定制利于搜索引擎的爬取,利于SEO

3、canvas的常用api有哪些?

  • getContext:软件开发定制定制返回一个指定canvas软件开发定制定制的绘画环境对象
  • beginPath:开始绘制
  • moveTo:软件开发定制定制移动画笔位置
  • lineTo:软件开发定制定制用来画线段
  • stroke:用来实施绘制的操作
  • lineStyle:设置线段的样式
  • closePath:结束绘制

4、web worker有什么作用?应用场景有哪些?

开启一个子线程,且子线程的操作不受线程的影响

  • 大数据处理
  • 耗费时间较长的操作

5、浏览器本地缓存localStorage与sessionStorage的区别?

  • 生命周期不同:前者一直存在浏览器,除非用户手动清除,后者生命周期结束于浏览器或者tab页的关闭

CSS3

1、有哪些新特性呢?

flex、、transform、border-radius、box-shadow、opacity

2、背景毛玻璃的效果如何实现呢?

filter:blur()

3、position有哪几种呢?

  • static:默认
  • relative:相对于自身
  • absolute:相对于最近的一个非static的祖先级元素进行定位
  • fixed:相对于屏幕窗口进行定位
  • sticky:用来实现吸顶效果

4、如何自己实现跟position:sticky的效果?

使用或者IntersectionObserver计算指定元素位置,到达一定距离更改指定元素定位为fixed,从而实现sticky的效果

5、重绘回流是什么呢?

6、怎么降低重绘回流的次数呢?

7、flex布局如何更改主轴方向?

设置flex-direction样式属性

8、flex布局如何允许换行呢?

设置flex-wrap样式属性

9、flex布局实现水平垂直据居中?

设置justify-content和align-items都为center

10、flex:1的原理是什么呢?

flex-grow 、flex-shrink 、flex-basis这三个样式的合集,全写状态为flex:0 1 auto,简写为flex: 1

11、rem与em的区别是什么呢?

  • rem:相对于<html>标签的font-size去决定大小,例如html标签font-size为14px,则2rem === 28px
  • em:相对于自身的font-size去决定大小,自身没有font-size则继承祖先级元素的font-size

JavaScript

1、原型链是什么呢?有什么作用吗

  • 原型链:原型链是一条对象隐式原型不断往上指向的一条指向链,尽头是Object的隐式原型,也就是null
  • 作用:构造函数原型上的东西可以让实例们共享,从而节省了空间

2、闭包是什么?有什么优缺点

闭包是一个能让函数外部访问到函数内部的一个函数

  • 优点是:延长函数内部变量的寿命,使函数外部能访问到函数内部
  • 缺点是:滥用闭包导致内存溢出,页面卡顿

3、JavaScript总共有几种数据类型?

字符串、布尔值、数值、undefined、null、object、symbol、bigInt

4、JavaScript判断类型的方式是什么?

  • typeof:只能判断 字符串、布尔值、数值、undefined、function、object、symbol、bigInt,不能区分判断 数组、null、对象
  • A instanceof B:判断A是否为B的实例对象,从而判断A是否为B类型
  • Object.prototype.toString.call():可以判断所有的数据类型

6、JavaScript不同类型的存储方式有何区别?

普遍认为

  • 基础数据类型存于栈内存
  • 引用数据类型存于堆内存 我认为
  • 所有数据都存于堆内存,栈内存只存指针

7、你说字符串存储在栈内存,那如果字符串很长。超过了栈内存最大容量呢?

所以说我觉得所有数据都存于堆内存,毕竟栈内存容量有限。

8、call、apply、bind的区别?

  • call于apply的区别在于传参,前者直接传参,后者传一个数组
  • bind传参后不立即执行,而是会返回一个函数,这个函数可以继续传参,且执行(bind函数可以分两次传参)

9、bind返回的函数能作为构造函数吗?

不能哦,会报错的

10、赋值、深拷贝与浅拷贝有什么不同?

  • 赋值:赋值指针指向,还是用的同一个内存空间
  • 浅拷贝:只拷贝第一层
  • 深拷贝:所有层都会进行拷贝

11、怎么判断一个对象有环引用呢?

定义一个空数组,且对于目标对象进行递归,每次都判断递归项是否为对象,是的话放进数组,且每次判断属性值是否在数组里,在的话说明环引用了

  1. function cycleDetector(obj) {
  2. const arr = [obj]
  3. let flag = false
  4. function cycle(o) {
  5. const keys = Object.keys(o)
  6. for (const key of keys) {
  7. const temp = o[key]
  8. if (typeof temp === &apos;object&apos; && temp !== null) {
  9. if (arr.indexOf(temp) &gt;= 0) {
  10. flag = true
  11. return
  12. }
  13. arr.push(temp)
  14. cycle(temp)
  15. }
  16. }
  17. }
  18. cycle(obj)
  19. return flag
  20. }

ES6

1、let、const的暂时性死区问题?

在一个作用域里如果存在let、const定义的一个变量之前使用该变量,则报错“cannot access xx before initialization”

2、Promise的then为什么可以链式调用?

Promise的then方法返回一个新的Promise对象,保证了then方法可以进行链式调用

3、async/await的用法?

  • async/await的作用是:以同步的方式执行异步操作,实现排队效果
  • async:async函数执行返回一个Promise
  • await:await后接Promise则会等待Promise返回结果,接普通函数执行则会接收返回结果
  • await只能在async中使用,但是浏览器调试中await可单独使用

4、Class的静态属性、继承?

  • 静态属性:static关键字定义的变量属性,只能通过Class构造函数的属性的方式去访问
  • 继承:使用 Child extends Father {},且配合super对象,完成继承

Vue

1、Vue与React的区别在哪?

比较的是Vue2 相同点:

  • 1.都使用了虚拟dom
  • 2.组件化开发
  • 3.都是单向数据流(父子组件之间,不建议子修改父传下来的数据)
  • 4.都支持服务端渲染 不同点:
  • 1.React的JSX,Vue的template
  • 2.数据变化,React手动(setState),Vue自动(初始化已响应式处理,Object.defineProperty,Proxy)
  • 3.React单向绑定,Vue双向绑定
  • 4.React的Redux、mobx,Vue的Vuex、pinia

2、computed与watch的区别?

  • computed:多对一,多个值的变化决定一个目标值的变化
  • watch:一对多,一个值的变化,引起多个目标值的变化

3、Vue的生命周期介绍一下?

4、Vue的实例加载完成在哪个生命周期呢?

beforeCreated

5、Vue的真实dom挂载完成在哪个生命周期呢?

mounted

6、数据更改如何获取最新DOM

nextTick

7、路由有几种模式,有何区别?

  • hash模式:监听url中hash的变化来实现不同页面的展示,链接带#
  • history模式:url中不带#,利用HTML5的history.pushState方法进行不刷新跳转页面,但需要后端配合404时的重定向
  • abstract:使用在非浏览器的环境,例如node环境

8、路由有哪些钩子函数?

全局钩子

  • beforeEach:跳转路由前
    • to:将要跳转进入的路由对象
    • from:将要离开的路由对象
    • next:一个方法,执行则完成跳转
  • afterEach:跳转路由后
    • to:将要跳转进入的路由对象

路由独享钩子

  1. routes: [
  2. {
  3. path: &apos;/xxx&apos;,
  4. component: xxx,
  5. beforeEnter: (to, from, next) =&gt; {
  6. }
  7. }
  8. ]

组件内路由钩子

  • beforeRouteEnter(to, from, next):跳转路由渲染组件时触发
  • beforeRouteUpdate(to, from, next):跳转路由且组件被复用时触发
  • beforeRouteLeave(to, from, next):跳转路由且离开组件时出触发

如果对你有帮助请给小编一个点赞加评论

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发