TOC{:toc}
一.基础知识
1.集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList;HashSet,TreeSet);
| |
2.HashMap的底层实现,之后会问ConcurrentHashMap的底层实现;
| |
| |
3.如何实现HashMap顺序存储:可以参考LinkedHashMap的底层实现;
| |
4.HashTable和ConcurrentHashMap的区别;
| |
5.String,StringBuffer和StringBuilder的区别;
| |
6.Object的方法有哪些:比如有wait方法,为什么会有;
| |
7.wait和sleep的区别,必须理解;
| |
8.JVM的内存结构,JVM的算法;
| |
9.强引用,软引用和弱引用的区别;
| |
10.数组在内存中如何分配;
| |
11.
12.springmvc的核心是什么,请求的流程是怎么处理的,控制反转怎么实现的;
| |
13.spring里面的aop的原理是什么;
| |
17.说说http,https协议;
| |
19.osi五层网络协议;
| |
20.tcp,udp区别;
| |
21.用过哪些加密算法:对称加密,非对称加密算法;
| |
22.说说tcp三次握手,四次挥手;
| |
23.cookie和session的区别,分布式环境怎么保存用户状态;
| |
25.请写一段栈溢出、堆溢出的代码;
| |
26.ThreadLocal可以用来共享数据吗
| |
二.IO:
1.bio,nio,aio的区别;
| |
2.nio框架:dubbo的实现原理;
| |
三.算法:
1.java中常说的堆和栈,分别是什么数据结构;另外,为什么要分为堆和栈来存储数据
| |
2.TreeMap如何插入数据:二叉树的左旋,右旋,双旋;
| |
3.一个排序之后的数组,插入数据,可以使用什么方法?答:二分法;问:时间复杂度是多少?
| |
4.平衡二叉树的时间复杂度;
| |
四. 多线程相关:
1.说说阻塞队列的实现:可以参考ArrayBlockingQueue的底层实现(锁和同步都行);
| |
2.进程通讯的方式:消息队列,共享内存,信号量,socket通讯等;
| |
5.Excutors可以产生哪些线程池;
| |
6.为什么要用线程池;
| |
8.线程池原理
| |
五.数据库相关(mysql)
1.
| |
2.mysql的语句优化,使用什么工具;
| |
3.mysql的索引分类:B+,hash;什么情况用什么索引;
| |
4.mysql的存储引擎有哪些,区别是什么;
| |
5.说说事务的特性和隔离级别;
| |
6.悲观锁和乐观锁的区别,怎么实现
| |
六.mq
1.mq的原理是什么:
| |
2.mq如何保证实时性;
| |
3.mq的持久化是怎么做的;
| |
七.nosql相关(主要是redis)
1.redis和memcache的区别
| |
3.redis是如何持久化的:rdb和aof;
| |
4.redis集群如何同步;
| |
5.redis的数据添加过程是怎样的:哈希槽;
| |
6.redis的淘汰策略有哪些;
| |