美文网首页
【面试技巧】代码的鲁棒性

【面试技巧】代码的鲁棒性

作者: 常恒毅 | 来源:发表于2018-09-15 00:45 被阅读0次
前言:

之前刷《剑指OFFER》试图几天看完,当时心想一共即使道题,一天看个十道八道,一星期不就看完了。对于基础本身就很扎实的同学来说肯定是这样的。可是我也不是科班出身,基础一点也不扎实,粗略看完一遍其实并没有读透。之后又看了一阵子数据结构,看了一阵子《算法竞赛入门》,结合这博客论坛看了一阵子编程题。现在再回来重新精读一遍《剑指OFFER》,想必将有新的收获。

增强代码的鲁棒性需要我们考虑很多因素:

  • 非法的输入:例如返回链表的倒数第k个元素,但是链表本身没有k个元素。
  • 特殊的输入:例如输入的链表为空指针。
  • 运算过程中会不会溢出。
  • 等等……
例1(《剑指OFFER》第16题):

求输入数字的整数次方,即实现以下函数(不考虑大数问题,如果没有说不考虑大数问题要问面试官):

double Power(double base,int e){
}

首先应该考虑的边界条件是,如果e是0和负数该怎么办,如果底数base是0或者负数怎么办。

base\e 0
正常求解 1 先求正数次幂,再求倒数
0 0 1 无意义
正常求解 1 先求正数次幂,再求倒数

其次应该考虑的是,如何降低计算的复杂度。比起做e-1次乘法,还有更高效的O(logn)的方法:

double PowerWithUnsignedExponent(double base, unsigned int exponent)
{
    if (exponent == 0)
        return 1;
    if (exponent == 1)
        return base;

    double result = PowerWithUnsignedExponent(base, exponent >> 1);
    result *= result;
    if ((exponent & 0x1) == 1)
        result *= base;

    return result;
}

最后要注意,浮点数因为精度问题是不能直接判断相等的,要自己设置精度,编写equal函数:

bool equal(double num1, double num2)
{
    if ((num1 - num2 > -0.0000001) && (num1 - num2 < 0.0000001))
        return true;
    else
        return false;
}

相关文章

  • 【面试技巧】代码的鲁棒性

    前言: 之前刷《剑指OFFER》试图几天看完,当时心想一共即使道题,一天看个十道八道,一星期不就看完了。对于基础本...

  • 程序员如何准备简历以及面试的要求

    程序员如何面试? 一,代码的完整性和鲁棒性 基本功能 边界值 无效的输入 时间效率 空间效率 二,事前准备 对公司...

  • 程序员如何准备简历以及面试的要求

    程序员如何面试? 一,代码的完整性和鲁棒性 基本功能 边界值 无效的输入 时间效率 空间效率 二,事前准备 对公司...

  • 剑指 offer 笔记 14 | 链表中倒数第k个结点

    题目描述输入一个链表,输出该链表中倒数第 k 个结点。 描述分析这道题涉及代码鲁棒性,所谓鲁棒性就是健壮性,是否能...

  • 高质量的代码--持续更新

    1. 代码质量1.1 代码的规范性1.2 代码的完整性1.3 代码的鲁棒性 2.结语 3.参考文献 1. 代码质量...

  • 鲁棒性

    鲁棒是Robust的音译,也就是健壮和强壮的意思。它是在异常和危险情况下系统生存的关键。比如说,计算机软件在输入错...

  • 鲁棒性

    系统的健壮度,耐用性 一般指软件系统,在异常干扰导致死机或者程序走飞后能否回到出错处理或者程序复位再次进入正常流程...

  • 鲁棒性

    “鲁棒”的英文是robustness Huber从稳健统计的角度系统地给出了鲁棒性的3个层面的概念 模型具有较高的...

  • 怎样编写健壮的代码

    怎样编写健壮的代码 代码的几种特性 鲁棒性Robust(健壮性) 系统在异常和危险情况下生存的关键 容错性 可移植...

  • 伪代码和 “程序的鲁棒性”

    目的: 是为了被描述的算法能很容易的以任何一种编程语言实现。 特点: 1.结构清晰。2.代码简单。3.可读性好。4...

网友评论

      本文标题:【面试技巧】代码的鲁棒性

      本文链接:https://www.haomeiwen.com/subject/npfzgftx.html