必备的数据结构及算法:
堆栈和队列的存取数据的区别:
堆栈(先进后出,后进先出.只能在其中的1端进行存取操作–应用“表达式求值”,“过滤器及拦截器的执行顺序”)
队列(先进先出,后进后出。可以用来处理”环状缓存区”,”排队算法”,游标属于单向队列。
jvm内存中的堆和栈:堆在内存的低地址,栈是高地址。堆的数据是每个程序独享。栈的数据可以在jvm中各个程序共享。只要用new方法创建的对像,都放在堆中。
String str = new String(“aa”)同时放堆和栈。
算法的时间复杂度(算法的执行时间,实际上使用的”比较次数”和“移动次数”。
空间复杂度:算法执行所需的内存,实际上使用的是“最大数组长度”。
三种排序算法:冒泡法,插入法,快速排序法。
二叉树是什么(树的一种,每个节点最多只能有2个儿子),满二叉树(除了叶子节点,其他节点都有2个子节点).
满二叉树第N层的节点数:2的n-1次方。
有什么作用(快速的遍历.先序算法,中序算法和后序算法),中序算法就是深度优先。
面向过程:只有函数调用,通过头文件导入定义在其他文件的函数。典型“c语言”。
a.c文件 int add(int x) { return x+1; } a.h文件 int add(int x); 在b.c文件中 #include "a.h" main() { printf("%d",add(1)); }
面向对象:oop。
面向切片:aop。