有赞一面
1. HashMap的数据结构可以说一下吗?默认的初始化容量是多少
答:其底层数据结构是一个数组+链表的形式。其中当链表长度超过8时,会自动转化成红黑树。默认初始容量是16
2. 那什么时候不会变成红黑树?
答:**HashMap中的数组长度小于64时,是会直接进行resize,而不会转成红黑树的**
3. 有没有线程安全的hashMap?
答:ConcurrentHashMap与HashTable是线程安全的,其中ConcurrentHashMap效率高于HashTable
4. concurrentHashMap最多能有几个线程进行并发?put方法实现过程?
答: 依赖于创建table数组的数量,因为JDK1.8相较于JDK1.7取消了分段锁;
5. Java的锁有了解过吗?可重入锁说一下?内部实现
答 可重入锁和读写; 可重入锁是指,线程可以重复获取某一锁; 首先先判断state状态,如果state状态为0,则使用CAS将state置1,否则判断获取该锁的线程是否是当前线程,来进行重入
6. JVM运行时区域有哪些?JMM了解吗
答Java堆、方法区、程序计数器、虚拟机栈;JMM定义了一个线程与主存之间的抽象关系,使得程序员不需要了解底层缓存的复杂性
7. 多个线程同时对一个int变量进行加1操作?如何保证int合法性
答使用synchronize锁,线程每次在读取该int变量时强制去共享内存读取,写入后刷新到共享内存
8. GC 与 垃圾回收器
答为了提高垃圾回收机制的策略,JAVA堆分为新生代与老年代。新生代主流标记复制,老年代;标记清除与标记整理。 垃圾回收器有新生代,Serial、ParNew、Parallel Scavenge;老年代有CMS、Serial Old、Parallel Old (这里不会)
9. 常用设计模式?观察者模式
10. Java线程的状态? 线程调用Thread.sleep()经历了什么过程?
答新建状态、就绪状态、运行中状态、阻塞状态、等待状态、结束状态? 线程首先进行阻塞,然后被计时器唤醒,进入就绪状态,然后再获得cpu资源后进行运行状态,最终进入结束状态
11. 线程池参数介绍?介绍下参数如何工作?拒绝策略有哪些?
12. !!!Spring IOC底层存储结构 不会
13 Spring Controller 中 @RequestMapping 如何实现映射 不会
14. Spring 中 @Configuration 有什么用 不会
15. Spring中 Bean的生命周期 不会
16. Mysql中B+树索引介绍
17. Innodb中定义一个联合索引(a,b,c) select *** from table where a=x and c=x 是否需要回表
18. Redis的哨兵机制说一说 忘了。。。
19. 分布锁说一说
20.智力题 A点有1000吨煤,一辆卡车从A出发到B点 (A与B相距500),每开一公里会浪费一吨煤 (最多装500吨)。最多能运多少吨煤到B点
补充:负载均衡的算法有哪些? 在nginx上是如何使用的
#有赞##面经##校招##Java工程师#