剑指offer_03

文章目录

    • 第三章 高质量代码
      • 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怎么办;为了保证程序的正确性,在写出程序后,自己要想出几个用例测试自己的程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445491.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

先序中序后序两两结合重建二叉树

遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结…

先序中序数组推后序数组

二叉树遍历 所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问 题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。 从二叉树的递归定义可知,一…

剑指offer_06

文章目录第六章 面试中的各项能力1.1 面试官谈能力1.2 沟通能力和学习能力1.3 知识迁移能力1.4 抽象建模能力1.5 发散思维能力第六章 面试中的各项能力 1.1 面试官谈能力 1.礼貌平和,不卑不亢的和面试官沟通;逻辑清楚,详略得到的介绍项目经…

数据结构课上笔记11

满二叉树 (Full binary tree) 除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。 国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树…

数据结构课上笔记12

二叉树的存储结构 顺序存储结构 完全二叉树:用一组地址连续的 存储单元依次自上而下、自左至右存 储结点元素,即将编号为 i 的结点元 素存储在一维数组中下标为 i –1 的分量中。 一般二叉树:将其每个结点与完 全二叉树上的结点相对照&…

kaggle(01)-泰坦尼克号问题

经典又兼具备趣味性的Kaggle案例泰坦尼克号问题 大家都熟悉的『Jack and Rose』的故事,豪华游艇倒了,大家都惊恐逃生,可是救生艇的数量有限,无法人人都有,副船长发话了『lady and kid first!』&#xff0c…

数据结构课上笔记13

树存储结构 父节点表示法 数据域:存放结点本身信息。 双亲域:指示本结点的双亲结点在数组中的位置。 对应的树: /* 树节点的定义 */ #define MAX_TREE_SIZE 100typedef struct{TElemType data;int parent; /* 父节点位置域 */ } PTNode;type…

数据结构课上笔记14

图是一种: 数据元素间存在多对多关系的数据结构 加上一组基本操作构成的抽象数据类型。 图 (Graph) 是一种复杂的非线性数据结构,由顶点集合及顶点间的关系(也称弧或边)集合组成。可以表示为: G=(V, V…

kaggle(03)-自行车租赁预测问题(基础版)

文章目录问题描述:问题解决分析问题:解决问题第一步:读取原始数据第二步:观察原始数据第三步:原始数据的可视化第四步:数据的预处理时间属性的分解第五步:数据的特征提取特征生成特征选择第六步…

二叉树序列化/反序列化

二叉树被记录成文件的过程,为二叉树的序列化 通过文件重新建立原来的二叉树的过程,为二叉树的反序列化 设计方案并实现。 (已知结点类型为32位整型) 思路:先序遍历实现。 因为要写入文件,我们要把二叉树…

机器学习总结(17)-XGBoost

文章目录lecture17:XGBoost(eXtreme Gradient Boosting)目录1. XGBoost的基本信息2. XGBoost与GBDT的异同点3. XGBoost的原理3.1定义树的复杂度3.2 分裂节点3.3 自定义损失函数4. XGBoost的使用lecture17:XGBoost(eXtreme Gradient Boosting) 目录 1. …

C++基础学习(01)--(介绍,环境配置,基本语法,注释)

文章目录目录一. c介绍二. c开发环境到的配置三. c基本语法四. c注释目录 一. c介绍 C 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。 C 被认为是一种中级语言,它综合了高级语言和低…

《Head First设计模式》读书笔记_第一章

策略模式 例:设计一个模拟鸭子游戏,游戏中有各种鸭子,一边戏水一边嘎嘎叫。 所以学习设计模式前,我们最先想到的就是设置一个超类,并让其他子类去继承这个类,UML图如下: * * 但是&#xff0…

C++基础学习(02)--(数据类型,变量类型,变量作用域,常量,修饰符类型)

文章目录目录一. 数据类型C 中的数据类型typedefenumeration枚举类型c中变量类型二.变量作用域三.常量四.修饰符类型目录 一. 数据类型 C 中的数据类型 使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着&a…

c++基础学习(03)--(存储类,运算符,循环,判断)

文章目录目录一.存储类二.运算符三.循环whilefor四.判断目录 一.存储类 可见static存储类修饰之后&#xff0c;i的值没有从头开始&#xff0c;而是从上一次的结果中保留下来 #include <iostream>using namespace std; class Data { public:Data(){}~Data(){}void show()…

皇后问题

八皇后问题是一个以国际象棋为背景的问题&#xff1a;如何能够在 88 的国际象棋棋盘上放置八个皇后&#xff0c;使得任何一个皇后都无法直接吃掉其他的皇后&#xff1f;为了达到此目的&#xff0c;任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的…

c++基础学习(04)--(函数、数字、数组、字符串)

文章目录目录1.函数2.数字3.字符串4.数组目录 1.函数 #include <iostream> #include <limits>using namespace std;void swap(int *x , int *y);int main(){int a 100 , b200;cout<<"交换前:"<<"a is :"<<a<<"…

【精品计划0】蓝桥杯 摔手机

原题描述&#xff1a; x星球的居民脾气不太好&#xff0c;但好在他们生气的时候唯一的异常举动是&#xff1a;摔手机。 各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试&#xff0c;并且评定出一个耐摔指数来&#xff0c;之后才允许上市流通。 …

数据结构课上笔记15

图的存储 多重链表&#xff1a;完全模拟图的样子&#xff0c;每个节点内的指针都指向该指向的节点。 节点结构内指针数为度 缺点&#xff1a;浪费空间、不容易操作 数组表示法&#xff08;邻接矩阵表示法&#xff09; 可用两个数组存储。其中一个 一维数组存储数据元素&#…

c++基础学习(05)--(指针,引用)

文章目录目录1.指针2.引用目录 1.指针 #include <iostream>using namespace std;int main () {int var1;char var2[10];cout << "var1 变量的地址&#xff1a; ";cout << &var1 << endl;cout << "var2 变量的地址&#xff…