前端学习31 相关面试题

1.手撕版本号排序

// 版本号排序
function compareV(a,b){
    const Sorta = a.split('.').map(Number);
    const Sortb = b.split('.').map(Number);
    const maxLength = a.length > b.length ? a.length : b.length;
    for(let i=0;i<maxLength;i++){
        const numA = a[i] || 0;
        const numB = b[i] || 0;
        if(numA < numB) return -1;
        if(numA > numB) return 1;
    } 
    return 0;
}
const versions = ["1.2.0", "1.11.0", "1.2.1", "1.2", "1.2.0.0", "1.10"];
versions.sort(compareVersion);

2.BFC

开启BFC的方法:

  • overflow: hidden/auto/scroll 最常用的清除浮动方法
  • display: flow-root 现代 CSS 推荐方式
  • float 本身会触发 BFC
  • position: absolute/fixed 常用于定位时隔离布局
  • display: inline-block/table

其中position:relative 不会开启BFC。

BFC 的本质是隔离内部浮动不影响外部布局,触发 BFC 的父元素可以包裹浮动子元素,从而清除浮动带来的高度塌陷问题。

BFC还可以解决margin合并问题。

在垂直方向上,块级元素的 margin 可能发生合并,BFC 可以有效阻止这种合并行为。特别是在父子元素和兄弟元素之间,通过触发 BFC(如设置 overflow: hidden 或 display: flow-root),可以避免布局错乱和多余间距。

注意:这时候会涉及脱离文档流的问题。BFC(Block Formatting Context)不会脱离文档流

BFC 是一种布局机制,它不会让元素本身脱离文档流,而是让其内部的布局独立于外部元素影响

文档流

元素可以通过设置 float、position: absolute/fixed、display: none 来脱离文档流。

其中 position:relative 不会脱离文档流因为它仍保留原来的位置,只是视觉上偏移。

3.nextTick

在 Vue 3 中,数据更新是异步的,修改响应式数据后,视图不会立即更新到真实 DOM。nextTick 用于在下次 DOM 更新循环结束后执行回调,确保获取到最新的 DOM 状态。常见用法是在修改数据后调用 nextTick,在回调中访问或操作已更新的 DOM 元素。这样可以避免访问到旧的 DOM 内容,保证操作时机正确。

<template>
  <div>
    <p ref="text">{{ message }}</p>
    <button @click="changeMessage">修改内容</button>
  </div>
</template>

<script setup>
import { ref, nextTick } from 'vue'

const message = ref('初始内容')
const text = ref(null)

function changeMessage() {
  message.value = '更新后的内容'

  // 立即打印,DOM 还没更新
  console.log(text.value.textContent)  // 还是“初始内容”

  // 使用 nextTick,确保 DOM 更新后访问
  nextTick(() => {
    console.log(text.value.textContent)  // 这里是“更新后的内容”
  })
}
</script>

全部评论

相关推荐

昨天 00:54
已编辑
北京邮电大学 前端工程师
蹲个女生舍友,杭州西溪。--------------以下是正文--------------先说一下我个人情况,北邮通信工程,我在本科的时候做过几个微信小程序,忘光了。在今年2月份开始极速学习前端基础。代码算法方面,研一和大四的时候跟着代码随想录刷过一次。轻微流水账,这是一个记录贴。初衷希望能给0实习转码的同学一些鼓励,相信一定能找到愿意培养自己的公司。第一次找工作没什么经验,秋招会及时复盘面经发出来,这次就先不弄了。我从1月份就开始调研咋学习前端,开始慢悠悠学习html和css知识,到二月份开学了才开始对暑期实习感到十分的担忧,开始拼命学js。之前就接触过相关内容所以学的很快,半个月左右就学完了。然后就开始一边学习react一边做项目。4月初开始陆续投递,等了一周就开始有面试了。第一个面的美团,上来就是一个hard代码题,hot100还没刷完的我感到十分挫败。五月中旬之前,我一直处于反复一面的状态。基本上一天三面。晚上还得做笔试。崩溃边缘,但是还得鼓励(欺骗)自己下周必拿offer。或许是乐观的心态,让我在16号以后开始收到一些公司的二面了。包括美团,阿里(智能信息),腾讯,字节。我非常高兴,说明我五一不出去玩,恶补八股和手撕是真的有用。运气好了之后就开始一直破天荒的好。我阿里的淘天和阿里云也进二面了。我记得自己虽然表现的还行,但是整体并不突出。5月20/21号,这两天是小情侣过节的日子。我记得我20号面了美团,阿里智能信息二面,21号面了腾讯,字节,淘天二面,晚上还做了一个笔试。累的半死的同时,实验室导师还在催我的科研进度,我回复:好的。没想到,阿里智能信息居然问了我通信原理,本科学科等很多很泛的问题。我以为要凉了,结果没过一个小时,hr联系我:你好,你的二面已经通过,需要您再做一个线上笔试。我欣喜若狂,不敢相信二面居然问这些都能过。笔试做完了之后,也是立马有hr联系我,约hr面。5月22号,hr面。当场发offer,我整个人都懵了。心里怀疑对方是不是诈骗公司,然后又反复确认。缓了半天,才发现自己居然能去阿里了。简直是做梦都不敢想。我记得我前几天面试压力太大,还梦到过实验室组会汇报自己的offer进度,大家都去阿里。而我连甚至一个offer都没有可以汇报。当场吓醒。最后必须说,阿里真的太好了,愿意相信实习生的潜力,真的给了很多0实习的同学实习机会。我永远是阿里孝女!!!!!---------------分割线-----------记录一下自己转码以来遇到的一些贵人。1.字节的一面面试官,在我最崩溃的时候给了我鼓励和肯定。当时给我面了一个半小时。最后我问他对建议的时候,他说,“你是候选人里面算是比较优秀的了,但是我们这个业务要求很高,我担心把你招进来影响你的成长。”并且还给我推荐学习资料,红宝书。还和我说,“如果你想要继续做前端的话,我可以告诉你,前端依然是十分有前途的方向,希望你可以继续努力。”他的话真的十分中肯。当时我甚至感动哭了,我非常清楚自己不是因为被拒绝哭了(毕竟其实已经麻了)2.腾讯的一位面试官。给了我很多叮咛,告诉我准备好在面试等等。让我感觉十分有力量,我当时觉得我身边那么多帮助我的好人,我怎么可能不成功呢。3.北邮的一位学长,他在一开始给了我职业选择方面的建议,让我坚定了自己的道路。4.我遇到的每一个面试官都出奇的好,没有因为我很菜就表现不耐烦,十分感恩他们的手下留情。5.感谢有对象的陪伴,让我有好好吃饭的动力,并且也一直督促我学习,还帮我把一些高频的手撕和高频的计算机相关的八股梳理出来。有的时候真的想放弃,但是他一直在我旁边和我说,一定要坚持,不能放弃。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务