前端学习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>

全部评论

相关推荐

2025年6月13日时长20min---------------------------1.自我介绍0.问有了解过react吗1.react和vue之间的区别2.简单介绍一下vue是什么3.问响应式原理和虚拟dom的关联:我这里就简单回答了一下视图的关系。加载渲染什么的4.介绍我的简历上第一个项目&amp;项目过程中遇到的难点5.前面说解决加载比较慢的问题,问怎么解决的--Vue&nbsp;Route6.Vuex在项目中的作用:题主就简单用过vuex存储一部分数据,从这里取数据。7.介绍我简历上的第二个项目&amp;遇到哪些难点8.工作过程中,前端和数据开发的占比:因为题主说自己有负责一部分的数据库反问环节:1.前端和数据开发这一块怎么样她说我有些模糊角色定位,而且通过我的描述我的数据开发更多是后端同学做的(本来就是,因为做的都是个人/几个同学弄的项目)2.公司前端业务这一块是怎么样的好像弄什么智能体agent吧,交互式的。最后说懂数据开发其实是加分项,但是更多要配合前端业务,懂怎么埋点,基本的sql语句,还有数据可视化这一块。--------------------------总体感觉下来,面试过程很轻松,没有开视频,面试官是女的而且听声音是广东人(我也是广东的)27~32岁的感觉。但是面试过程中没有什么提示吧。(温柔就完事了要什么过程提示!)这几天忙着考试,一点八股没看,本来想着拒掉的,但舍友(阿里大佬)鼓励我多试试,增加经验。过程中就是我对项目没有熟悉掌握吧,接下来还是要继续熟练掌握,然后多背背八股。
查看12道真题和解析
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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