1.线程和进程
线程是进程划分成的更小的运行单位,一个进程在其执行的过程中可以产生多个线程。线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一进程中的线程极有可能会相互影响。线程执行开销小,但不利于资源的管理和保护;而进程正相反。
2.内存泄漏
内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃
java中发生的情况:
1. 静态集合类
2. 单例模式
3. 内部类持有外部类
4. 各种连接,如数据库连接、网络连接和IO连接等
5. 变量不合理的作用域
6. 改变哈希值
7. 缓存泄漏
8. 监听器和回调
3.如何用两个队列实现栈
队列:先进先出 栈:后进先出
1.入栈:将元素入队到不为空的队列当中(若初始两个队列都为空,则只需任意入队到一个队列中即可)
2.出栈:将不为空的队列的前n-1一个元素依次出队再入队到另一个空队列中,最后一个元素只出队不入队即可。(前提:栈不为空)
3.获取栈顶:返回不为空的队列的队尾即可。(前提:栈不为空)
4.栈判空:栈内两个队列都为空即栈为空。
5.栈判满:栈内不为空的队列为满,即栈为满。
6.获取栈内有效元素个数:直接返回不为空的队列内元素个数即可。
7.栈销毁:先销毁掉栈内两个队列,再销毁栈即可。
4.代码题
反转链表
class Solution {
public ListNode reverseList(ListNode head) {
ListNode cur = head;
ListNode pre = null;
ListNode temp;
while(cur != null){
temp = cur.next;
cur.next = pre;
pre = cur;
cur = temp;
}
return pre;
}
}
5.针对写出的代码提供测试思路
测试输入的用例 输出结果是否符合(真没想出来)