标签:单位 基础 相互 函数调用 扩展 模板方法 inter 指针 外观模式
秋招已经过半,啥都没有,每日凉凉的心态,重要的是觉得自己竟然毫无长进!
算法的坑,进去了就不想出了,心累。
决定坚持到十二月份,如果毫无结果就考教师资格证,考雅思,准备别的方向了。
来复盘下吧:
1.笔试
(1)在图的搜索算法中,
DFS(深度优先遍历):
通常可以用stack实现;
基于递归的搜索方式,它的特点是由一个状态拓展一个状态,然后不停拓展,直到找到目标或者无法继续拓展结束一个状态的递归。
对于解决遍历和求所有问题有效,对于问题搜索深度小的时候处理速度迅速,然而在深度很大的情况下效率不高。
BFS(广度优先遍历):
通常可以用queue实现;
它的特点是由每一个状态可以扩展出许多状态,然后再以此扩展,直到找到目标状态或者队列中头尾指针相遇,即队列中所有状态都已处理完毕。
对于解决最短或最少问题特别有效,而且寻找深度小,但缺点是内存耗费量大(需要开大量的数组单元用来存储状态)。
(2)递归和迭代
递归:
从概念上讲,递归就是指程序调用自身的编程思想,即一个函数调用本身;
无限循环的递归算法会导致栈溢出
迭代:
迭代是利用已知的变量值,根据递推公式不断演进得到变量新值得编程思想。
(3)java的设计模式
策略模式:将一组算法封装成对象,通过传递这些对象灵活的改变程序功能
模板方法:让子类重写方法的一部分,而不是全部。
命令模式:把发出命令的责任和执行命令的责任分开,委派给不同的对象。
代理模式:在不改变源码的情况下,实现对目标对象的功能扩展。
1、开闭原则(Open Close Principle)
对扩展开放,对修改关闭。
2、里氏代换原则(Liskov Substitution Principle)
只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
3、依赖倒转原则(Dependence Inversion Principle)
这个是开闭原则的基础,对接口编程,依赖于抽象而不依赖于具体。
4、接口隔离原则(Interface Segregation Principle)
使用多个隔离的借口来降低耦合度。
5、迪米特法则(最少知道原则)(Demeter Principle)
一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
6、合成复用原则(Composite Reuse Principle)
原则是尽量使用合成/聚合的方式,而不是使用继承。继承实际上破坏了类的封装性,超类的方法可能会被子类修改。
(4)
标签:单位 基础 相互 函数调用 扩展 模板方法 inter 指针 外观模式
原文地址:https://www.cnblogs.com/ivyharding/p/11589659.html