前些日子看了并发编程网的一篇文章,自己整理下理解。
https://ifeve.com/java-interview-question/
基础类:
1.Java线程的状态
新建、就绪、运行、阻塞、结束
2.进程和线程的区别,进程间如何通讯,线程间如何通讯
1) 进程通信:管道、信号量、信号、共享内存、套接字、消息队列等
线程通信:锁机制、信号、信号量
2)线程通信用于线程同步。线程共享进程资源,执行开销小,拥有自己的栈空间,是资源调用的最小单位。进程是资源分配的最小单位,一个应用程序的执行实例。或者说,进程有自己的地址空间,线程共享进程的地址空间
3.HashMap的数据结构是什么?如何实现的。和HashTable,ConcurrentHashMap的区别
链表+数组。因为可能退化成链表,1.7后使用了红黑树。后两者都是现成安全的,但HashTable是每个方法上加Synchronize,开销太大。ConcurrentHashMap分段锁,用可重入锁来实现。
4.Cookie和Session的区别
Session是保存在服务端的一个数据结构,用来跟踪用户的状态,这个数据一般保存在文件、集群、文件中。Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,是实现Session的一种方式。
5.索引有什么用?如何建索引?
快速查询。索引主要分为聚集索引和非聚集索引。查询较频繁的字段 、区别性高的字段、更新频率低
6.ArrayList是如何实现的,ArrayList和LinkedList的区别?ArrayList如何实现扩容。
数组和链表的区别。添加数据时先判断是否越界,越界则扩容,然后拷贝原数组内容到新数组,将新数组的引用赋值到ArrayList的对象上。
7.equals方法实现
原始等同于== 。常用的是hashcode相等。重写equals一定要重新hashcode方法。
8.面向对象
9.线程状态,BLOCKED和WAITING有什么区别
10.JVM如何加载字节码文件
11.JVM GC,GC算法。
12.什么情况会出现Full GC,什么情况会出现yong GC。
13.JVM内存模型
Happens-Before八个原则
14.Java运行时数据区
15.事务的实现原理
网友评论