资源描述:
《各大公司Java后端开发面试题总结》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、各大公司Java后端开发面试题总结ThreadLocaI(线程变量副本)Synchronized实现内存共享zThreadLocal为每个线程维护一个本地变量。采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副本,每个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突。ThreadLocal类中维护一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值为对应线程的变量副本。ThreadLocal在Spring中发挥着巨大的作用在管理Request作用域中的Bean、事务管理、任务调度、AOP等模块都出现了它的身影。Spr
2、ing中绝大部分Bean都可以声明成Singleton作用域,采用ThreadLocal进行封装,因此有状态的Bean就能够以singleton的方式在多线程中正常工作ToJava内存模型:Java虚拟机规范中将Java运行时数据分为六种。L程序计数器:是一个数据结构,用于保存当前正常执行的程序的内存地址。Java虚拟机的多线程就是通过线程轮流切换并分配处理器时间来实现的,为了线程切换后能恢复到正确的位置,每条线程都需要一个独立的程序计数器,互不影响,该区域为〃线程私有〃。2.Java虚拟机栈:线程私有的z与线程生命周期相同z用于存储局部变量表z操作栈,方法返回值。局部变
3、量表放着基本数据类型,还有对象的引用。3.本地方法栈跟虚拟机栈很像,不过它是为虚拟机使用到的Native方法服务。4.Java堆:所有线程共享的一块内存区域,对象实例几乎都在这分配内存。5•方法区:各个线程共享的区域,储存虚拟机加载的类信息,常量,静态变量,编译后的代码。6•运行时常量池:代表运行时每个class文件中的常量表。包括几种常量:编译时的数字常量、方法或者域的引用。”你能不能谈谈,javaGC是在什么时候z对什么东西'做了什么事情?〃在什么时候:1.新生代有一个Eden区和两个survivor区,首先将对象放入Eden区z如果空间不足就向其中的一个surviv
4、or区上放,如果仍然放不下就会引发一次发生在新生代的minorGCz将存活的对象放入另一个survivor区中,然后清空Eden和之前的那个survivor区的内存。在某次GC过程中,如果发现仍然又放不下的对象,就将这些对象放入老年代内存里去。2.大对象以及长期存活的对象直接进入老年区。3.当每次执行minorGC的时候应该对要晋升到老年代的对象进行分析,如果这些马上要到老年区的老年对象的大小超过了老年区的剩余大小,那么执行一次FullGC以尽可能地获得老年区的空间。对什么东西:从GCRoots搜索不到,而且经过一次标记清理之后仍没有复活的对象。做什么:新生代:复制清理;
5、老年代:标记■清除和标记■压缩算法;永久代:存放Java中的类和加载类的类加载器本身。GCRoots都有哪些:1.虚拟机栈中的引用的对象2.方法区中静态属性引用的对象,常量引用的对象3.本地方法栈中JNI(即一般说的Native方法)弓
6、用的对氨Synchronized与Lock都是可重入锁,同一个线程再次进入同步代码的时候.可以使用自己已经获取到的锁。Synchronized是悲观锁机制,独占锁。而Locks.ReentrantLock是z每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。ReentrantLock适用场景1.某个线程在等
7、待一个锁的控制权的这段时间需要中断2.需要分开处理一些wait・notifyReentrantLock里面的Condition应用z能够控制notify哪个线程,锁可以绑走多个条件。3.具有公平锁功能,每个到来的线程都将排队等候。StringBuffer是线程安全的,每次操作字符串,String会生成一个新的对象,而StringBuffer不会;StringBuilder是非线程安全的fail-fast:机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail・fast事件。例如:当某一个线程A通过itera
8、tor去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛岀ConcurrentMod币cationException异常,产生fail-fast事件happens-before:如果两个操作之间MWhappens-before关系,那么前一个操作的结果就会对后面一个操作可见。1・程序顺序规则:一个线程中的每个操作,happens-before于该线程中的任意后续操作。2.监视器锁规则:对一个监视器锁的解锁,happens-before于随后对这个监视器锁的加锁。2.volatile变量规则:对