面试题:写一个工具函数,实现对文件大小的单位进行转换

此类题目在面试中经常会被问道,或者直接让你手写一个工具函数,比如时间单位转换、文件大小单位转换等,此类型的问题实现方式都差不多,问题不难,不管怎样,都能实现。但是,代码写的是否优雅,决定了你的这场面试结果怎样。

小白可能会这样写:

function formatSizeUnits(kb){
    var result = '';

    if (kb < 1024) {
        result = kb + ' KB';
    } else if (kb < 1024 * 1024) {
        result = (kb / 1024).toFixed(2) + ' MB';
    } else if (kb < 1024 * 1024 * 1024) {
        result = (kb / 1024 / 1024).toFixed(2) + ' GB';
    } else {
        result = (kb / 1024 / 1024 / 1024).toFixed(2) + ' TB';
    }

    return result;
}

这样实现由问题吗?没有任何问题,完全可以实现对文件大小的单位转换。

再来看一下大佬会怎样实现:

const formatSizeUnits = (kb, decimalPoint = 2) => {
    const units = ["KB", "MB", "GB", "TB", "PB"];
    let idx = 0;
    
    while(kb > 1024 && idx < units.length-1){
        kb /= 1024;
        idx ++;
    }

    return `${kb.toFixed(decimalPoint)}${units[idx]}`
}

虽然实现的功能一样,写上面的代码和下面的代码,得到的面试效果却不一样,当你写出下面的代码,面试官可能会向你投来赞赏的目光,甚至会因此通过面试。

如何写出优雅、高质量的代码?现在AI这么火,我们可以借助AI来提升自己的代码质量,检查优化已经完成的一些复杂逻辑,看看你写的思路是否是最简洁的。通过AI提供的思路,再结合自己的业务,写出无可挑剔的代码,指日可待!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值