2021-03-05 字节二面分析

本文深入探讨了Vue中v-for指令使用:key的重要性及其原理,并解释为何不能使用数组索引作为key;分析了0.1+0.2!==0.3的原因及解决方法;对比了虚拟DOM与真实DOM的操作效率;提供了生成1000个不重复六位验证码的方法;最后展示了如何使用Promise实现数组元素的累加。
1.vue 的 v-for为什么要加上 :key 以及为什么不能用做数组索引 从原理分析

因为vuereactdiff算法 需要判断更新前后节点的对应关系,比如下图的更新前的BDE,更新后为BCDE 插入了一个C,如果没有:key的话,算法无法判断这个C是插入的,就会认为B之后的节点全部对不上,都执行patch生成新的虚拟DOM,就浪费了性能。
在这里插入图片描述
当我们用一个唯一且稳定的值标识了数组的元素之后,算法就不用考虑顺序以及对应关系,只比较:key相同的元素即可
在这里插入图片描述
Q:为什么不能用数组索引当key?
A:因为数组索引明显不是一个唯一且稳定的值,比如通过Array.shift()等方法可以轻松改变索引和元素对应关系,但是元素本身是没有改变的,达不到减少性能开销的目的

2.为什么0.1+0.2!==0.3 分析并提出解决方案

参考解决js计算0.1+0.2 !==0.3

3.虚拟DOM比操作真实DOM效率和性能更高吗?

真实DOM效率更高,虚拟DOM还需要diff算法等额外开销,因为他们最终都是要挂载到真实DOM上并触发重排的。两者都对于同步的修改有优化(只挂载/触发一次重排)

4.生成1000个不重复的六位验证码字符串数组:

生成1000个不重复的六位验证码字符串数组:

1.单个验证码6位数字0-9
2.一次1000个验证码。数组形式返回
3.单次生成一批不能重复

function random():string[]{ }

分析一下,此题关键是利用random()生成随机数,且不能重复。考虑到查重的算法,map是最简单的,同时也可以使用Set

/* 
生成1000个不重复的六位验证码字符串数组:

1.单个验证码6位数字0-9
2.一次1000个验证码。数组形式返回
3.单次生成一批不能重复

function random():string[]{
} */



function random(){
    let map=new Map()
    let result=[]
    for(let i=0;i<1000;i++){
        randomApply(map,result)
    }
    return result
}

// 生成单个不重复的字符串
function randomApply(map,result){
    let randomStr=productRandomStr()
    while(map.has(randomStr)){
        randomStr=productRandomStr()
    }
    map.set(randomStr,'')
    result.push(randomStr)
}

// 生成六位random字符串函数
function productRandomStr(){
    let str=``
    for(let i=0;i<6;i++){
        str+=`${Math.floor(Math.random()*10)}`
    }
    return str
}

console.log(random()); 
5.Promise.resolve(a+b)实现累加:

这题当时没做出来 后面问题锁住了不给看 大概是这么个题干和解答

/* 
funciton add(a,b)=>Promise.resolve(a+b)
实现 function addUp(arr)  累加返回结果
 */

function add(a,b){
    return Promise.resolve(a+b)
}

async function addUp(arr){
    let total=0
    // let res=await addUp(total,arr[0])
    for(let i=0;i<arr.length;i++){
        total=await add(total,arr[i])
        console.log(total);
    }
    return total
}

console.log(addUp([1,2,3,4]).then((value)=>{console.log(value);}));

