继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java一些较难面试题整理(一) Java编程

求老仙
关注TA
已关注
手记 9
粉丝 1209
获赞 385


又到面试季了,整理了一些较难的题目,如果想去拿更多薪水的同学,可以关注下。如果你感兴趣,可以在评论区写下你的答案,我可以帮你纠正。


TreeMap和HashMap的区别?

HashMap为什么会采用链表+红黑树的形式?

ConcurrentHashTable和HashTable的区别?

谈谈HashTable的扩容问题?

如何实现一个基于Key-Value的 LRU缓存?用什么数据集结构?

为什么Proxy.newProxyInstance要传入一个ClassLoader?

AOP用什么实现?

谈谈你对Stream的map函数的理解?

同步、异步和阻塞、非阻塞有什么关系?

读取文件是,缓冲区一般设置多大性能比较好?

NIO的Channel比缓冲区快吗? 

缓冲区读到中文是乱码应该如何处理?

使用反射时,Method.invoke方法速度慢,有没有更好的方法?



打开App,阅读手记
5人推荐
发表评论
随时随地看视频慕课网APP

热门评论

TreeMap和HashMap的区别?

1.TreeMap是红黑树实现,HashMap是数组 + 链表 + 红黑树的实现

2.由于TreeMap是红黑树实现,所以TreeMap有序



HashMap为什么会采用链表+红黑树的形式?

最坏情况可能出现一个链表过长,查询效率降低,为了提高查询效率,链表长度超过阈值时,会升级成红黑树



ConcurrentHashMap和Hashtable的区别?

两者都是线程安全的,但是Hashtable的实现是通过Synchronized实现,操作时会锁住整个hash表

ConcurrentHashMap主要思想是把锁细化。

1.7中ConcurrentHashMap相当于是在Hashtable的前面又加了一层segment,分段锁

1.8中ConcurrentHashMap改成了数组+链表+红黑树的实现,通过Synchronized和cas实现锁



谈谈HashTable的扩容问题?

扩容通过rehash()实现,当Hashtable中的元素大于阈值(capacity * loadFactor)时,触发扩容,调用rehash(), 

newCapacity = capacity * 2 + 1; (为了取模时减少hash碰撞,长度尽量为素数或者奇数)


TreeMap和HashMap的区别?

1.TreeMap是红黑树实现,HashMap是数组 + 链表 + 红黑树的实现

2.由于TreeMap是红黑树实现,所以TreeMap有序



HashMap为什么会采用链表+红黑树的形式?

最坏情况可能出现一个链表过长,查询效率降低,为了提高查询效率,链表长度超过阈值时,会升级成红黑树



ConcurrentHashMap和Hashtable的区别?

两者都是线程安全的,但是Hashtable的实现是通过Synchronized实现,操作时会锁住整个hash表

ConcurrentHashMap主要思想是把锁细化。

1.7中ConcurrentHashMap相当于是在Hashtable的前面又加了一层segment,分段锁

1.8中ConcurrentHashMap改成了数组+链表+红黑树的实现,通过Synchronized和cas实现锁



谈谈HashTable的扩容问题?

扩容通过rehash()实现,当Hashtable中的元素大于阈值(capacity * loadFactor)时,触发扩容,调用rehash(), 

newCapacity = capacity * 2 + 1; (为了取模时减少hash碰撞,长度尽量为素数或者奇数)


如何实现一个基于Key-Value的 LRU缓存?用什么数据集结构?

LinkedHashMap

1.达到临界点时,删除头部节点

2.修改节点元素时,先删除节点,再插入新节点



为什么Proxy.newProxyInstance要传入一个ClassLoader?

保证Proxy代理类的class生成时,能找到对应的接口的class文件



AOP用什么实现?

静态代理

动态代理(

  JDK动态代理(面向接口,通过反射生成被代理接口实现新的匿名实现类),

  CGLIB代理(面向类,继承被动态代理的类)


谈谈你对Stream的map函数的理解?

Stream->map->Stream


查看全部评论