常问考试面经
提示:本文章属于@别叫小宋的经历总结,不喜勿喷
前言
一、进程和线程?
进程与线程的比较如下:
1.进程是资源(包括内存、打开的文件等)分配的单位,线程是CPU调度的单位;
2.进程拥有一个完成的资源平台,而线程只独享必不可少的资源,如寄存器和栈
3.线程同样具有就绪、阻塞、执行三种基本状态,同样具有状态之间的转换关系
4.线程能够减少并发执行的时间和空间开销
进程:
在一个进程的活动期间至少不诶三种状态,即**运行状态、就需状态、阻塞状态**。
线程间的通信方式
1.锁机制:包括互斥锁、条件变量、读写锁
互斥锁提供了一以排他方式数据结构被并发修改的方法
读写锁允许多个线程同时读共享数据,而对写操作是互斥的。
条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。
2.信号量及之:包括无名线程信号量和命名线程信号量
3.信号机制:类似进程间的信号处理
线程间的通信的主要用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制。
二、反射?
java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能调用他的任意一个方法和属性
加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个class对象),这个对象就包含了完整的类的结构信息我们可以通过这个对象看到类的结构。这个对象就像是一面镜子,透过这个镜子看到类的结构,所以,我们可以形象的称之为:反射。
java反射机制提供的功能:
(1)在运行时判断任意一个对象所属的类
(2)在运行时构造任意一个类的对象
(3)在运行时得到任意一个类所具有的成员变量和方法
(4)在运行时调用任意一个对象的成员变量和方法
(5)生成动态代理
三、Session和Cookie?
cookie和session的区别:
1.Cookie可以存储在浏览器或者本地,Session只能存储在服务器
2.Session能存在任意的java对象,cookie只能存储String类型的对象
3.Session比Cookie更具有安全性(Cookie有安全隐患,通过拦截或本地文件得到你的cookie后进行攻击)
4.session占用服务器性能,Session过多,增加服务器压力
5.单个Cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie,Session是没有大小限制和服务器的内存大小有关