代码下载地址: https://pan.quark.cn/s/b4a8e0160cfc 齿轮与轴系零件在机械设备中扮演着至关重要的角色,它们负责实现动力传输、调整运动形态以及承受工作载荷等核心功能。 在机械工程的设计实践中,齿轮和轴系的设计是一项关键的技术任务,其内容涵盖了材料选用、构造规划、承载能力分析等多个技术层面。 下面将系统性地介绍《齿轮及轴系零件结构设计指导书》中的核心知识点。 一、齿轮设计1. 齿轮种类:依据齿廓轮廓的同,齿轮可划分为直齿齿轮、斜齿轮以及人字齿轮等类别,各类齿轮均具有特定的性能特点与适用工况,能够满足多样化的工作环境与载荷需求。 2. 齿轮规格参数:模数大小、压力角数值、齿数数量、分度圆尺寸等是齿轮设计的基础数据,这些参数直接决定了齿轮的物理尺寸与运行性能。 3. 齿轮材质选用:齿轮材料的确定需综合评估其耐磨损性能、硬度水平以及韧性表现,常用的材料包括铸铁、钢材、铝合金等。 4. 齿轮强度验证:需进行齿面接触应力分析与齿根弯曲应力分析,以确保齿轮在实际运行过程中会出现过度磨损或结构破坏。 5. 齿轮加工工艺:涉及切削加工、滚齿加工、剃齿加工、淬火处理等工艺流程,工艺方案的选择将直接影响齿轮的加工精度与使用寿命。 二、轴设计1. 轴的分类方式:依据轴在机械装置中的功能定位与受力特点,可将轴划分为心轴、转轴以及传动轴等类型。 2. 轴的材料选择:通常采用钢材作为轴的材料,例如碳素结构钢或合金结构钢,特殊需求时可选用锈钢材料或轻质合金材料。 3. 轴的构造规划:需详细考虑轴的轴向长度、截面直径、键槽布置、轴承安装位置等要素,以满足轴的强度要求、刚度要求以及稳定性要求。 4. 轴的强度验证:需进行轴的扭转强度分析与弯曲强度分析,以防止轴在运行过程中发生塑性变形...
下面是我用dir /s列出的全部JAVA源码文件结构,你需要什么文件我都可以上传,告诉我文件名即可。 驱动器 D 中的卷是 2T_Disk1 卷的序列号是 BC7A-D97F D:\main 的目录 2025/09/13 21:03 <DIR> . 2025/09/13 21:03 <DIR> .. 2025/09/13 21:02 <DIR> java 2025/09/13 21:03 0 mainFiles.txt 1 个文件 0 字节 D:\main\java 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2025/09/13 21:02 <DIR> com 2025/09/13 21:02 <DIR> META-INF 2025/09/13 21:02 <DIR> my 0 个文件 0 字节 D:\main\java\com 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2025/09/13 21:02 <DIR> sienco 2025/09/13 21:02 <DIR> smallplanet 2025/09/13 21:02 <DIR> viscell 0 个文件 0 字节 D:\main\java\com\sienco 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2025/09/13 21:02 <DIR> sonoclot 0 个文件 0 字节 D:\main\java\com\sienco\sonoclot 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2025/09/13 21:02 <DIR> instrument 2025/09/13 21:02 <DIR> signature 2025/09/13 21:02 <DIR> sigwindow 2025/09/13 21:02 <DIR> wrapper 0 个文件 0 字节 D:\main\java\com\sienco\sonoclot\instrument 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/12/14 16:15 40,247 SonoclotInstrument.java 1 个文件 40,247 字节 D:\main\java\com\sienco\sonoclot\signature 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/12/14 16:19 13,667 SimpleSignature.java 1 个文件 13,667 字节 D:\main\java\com\sienco\sonoclot\sigwindow 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/12/14 16:15 12,730 SignatureDisplay.java 2021/09/14 15:33 34,216 SigWindowSignaturePanel.java 2 个文件 46,946 字节 D:\main\java\com\sienco\sonoclot\wrapper 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/12/14 16:17 25,032 WrapperManager.java 1 个文件 25,032 字节 D:\main\java\com\smallplanet 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2025/09/13 21:02 <DIR> util 0 个文件 0 字节 D:\main\java\com\smallplanet\util 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/12/14 16:14 3,390 SPSXYPoint.java 1 个文件 3,390 字节 D:\main\java\com\viscell 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2025/09/13 21:02 <DIR> busyFlag 2025/09/13 21:02 <DIR> usb 0 个文件 0 字节 D:\main\java\com\viscell\busyFlag 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/10/12 11:04 6,539 BusyFlag.java 2021/10/12 11:04 17,028 BusyFlagThread.java 2021/10/12 11:04 8,147 CallMethodLaterManager.java 2021/10/12 11:04 1,117 SyncObject.java 4 个文件 32,831 字节 D:\main\java\com\viscell\usb 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/10/12 18:10 2,291 HidCommand.java 2021/10/12 11:04 1,442 HidConnection.java 2021/10/12 11:04 1,974 HidController.java 2021/10/12 11:04 296 HidControllerCreator.java 2021/10/12 12:21 6,874 HidManager.java 2021/10/12 11:04 630 HidReference.java 2021/10/12 18:10 2,292 HidReport.java 2021/10/12 15:28 12,135 SigViewerHidCommandManager.java 2021/10/12 18:09 1,896 SigViewerHidUtilities.java 2025/09/09 18:51 258 usb.txt 2021/10/12 11:04 743 USBException.java 2021/10/21 17:13 9,421 USBManager.java 2021/10/12 11:04 469 USBReport.java 13 个文件 40,721 字节 D:\main\java\META-INF 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/09/14 18:04 108 MANIFEST.MF 1 个文件 108 字节 D:\main\java\my 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2025/09/13 21:02 <DIR> bean 2025/09/13 21:02 <DIR> ui 2025/09/13 21:02 <DIR> utils 0 个文件 0 字节 D:\main\java\my\bean 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/12/09 23:49 3,639 ConfigInfo.java 2021/12/09 23:15 231 IPropInfo.java 2021/12/09 23:15 41,341 JProperties.java 2021/12/14 16:14 274 TLVType.java 4 个文件 45,485 字节 D:\main\java\my\ui 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/12/09 22:48 1,925 BaseFrame.java 2021/12/09 23:23 2,317 ComponentsFrame.java 2021/12/09 22:48 210 IFrame.java 2021/12/09 23:02 2,020 RootFrame.java 2021/12/09 23:39 3,138 SysPropFrame.java 5 个文件 9,610 字节 D:\main\java\my\utils 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/12/01 23:27 1,912 ByteUtil.java 2021/10/12 11:46 1,230 DataLog.java 2025/09/13 21:02 <DIR> fifo 2025/09/13 21:02 <DIR> file 2021/10/12 11:23 947 FixedExecutorService.java 2021/12/09 22:48 2,105 HostUtils.java 2021/12/01 12:02 98 ISocketRecDataProcess.java 2025/09/13 21:02 <DIR> log 2021/12/09 23:23 1,868 PropUtils.java 2021/10/12 11:26 984 QueueExecutorService.java 2021/12/10 16:02 14,646 SocketClient.java 2021/12/10 16:05 1,194 SocketClientLog.java 2025/09/13 21:02 <DIR> threadpool 2025/09/13 21:02 <DIR> tlv 2021/10/21 15:45 1,278 UsbManagerLog.java 10 个文件 26,262 字节 D:\main\java\my\utils\fifo 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/11/30 23:42 722 FIFO.java 2021/11/30 23:43 1,472 FIFOImpl.java 2 个文件 2,194 字节 D:\main\java\my\utils\file 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/12/10 15:47 16,938 FileUtils.java 1 个文件 16,938 字节 D:\main\java\my\utils\log 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/10/12 11:23 2,459 FileThreadLogger.java 2021/10/12 11:23 205 ThreadLogger.java 2 个文件 2,664 字节 D:\main\java\my\utils\threadpool 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/11/30 23:11 110 PoolTask.java 2021/11/30 23:11 1,201 PoolUtils.java 2 个文件 1,311 字节 D:\main\java\my\utils\tlv 的目录 2025/09/13 21:02 <DIR> . 2025/09/13 21:02 <DIR> .. 2021/12/01 22:47 114 ITLVSocketRecDataProcess.java 2021/11/30 16:01 3,315 TLVByteBuffer.java 2021/12/01 23:32 9,827 TLVDecoder.java 2021/12/01 23:47 4,586 TLVDecodeResult.java 2021/11/30 16:59 7,959 TLVEncoder.java 2021/12/01 17:07 2,227 TLVEncodeResult.java 2021/11/30 18:02 2,724 TLVObject.java 2021/12/14 12:13 4,587 TLVSocketClient.java 2021/11/30 18:03 4,116 TLVUtils.java 9 个文件 39,455 字节 所列文件总数: 60 个文件 346,861 字节 71 个目录 246,202,134,528 可用字节
10-02
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值