剑指offer_03
文章目录
- 第三章 高质量代码
- 1.1 面试官谈高质量代码
- 1.2 代码的规范性
- 1.3 代码的完整性
- 1.4 代码的鲁棒性
第三章 高质量代码
1.1 面试官谈高质量代码
- 代码应该考虑异常状况和垃圾回收问题,不能忽视边界情况
- 变量,函数命名应该要统一,备注要恰到好处,为实际的应用选择合适的数据结构
- 程序的正确性和鲁棒性比较重要。输入参数的检查,处理错误和异常的方式,命名方式等。
1.2 代码的规范性
1.书写,布局和命名都将决定代码的规范性(时间够的,一般就让写50行以内的代码)
- 在纸上写程序和思路的时候一定不要乱涂乱画,要能看的清,有章可循,最好用铅笔。
- 代码布局要规范,该有的缩进不能少
- 函数命名要尽量有时间的意义,可以让人望名生意。
1.3 代码的完整性
1.从3个方面确保代码的完整性
- 考虑问题要周全:
- 基本功能的实现
- 输入边界值
- 不合规范的输入
- 面试的时候在写代码的时候,应该把可能的输入都想清楚
- 可以从功能测试,边界测试和负面测试三个方面测试用例
- 普通功能的测试,保证代码可以完成面试官的基本要求。
- 边界值的测试:循环结束的边界是否正确
- 负面测试:考虑各种可能的错误输入
- 3种处理错误的方法:
- 函数返回值部位0表示错误
- 通过全局变量记录错误信息,然后通过方法查看
- 抛出异常,但是异常会影响程序的正常运行,影响性能。
由于计算机表示小数(float还是double)有一定的误差,不能直接用==来判断是否相等,可以通过比较其差值的绝对值,小于某个值则认为相等。
细节很重要,细节决定成败。
- 如果面试题非常简单,且操作对象是整数,没有给出数的范围,则小心是否会有大叔的问题(考虑要全面),字符串是一个简单,有效的大数表示方法。
1.4 代码的鲁棒性
1.容错性是鲁棒性的一个重要的体现,能够对异常输入进行判断和处理非常重要
2.提高代码的鲁棒性的有效途径是进行防御性编程,即在认为可能出错的地方加上处理机制程序。
- 在面试中,常用的方法是对函数的参数进行判断是否符合要求。
- **面试过程中,一定要注意代码的鲁棒性。
- **在程序中含有指针的时候,一定要想着如果指针为NULL怎么办;为了保证程序的正确性,在写出程序后,自己要想出几个用例测试自己的程序
剑指offer_03相关推荐
- Leetcode刷题——剑指offer_1
Leetcode刷题--剑指offer_1 剑指offer_03 数组中重复的数字 剑指offer_04 二维数组中元素的查找 剑指offer_05 替换空格 剑指offer_06 从尾到头打印链表 ...
- 【剑指offer】顺时针打印矩阵
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26053049 剑指offer上的第20题,九度OJ上測试通过. 题目描写叙述: 输入一个矩 ...
- 牛客网_剑指Offer_Python实现_更新中
剑指Offer编程题汇总 第1题_二维数组中的查找 第2题_替换空格 第3题_从尾到头打印链表 第4题_重建二叉树 第5题_用两个栈实现队列 第6题_旋转数组的最小数字 第7题_斐波那契数列 第8题_ ...
- 剑指Offer_Python实现
基于python的<剑指offer> 剑指Offer-Python答案 剑指Offer-面试题的Python实现 Python基础算法/剑指offer
- 销量过亿的《剑指0ffer》题目和答案电子书 (附下载)
如果有人问面试前该看哪些题,有什么书籍可以推荐,那么<剑指offer>一定必读不可,这本书书豆瓣评分高达 9.0 ,非常适合集中时间阅读.电子书下载 1.扫码关注「顶级架构师」订阅号 2. ...
- 剑指offer第二版答案详细版(带详细解题思路)
1.滑动窗口的最大值(剑指offer原59题) 解题思路:其实是一个队列的问题,用一个队列去维护当前窗口中的所有元素:首先将超出窗口中的队头元素先删掉,然后将新的元素插入当前窗口中,插入时要判断新插入 ...
- c语言一维数组逆序输出_剑指信奥 | C 语言之兵人来袭!
趣乐博思剑指信奥系列 ❝ 趣乐博思剑指信奥系列,专门针对全国青少年信息学奥林匹克联赛 NOIP 而开展的专业教育方案.开设的课程有 C 语言基础,C++ 语言基础,算法设计入门与进阶,经典试题分析与详 ...
- 【每日一题】剑指 Offer 10- I. 斐波那契数列
剑指 Offer 10- I. 斐波那契数列
- 【每日一题】剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点
最新文章
- 谈谈 Cookie 存取和IE页面缓存的问题
- 【路由交换实验】VLAN
- boost::mpl模块实现comparison相关的测试程序
- css定位能用android,绝对的CSS定位显示android html上的空白区域
- SQL数据查询之——嵌套查询
- 如何在钉钉上开发自己的应用_对企业来说无代码开发平台是否安全
- Android实现QQ音乐QMC格式转MP3格式
- ios功耗测试软件,iOS 性能优化 Instruments 检测 App 耗电量实战
- 画板html5代码,html5教程制作简单画板代码分享
- android ProgressBar自定义半圆形进度条
- c++ Simpson积分
- python企业微信回调_Python微信企业号开发之回调模式接收微信端客户端发送消息及被...
- 拨号ECS和拨号VPS的区别
- 《名侦探柯南》中的“IoT恐袭”
- C语言输出矩阵的主对角线和以及次对角线和
- 关于巴伦——Marchand巴伦
- js转换中文为拼音以及首字母
- 计算机视觉技术 - 图像阈值
- [原创]数独解答程序
- JZ73 翻转单词序列
热门文章
- 【转】VS中常用图标提示含义
- 第十一节:WebApi的版本管理的几种方式
- [你必须知道的.NET]第十四回:认识IL代码---从开始到现在
- 舒尔特注意力训练表格_舒尔特注意力训练,舒尔特方格练习入口
- 【LeetCode - 556】下一个更大元素 III(贪心,思维)
- 【2019浙江省赛 - J】Welcome Party(并查集,bfs,优先队列,建图)
- 【ZOJ - 4029】Now Loading!!!(整除分块,思维,二分,前缀和)
- 【计蒜客 - 2019南昌邀请赛网络赛 - I】Max answer(单调栈,RMQ)
- 【HDU - 1302】The Snail (模拟,水题)
- 【HDU - 1013 】Digital Roots (大数模拟)