文章目录

  • 第三章 高质量代码
    • 1.1 面试官谈高质量代码
    • 1.2 代码的规范性
    • 1.3 代码的完整性
    • 1.4 代码的鲁棒性

第三章 高质量代码

1.1 面试官谈高质量代码

  1. 代码应该考虑异常状况和垃圾回收问题,不能忽视边界情况
  2. 变量,函数命名应该要统一,备注要恰到好处,为实际的应用选择合适的数据结构
  3. 程序的正确性和鲁棒性比较重要。输入参数的检查,处理错误和异常的方式,命名方式等。

1.2 代码的规范性

1.书写,布局和命名都将决定代码的规范性(时间够的,一般就让写50行以内的代码)

  • 在纸上写程序和思路的时候一定不要乱涂乱画,要能看的清,有章可循,最好用铅笔。
  • 代码布局要规范,该有的缩进不能少
  • 函数命名要尽量有时间的意义,可以让人望名生意。

1.3 代码的完整性

1.从3个方面确保代码的完整性

  • 考虑问题要周全:

    • 基本功能的实现
    • 输入边界值
    • 不合规范的输入
  • 面试的时候在写代码的时候,应该把可能的输入都想清楚
  • 可以从功能测试,边界测试和负面测试三个方面测试用例
    • 普通功能的测试,保证代码可以完成面试官的基本要求。
    • 边界值的测试:循环结束的边界是否正确
    • 负面测试:考虑各种可能的错误输入
  • 3种处理错误的方法:
    • 函数返回值部位0表示错误
    • 通过全局变量记录错误信息,然后通过方法查看
    • 抛出异常,但是异常会影响程序的正常运行,影响性能。

由于计算机表示小数(float还是double)有一定的误差,不能直接用==来判断是否相等,可以通过比较其差值的绝对值,小于某个值则认为相等。
细节很重要,细节决定成败。

  • 如果面试题非常简单,且操作对象是整数,没有给出数的范围,则小心是否会有大叔的问题(考虑要全面),字符串是一个简单,有效的大数表示方法。

1.4 代码的鲁棒性

1.容错性是鲁棒性的一个重要的体现,能够对异常输入进行判断和处理非常重要
2.提高代码的鲁棒性的有效途径是进行防御性编程,即在认为可能出错的地方加上处理机制程序。

  • 在面试中,常用的方法是对函数的参数进行判断是否符合要求。
  • **面试过程中,一定要注意代码的鲁棒性。
  • **在程序中含有指针的时候,一定要想着如果指针为NULL怎么办;为了保证程序的正确性,在写出程序后,自己要想出几个用例测试自己的程序

剑指offer_03相关推荐

  1. Leetcode刷题——剑指offer_1

    Leetcode刷题--剑指offer_1 剑指offer_03 数组中重复的数字 剑指offer_04 二维数组中元素的查找 剑指offer_05 替换空格 剑指offer_06 从尾到头打印链表 ...

  2. 【剑指offer】顺时针打印矩阵

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/26053049 剑指offer上的第20题,九度OJ上測试通过. 题目描写叙述: 输入一个矩 ...

  3. 牛客网_剑指Offer_Python实现_更新中

    剑指Offer编程题汇总 第1题_二维数组中的查找 第2题_替换空格 第3题_从尾到头打印链表 第4题_重建二叉树 第5题_用两个栈实现队列 第6题_旋转数组的最小数字 第7题_斐波那契数列 第8题_ ...

  4. 剑指Offer_Python实现

    基于python的<剑指offer> 剑指Offer-Python答案 剑指Offer-面试题的Python实现 Python基础算法/剑指offer

  5. 销量过亿的《剑指0ffer》题目和答案电子书 (附下载)

    如果有人问面试前该看哪些题,有什么书籍可以推荐,那么<剑指offer>一定必读不可,这本书书豆瓣评分高达 9.0 ,非常适合集中时间阅读.电子书下载 1.扫码关注「顶级架构师」订阅号 2. ...

  6. 剑指offer第二版答案详细版(带详细解题思路)

    1.滑动窗口的最大值(剑指offer原59题) 解题思路:其实是一个队列的问题,用一个队列去维护当前窗口中的所有元素:首先将超出窗口中的队头元素先删掉,然后将新的元素插入当前窗口中,插入时要判断新插入 ...

  7. c语言一维数组逆序输出_剑指信奥 | C 语言之兵人来袭!

    趣乐博思剑指信奥系列 ❝ 趣乐博思剑指信奥系列,专门针对全国青少年信息学奥林匹克联赛 NOIP 而开展的专业教育方案.开设的课程有 C 语言基础,C++ 语言基础,算法设计入门与进阶,经典试题分析与详 ...

  8. 【每日一题】剑指 Offer 10- I. 斐波那契数列

    剑指 Offer 10- I. 斐波那契数列

  9. 【每日一题】剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点

最新文章

  1. 谈谈 Cookie 存取和IE页面缓存的问题
  2. 【路由交换实验】VLAN
  3. boost::mpl模块实现comparison相关的测试程序
  4. css定位能用android,绝对的CSS定位显示android html上的空白区域
  5. SQL数据查询之——嵌套查询
  6. 如何在钉钉上开发自己的应用_对企业来说无代码开发平台是否安全
  7. Android实现QQ音乐QMC格式转MP3格式
  8. ios功耗测试软件,iOS 性能优化 Instruments 检测 App 耗电量实战
  9. 画板html5代码,html5教程制作简单画板代码分享
  10. android ProgressBar自定义半圆形进度条
  11. c++ Simpson积分
  12. python企业微信回调_Python微信企业号开发之回调模式接收微信端客户端发送消息及被...
  13. 拨号ECS和拨号VPS的区别
  14. 《名侦探柯南》中的“IoT恐袭”
  15. C语言输出矩阵的主对角线和以及次对角线和
  16. 关于巴伦——Marchand巴伦
  17. js转换中文为拼音以及首字母
  18. 计算机视觉技术 - 图像阈值
  19. [原创]数独解答程序
  20. JZ73 翻转单词序列

热门文章

  1. 【转】VS中常用图标提示含义
  2. 第十一节:WebApi的版本管理的几种方式
  3. [你必须知道的.NET]第十四回:认识IL代码---从开始到现在
  4. 舒尔特注意力训练表格_舒尔特注意力训练,舒尔特方格练习入口
  5. 【LeetCode - 556】下一个更大元素 III(贪心,思维)
  6. 【2019浙江省赛 - J】Welcome Party(并查集,bfs,优先队列,建图)
  7. 【ZOJ - 4029】Now Loading!!!(整除分块,思维,二分,前缀和)
  8. 【计蒜客 - 2019南昌邀请赛网络赛 - I】Max answer(单调栈,RMQ)
  9. 【HDU - 1302】The Snail (模拟,水题)
  10. 【HDU - 1013 】Digital Roots (大数模拟)