• 剑指Offer(第二版)面试题目分析与实现-高质量的代码


    面试官谈代码质量:

    • 容错能力,特别输入是否考虑,如何处理;考虑异常情况和资源回收;
    • 掌握基础知识点;能通过和面试官交流、请教,解决问题;
    • 考虑边界情况;
    • 正确命名变量和函数名称;能根据具体的问题,选择合适的数据结构;
    • 关注程序的正确性和鲁棒性;关注对于输入参数的检查、处理错误和异常的方式、命名方式等;能够在面试官的提醒下,找到程序的缺陷,从而正确解决问题;

    代码规范性:

    • 清晰的书写: 在进行手写代码的时候,要注意书写的格式,规范性,清晰地书写每一个字母;
    • 清晰的布局
    • 合理的命名

    代码完整性:

    • 功能测试:把题目中要求的功能想清楚;
    • 边界测试:考虑问题的规模;是否是大数问题,问题输入的规模;是否应该用特殊的数据结构来存储这些数据;
    • 负面测试:考虑错误案例;是否存在错误输入,是否需要处理错误输入;当出现错误输入的时候,我们应该如何进行处理等;
      • 三种错误处理的方法:
        • 函数返回值,告诉调用者函数出错;
        • 当错误发生时,设置一个全局变量;这种情况下,调用者经常会忘记检查全局变量;
        • 异常;try catch 机制;当函数运行出错的时候,即抛出异常,可以根据不同的出错原因定义不同的异常类型。不同的语言有不同的异常处理情况;早期的时候的语言可能没有异常处理机制;
        • 在面试的时候,针对错误处理情况要和面试官来进行讨论;选择较好的错误处理方式来进行解决问题;

    代码鲁棒性:

    • Robust 健壮性;是指程序能够判断输入是否合乎规范要求,并对不符合要求的输入予以合理的处理;
    • 防御性编程:提前预测错误可能发生的情况,并对错误进行应对性处理;

    保持更新,转载请注明出处;更多内容请关注cnblogs.com/xuyaowen; 

    代码仓库:https://github.com/yaowenxu/codes/tree/master/剑指Offer

  • 相关阅读:
    vim编辑器经常使用命令
    @RequestMapping value 能够反复吗 [
    [Android 4.4.2] 泛泰A870 Mokee4.4.2 20140531 RC1.0 by syhost
    leetcode——Reverse Linked List II 选择链表中部分节点逆序(AC)
    烤羊肉串引来的思考——命令模式
    全面解析Activity的生命周期
    PHP与Linux进程间的通信
    模块管理常规功能自己定义系统的设计与实现(36--终级阶段 综合查询[3])
    小米与格力的10亿豪赌!
    《Java设计模式》之装饰模式
  • 原文地址:https://www.cnblogs.com/xuyaowen/p/for-offers-3.html
Copyright © 2020-2023  润新知