Java技术栈之如何面试别人~~

以下内容仅做选择性参考~~~~

JAVA

基础组件

HashMap

1、HashMap实现原理、数据结构?
答:最好是针对1.7/1.8作出区分解释
2、简述HashMap的扩容机制,为什么是按2扩容?
答:参考这篇博客https://blog.csdn.net/zjcjava/article/details/78495416
3、为什么说HashMap是线程不安全的?
答:参考这篇博客https://www.jianshu.com/p/e2f75c8cce01
4、线程安全的HashMap有哪些
答:HashTable、ConcurrentHashMap
5、ConcurrentHashMap实现原理?
答:分段锁的概念,最好也区分1.7/1.8的实现原理及区别。

ArrayList

1、ArrayList实现原理?有没有看过源码?
答:默认长度、扩容机制,
2、ArrayList实现的接口有了解吗?
答:RadomAccess接口、Cloneable接口。这些接口都是空接口,他们本质上都是标记接口,因为ArrayList底层就是个数组,数组的存储结构在内存里是连续的,随机存取的性能高,所有用RadomAccess标记。这里可以跟LinkedList做对比扩展。LinkedList不支持随机存储。
Cloneable就是支持克隆方法,只有实现了该接口,默认都是浅克隆,只做了解就行,深克隆比较麻烦,需要把所有的引用类型都克隆一遍,另一种深克隆的解决方式就是用序列化/反序列化,了解即可。
聊到clone方法就可以扩展Object的方法都有哪些
3、线程安全的List有了解吗?简述下其原理
答:Vector、CopyOnWriteArrayList

ThreadLocal

1、ThreadLocal原理、源码有了解吗?
答:涉及存储结构、线性探测法、JAVA内存泄露、弱引用这些概念。参考博客https://juejin.im/post/5cf75a995188254628166745 (作者是我) 。这个也可以再做一层扩展,有没有了解针对ThreadLocal的优化及优化原理:FastThreadLocal

JDK动态代理

1、简述下什么是动态代理?动态代理可以怎么实现?
答:可以参考https://juejin.im/post/5d09e1a3f265da1bc07e3d8a (作者是我)
2、JAVA中动态代理技术都有哪些?比如JDK动态代理要怎么实现、传哪些参数等?有没有了解有什么地方用到了JDK动态代理?
答:cglib动态代理、JDK动态代理。像Spring的AOP、Spring的ConfigBean的实例化、Mabatis都用到了动态代理

Servlet

1、简述对Servlet的理解、Servlet的生命周期
答:如果能基于web.xml配置,Servlet实例过程都有详细阐述最好

多线程+虚拟机

1、谈谈对volatile关键字的理解、作用
答:要答出数据可见性、禁止指令重排序这些点。如果能扩展出来实现原理、缓存一致性协议、内存模型这些概念就更好了。
2、谈谈对synchronize关键字的理解、作用
答:volatile有的作用synchronize都有,只不过synchronize具有排他性。这里再扩展JAVA虚拟机针对synchronize做的优化:偏向锁、轻量级锁、重量级锁(监视器锁)这些概念。
3、了解偏向锁、轻量级锁、重量级锁吗?
答:最好答出这几个锁的底层实现原理及扩展机制,可以引申对象的存储结构
4、对象的存储结构
答:对象头+实例数据+对象填充。对象头又分为MarkWord+对象元数据引用。MarkWord基于不同的锁模式又有不同的存储结构。。。
5、针对重量级锁也叫监视器锁,是否了解底层原理?
答:要答出锁池或者等待队列、阻塞队列这些概念,再扩展wait()、notify()、notifyAll()这些方法的作用。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值