前端面试题--持续更新

什么html语义化(HTML语义化_jewfer的博客-CSDN博客_html语义化

语义化html结构,使爬虫和设备可以更好解析。优势在于有利于seo、方便设备解析、语义化标签,解读起来更方便。如 footer、nav、header标签等。

css垂直居中几种方式

<--第一种-->

<div class="test-box" style="
    position: relative;
    height: 300px;
"><div class="test" style="
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
">2222</div></div>

<--第二种-->
<div class="test-box" style="
    display: flex;
    height: 300px;
    justify-content: center;
    align-items: center;
"><div class="test" style="
">2222</div></div>

<--第三种-->
<div class="test-box" style="
    height: 300px;
    display: table-cell;
    vertical-align: middle;
    text-align: center;
    width: 100vw;
"><div class="test" style="
    display: inline-block;
    background-color: red;
">2222</div></div>

computed和watch区别(计算属性和侦听器 — Vue.js

计算属性有缓存,大多数情况下,计算属性试用。当需要在数据变化时执行异步或开销较大的操作时,使用监听器。

vue生命周期(API — Vue.js

初始化beforeCreatecreated
挂载beforeMountmounted
更新beforeUpdateupdated
销毁beforeDestroydestroyed
keep-aliveactivateddeactivated
后代组件的错误errorCaptured

created和mounted区别(created和mounted的区别_在线小白www的博客-CSDN博客_created和mounted区别

created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成识图。
mounted:在模板渲染成html后调用,通常初始化页面完成后,再对html的dom节点进行一些需要的操作。

vue传值的方式

  1. 父传子:父组件绑定值,子组件props接值。
  2. 子传父:父组件绑定事件,子组件通过 $emit 传值。
  3. 兄弟之间通信:绑定一个全局vue实列,通过全局实列 $emit 去传,接收方通过全局实列 $on 去接。
  4. ref:父组件通过 $refs  调用子组件的方法或者访问数据。
  5. vuex:访问 store 里面的值。
  6. $parent($root获取根节点):子组件 通过 $parent 获取父组件的方法或者属性。
  7. localStorage和sessionStorage:通过保存和取值,传值。
  8. 路由传值:router.push('/test?id=0')
  9. $attrs(祖传孙):父组件不需要用到的数据,祖传到孙组件,v-bind=“$attars”
  10. $listeners(孙传祖):孙传祖,v-on="$listeners"
  11. 全局变量:设置一个全局变量

vue路由 Hash 模式 和 HTML5 模式区别

hashhtml5
是否有#
是否是锚点定位
兼容ie8ie10
复杂数据是否限制体积

webpack 中loader和plugin区别(loader | webpack 中文网

loader 用于对模块的源代码进行转换。loader 可以使你在 import 或"加载"模块时预处理文件。因此,loader 类似于其他构建工具中“任务(task)”,并提供了处理前端构建步骤的强大方法。loader 可以将文件从不同的语言(如 TypeScript)转换为 JavaScript,或将内联图像转换为 data URL。loader 甚至允许你直接在 JavaScript 模块中 import CSS文件!

插件是 webpack 的支柱功能。webpack 自身也是构建于,你在 webpack 配置中用到的相同的插件系统之上!插件目的在于解决 loader 无法实现的其他事。

cookie,localStorage,sessionStorage

localstorage 必知必会 | 菜鸟教程

cookie、localStorage和sessionStorage详解_Jane街灯的博客-CSDN博客_localstorage和sessionstorage和cookie

cookielocalStorage sessionStorage
过期时间设置过期时间或者同sessionStorage永久有效只要关闭浏览器(也包括浏览器的标签页),就会被清空
文件大小

4K

5M5M
域名限制同源窗口下共享,可以让子域名继承同源窗口下共享,localstorage是无法跨域的,也无法让子域名继承父域名的localstorage数据当前浏览器窗口下
默认请求中携带支持不支持不支持
事件通知机制不支持支持支持

偏函数

简单的理解偏函数,它是对原始函数的二次封装,是将现有函数的部分参数预先绑定为指定值,从而得到一个新的函数,该函数就称为偏函数。

felx :1  表达的含义

flex:1  等于  flex-grow:1、flex-shrink:1、flex-basis:0%

内嵌H5与原生通信用的是什么

URL Scheme:

原生应用可以通过URL Scheme打开H5页面,并且在URL中传递参数,H5页面可以通过window.location.href获取URL参数。

优点:

  • 使用简单,不需要额外的桥接代码。
  • 可以通过URL传递参数,实现H5与原生应用之间的数据交换。

缺点:

  • 只能进行单向通信,无法实现原生应用调用H5页面的方法。
  • 不支持异步调用,数据传输量也受到URL长度限制。

JSBridge:

JSBridge是一种桥接技术,可以让H5与原生应用之间相互调用。原生应用通过注入JSBridge对象,提供一些调用接口,H5页面可以通过JSBridge对象调用原生接口;反过来,原生应用也可以通过JSBridge调用H5页面的方法。

优点:

  • 可以实现双向通信,H5页面和原生应用之间可以相互调用方法。
  • 支持异步调用,可以传输大量数据。

缺点:

  • 需要额外的桥接代码,增加了开发成本。
  • 由于每个原生应用的JSBridge实现不同,需要定制不同的JSBridge代码。

postMessage:

H5页面可以通过window.postMessage方法向原生应用发送消息,原生应用可以通过WebView的addJavascriptInterface方法注册一个JavaScript对象,实现对H5页面的监听。

优点:

  • 可以实现双向通信。
  • 支持异步调用,可以传输大量数据。

缺点:

  • 需要额外的桥接代码,增加了开发成本。
  • 由于每个原生应用的postMessage实现不同,需要定制不同的代码。

WebViewClient:

通过重写WebViewClient的shouldOverrideUrlLoading方法,可以拦截WebView的URL请求,实现H5页面调用原生应用的功能。

优点:

  • 可以实现双向通信。
  • 不需要额外的桥接代码。

缺点:

  • 需要重写WebViewClient的shouldOverrideUrlLoading方法,增加了开发成本。
  • 只能通过URL传递参数,数据传输量受到URL长度限制。

vue2 和 vue3区别

  1. 性能优化:Vue 3 对于性能进行了优化,通过使用 Proxy 对象替代 Object.defineProperty 方法,提高了响应式数据的性能。在编译过程中,Vue 3 使用了静态提升技术,可以减少渲染函数的创建和更新的时间。

  2. Composition API:Vue 3 引入了 Composition API,这是一种基于函数的 API,可以更好的组织组件逻辑代码,提高代码的可读性和可维护性。与 Vue 2 相比,Composition API 更加灵活,可以更好的支持 TypeScript 等语言。

  3. TypeScript 支持:Vue 3 对 TypeScript 的支持更加完善,包括提供了更好的类型推断和支持 TypeScript 类型的 Emits API。

  4. 重构 API 设计:Vue 3 对 API 进行了重构,更加统一和简单。例如,Vue 3 中的 $attrs 和 $listeners 等属性都被合并到了 v-bind 和 v-on 指令中。

  5. 改进了 Teleport(原名 Portal)组件:Vue 3 中的 Teleport 组件可以更好的支持多个 Teleport 目标。

总之,Vue 3 在性能、可读性、可维护性和 TypeScript 支持等方面都有所提升,对于 Vue 开发者来说,是一个非常好的升级选择。但是需要注意的是,Vue 3 与 Vue 2 在一些概念和 API 上有所不同,需要花费一些时间进行学习和适应。

什么是闭包?闭包运用的例子?

闭包是指一个函数能够访问并操作其外部函数中定义的变量,即使外部函数已经执行完毕,这些变量仍然能够被访问和操作。闭包通常用来创建私有变量和方法,以及实现高阶函数等功能。

下面是一个闭包的例子:

function createCounter() {
  let count = 0;
  return function() {
    count++;
    console.log(count);
  }
}

const counter = createCounter();
counter(); // 输出 1
counter(); // 输出 2
counter(); // 输出 3

在上面的例子中,createCounter 函数返回了一个内部函数,这个内部函数访问了外部函数中的 count 变量,即使 createCounter 函数已经执行完毕,count 变量仍然可以被内部函数访问和操作。每次调用 counter 函数,都会输出 count 的值,并将其加一。

另一个闭包的例子是实现一个缓存函数:

function createCache() {
  let cache = {};
  return function(key, value) {
    if (value) {
      cache[key] = value;
    } else {
      return cache[key];
    }
  }
}

const cache = createCache();
cache('name', 'Tom'); // 设置缓存
console.log(cache('name')); // 获取缓存,输出 Tom

上面的例子中,createCache 函数返回了一个内部函数,这个内部函数访问了外部函数中的 cache 对象。每次调用内部函数,都可以设置或者获取缓存的值。这个缓存函数使用了闭包来实现一个私有的缓存对象,不会被外部函数访问到。

http请求有哪些方式,有什么区别。

  1. GET:用于请求服务器返回某个资源的内容,通常用于读取数据。使用 URL 传递参数,请求参数会被暴露在 URL 中。

  2. POST:用于向服务器提交数据,通常用于创建或更新数据。请求参数不会被暴露在 URL 中,而是通过请求体进行传递。

  3. PUT:用于向服务器更新某个资源的内容,通常用于更新数据。与 POST 相比,PUT 请求是幂等的,即多次调用不会产生不同的结果。

  4. DELETE:用于删除服务器上的某个资源,通常用于删除数据。与 PUT 相比,DELETE 请求也是幂等的。

  5. HEAD:与 GET 类似,但是只返回 HTTP 头部信息,不返回实体内容。

  6. OPTIONS:用于查询服务器支持的 HTTP 方法。

  7. TRACE:用于查询服务器收到的请求内容,主要用于调试和测试。

  8. CONNECT:用于建立与服务器的双向通信,通常用于 HTTPS 连接。

这些请求方式有以下区别:

  1. GET 和 POST:最常用的两种请求方式,GET 请求通常用于读取数据,POST 请求通常用于提交数据。GET 请求参数会被暴露在 URL 中,而 POST 请求参数通过请求体传递,不会被暴露在 URL 中。

  2. PUT 和 DELETE:PUT 请求通常用于更新数据,DELETE 请求通常用于删除数据。PUT 和 DELETE 请求都是幂等的,即多次调用不会产生不同的结果。

  3. HEAD 和 OPTIONS:HEAD 请求与 GET 请求类似,但是只返回 HTTP 头部信息,不返回实体内容。OPTIONS 请求用于查询服务器支持的 HTTP 方法。

  4. TRACE 和 CONNECT:TRACE 请求用于查询服务器收到的请求内容,主要用于调试和测试。CONNECT 请求用于建立与服务器的双向通信,通常用于 HTTPS 连接。

EventLoop

promise 和 stimeout     

深复制几种方法

性能优化

继承

什么是原型、原型链?

bfc

keep-alive

v-model 实现

修饰符

Vuex 页面刷新数据丢失怎么解决

http2

rem 实现原理

http状态码有哪些,代表的什么。

git命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值