概念应用

关于在实际应用中需要注意的概念:
1.没有形成清晰的思路之前不要急于编码。例如算法要考虑其时间、空间复杂度。
2.测试在前,开发在后。先写单元测试用例, 再写解决问题的方法。
3.运行的代码出问题时,熟练的设置断点、单步跟踪、单步跟踪、查看内存、分析调用栈。
4.编码时应考虑输入是否合法、边界问题、特殊输入等。
5.值类型的实例在栈上分配内存,引用类型的实例在堆上分配内存。
6.关于项目
项目的背景->个人完成的任务->为完成任务做了哪些工作,怎么做的->个人贡献
7.对概念掌握的程度
“参与”、“负责”、“了解”、“熟悉”、“精通”
8.解题思路:a.通过画图让抽象的问题变得形象;b.通过举几个具体的例子去分析隐含的规律;c.通过把大的问题分解成两个或者多个小问题再递归地解决小问题。
9.代码的鲁棒性:也翻译为健壮性,指程序能够判断输入是否合乎规范要求,并对不合要求的输入予以合理的处理。a.容错性是鲁棒性的一个重要体现。b.防御性编程是一种编程习惯,是指预见在什么地方会出现问题,并为可能出现的问题制定处理方式。例如:在函数入口添加代码以验证用户输入是否符合要求。
10.C++原字符串更改字符牵扯到容量问题,设定字符串初始容量时,必须保证存储替换后的字符串仍有足够的空间。
11.二维数组作为函数参数传入问题,其声明传入方式为:int arr[][4], 必须指定二维度数。
12.代码质量:资源回收、异常状况、对“正常值”进行的处理、功能错误、边界情况。
13.规范的代码:清晰的书写、布局、命名
14.关键是在写代码之前形成清晰的思路,并能把思路用编程语言清楚地写出来。
15.单元测试的设计:负面测试(即错误的输入)、功能测试、边界测试。
16.三种错误处理的方法,各有优缺点:

  1. 函数返回值。优:和系统一致。缺:不能方便的计算结果。
  2. 全局变量。优:函数返回值依然可以设置为结果,能够方便的使用计算结果。缺:用户可能忘记检查全局变量。
  3. 异常,try catch块。 优:可以为不同的出错原因定义不同的出错原因定义不同的异常类型,逻辑清晰明了。 缺:有些语言不支持异常,抛出异常时对性能有负面影响。

17.编码前想清楚自己的思路。做事(编码)之前要明白自己要做的事情究竟是什么以及该怎么做。一开始就编码是非常不好的习惯。举例和画图是很好的方法。
18.画图让抽象问题形象化。(C++基础应用:20.二叉树的镜像)
19.举例让抽象问题具体化。
20.分解让复杂问题简单化。
21.优化时间和空间效率
A.时间效率

  1. C/C++要养成采用引用(或指针)传递复杂类型参数的习惯。其他语言也是一样,要尽量使用节省时间和空间的方法。
  2. 同一个算法用循环和递归都能实现,递归虽然简洁,但将复杂问题分解的过程中,小问题会有重叠,时间效率会更差。我们可以用递归思路来分析问题,写代码时采用临时变量保存中间结果。绝大部分动态规划算法的分析和代码实现都是分这两个步骤完成的。
  3. 遇到问题,首先可以给出直观算法,但是不能就此作罢,要有不畏难题,继续优化的激情。

B.时间效率与空间效率的平衡
4. 若内存充足,允许以牺牲一定的空间为代码来优化时间性能。
5. “以时间换空间”的策略并不一定都是可行的,要具体问题具体分析。
6. 降低时间复杂度的方法:a.改用更加高效的算法;b.从空间换时间(若消耗太多内存得不偿失)

22.不卑不亢,逻辑清晰,详略得当
23.谈论题目时能够发现问题的细节,并询问
24.确定思路,快速寻找解决办法
25.沟通和学习能力:学习新的概念以及最近学习的领域知识;沟通学习和提问
26.知识迁移能力:能够将简单的知识运用到更复杂的问题中。
27.抽象建模的能力
a.建模的第一步是选择合理的数据结构来表述问题。即建立模型。
b.建模的第二步是分析模型中的内在规律,并用编程语言表示这种规律。
c.我们只有对现实问题进行深入细致的观察分析之后,才能找到模型中的规律,才有可能编程解决问题。
28.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值