HYZ
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. 您觉得在本轮面试中,我还有哪些能力可以提升的呢?
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP