Java后端
·2023-03-01#求职# #Java#
时间:2023/2/28
地点:广州
规模:20~50
岗位:Java
来源:boss
总结:项目亮点不要为了用技术而用技术,需要结合现实场景考虑。如果要你说一下自己对**的理解,要一直说下去,说到他叫你停才停。就好像aqs可以先讲底层原理,然后讲实现类,接着讲syn和reenlock的区别,然后锁升级啊,自旋锁啊,多个collection啊,双向链表啊,不可打断锁怎么实现啊这些都可以延申。
1. 自我介绍
2. java 常用集合
Collection 和 Map 顶级接口。Collection 下的 List 接口常用 arraylist 和 linkedlist;Set 接口常用 hashset。Map 接口常用 hashmap
3. arraylist 集合满的扩容机制
先判断当前数组长度能否容纳 minCapacity,如果可以则直接放入
如果无法容纳,数组进行扩容。当前数组长度 当前数组长度<<1,大概等于数组扩容1.5倍
判断扩容后的长度能否容纳 minCapacity,如果可以直接放入,扩容结束。
如果无法容纳,则以 minCapacity 作为数组长度。
4. 常见异常
下标越界,空指针,算数异常,格式异常
5. 受检异常和非受检异常
受检异常时在编译期间需要同 try-catch 或 throws 捕获和抛出的异常。如果不捕获或抛出,编译器会报错。通常有 IO异常、ClassNotFound异常、SQL异常
非受检异常就是 RuntimeException 及其子类异常,通常有下标越界、空指针、算数异常等。
6. 反射是什么
在运行时获取类和类方法能力。Spring 的 aop 的动态代理就是基于反射来实现的。
7. Spring 的 aop 实现原理
aop 是【将和业务无关的,但是为业务模块共同调用的逻辑】封装起来,减少系统代码重复,降低模块耦合。
它的实现是基于动态代理。如果要代理的对象实现了某个接口,则使用 JDK Proxy 去创建代理对象。如果没有实现接口的对象,则使用 cglib 生成一个被代理对象的子类作为代理。
8. mysql 索引有哪些
聚集缓存和二级缓存。二级包括了单例缓存、组合缓存、覆盖缓存、前缀缓存、唯一缓存。
9. sql 语句优化
慢查询和explain
10. mysql 锁了解多少
默认 innodb 的锁有全局锁、表锁、行锁。表锁包括元数据和意向锁;行锁包括行锁、间隙锁、临建锁。行锁表锁还分共享锁和排他锁。
11. aqs 是什么
AQS 就是一个抽象类,主要用来构建锁和同步器。我们常用的 ReentrantLock 就是 aqs 的实现类。通过一个 Owner、state锁状态、一个双向链表的 entrylist,一个等待结合内部类包含了一个双向链表的 waitset。底层使用 cas 搭配 park 尝试获锁和等待。获锁失败的线程去 entrylist 结尾并将前节点状态修改为 -1。通过锁状态判断上锁情况和重入次数。通过对park之前的操作可以生成可中断锁和不可中断锁。
12. 在项目中 aqs 有什么使用场景
通过使用 lock 对必要的操作上锁,例如对一个资产的所有操作都要上锁。
13. 有使用过Docker进行项目部署吗
没有,但是去写过 dockerfile
14. redisson的全局锁
底层使用hash数据结构。名称代表着锁,key代表线程,value代表重入次数
15. redisson除了锁还有用其他的东西吗
无
16. 项目细节:怎么通过 redisson 全局锁搭配 rabbitmq 防止数据穿透
以单个视频为锁单位,一个视频下只允许一个用户去请求。
17. 项目细节:既然持续上锁那么 rabbitmq 的作用是什么
这里是因为刚学了 rabbitmq 的保证信息不丢失,所以就使用了,没有考虑到现实开发场景,被教育了。
18. 项目细节:评论缓存使用什么数据类型进行缓存
通过mysql获取的评论集合直接转string类型
反问
1. 贵岗位需要什么样的一个人才呢?
2. 您觉得在本轮面试中,我还有哪些能力可以提升的呢?
30
0
分享
操作
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
