珠海小厂java后端实习面经(已OC)
问:ArrayList底层
答:基于数组实现,查询时间复杂度 0(1),插入O(n),有扩容机制,扩容到原长度 1.5 倍,扩容先创建新数组然后移动转移数据。
问:hashCode 和equals 区别
答:hashCode是对象唯一哈希码,equals是通过比较对象成员变量值是否相等。
(其实hashCode可能因为哈希冲突不唯一,Object的equals是比较地址,只是大部分类会重写为比较内容,==是比较地址)
问:StringBuilder和 StringBuffer 区别
答:在字符串拼接上性能有差异
(其实应该答线程安全,Buffer是线程安全的所以性能上会有额外开销)
问:如何保证并发安全
答:简单变量可用 CAS或原子类保证数据一致性,复杂业务通过加锁保证线程安全
问:ArrayList线程安全吗
答:不安全,应该使用 ConcurrentHashMap 等线程安全集合类,底层用 AQS 实现
问:Mysql事务隔离级别和相应的问题
答:读未提交、读已提交(RC)、可重复读(RR)、串行化,默认可重复读,通过加间隙锁避免幻读
问:索引底层
答:基于B+树实现,双向链表维护的多叉查找树,前后指针方便范围查询,节点存主键实现回表查询
问:什么情况导致索引失效
答:不符合最左前缀原则,like、!=、isnull 等等。
(其实还有函数与运算操作也会导致索引失效)
问:Redis 分布式锁底层
答:忘记了
(其实是setnx,真忘了)
问:JVM内存结构
答:程序计数器、方法区、常量池、堆和栈
问:垃圾回收算法
答:标记清除法(会产生内存碎片),复制法(需多一倍空闲空间,无内存碎片)。
问:讲讲AOP
答:面向切面编程,用来增强方法,通过找到切入点,选择通知类型增强方法,通过动态代理,调用动态代理的方法
问:Spring Bean 生命周期
答:不会
(没背Spring八股)
问:超卖问题
答:乐观锁解决,原理类似 CAS,先检查优惠券数量是否与原数量一致,再进行减一操作,但高并发下可能成功率会很低。
(其实优化了不需要一致,只要剩余数大于0都会扣库存)
问:消息队列推送消息如何保证不重复
答:生产者去重,发送消息前筛掉发送过的消息
(其实RocketMQ自身具备消息去重功能,通过生产者组内的唯一标识和消息的全局唯一标识,在 Broker 端对消息进行去重处理)
最后经典问我27怎么就找实习学校同意吗,然后问我福州的为什么选择投珠海,然后就跟我说结束了让我等通知
估计是挂了,答的太烂了,没岗位介绍也没反问机会,还跟我强调3天没回复就是落选了
准备太不充分了,一定要把自己简历吃透,被自己写的东西问倒可太丢脸了
————————————————
二编
后续经理二面,讲了公司大致业务和实习生安排。
公司感觉大概是面向海外的外包业务,招实习生进来一般不会接触公司业务,是几个人的实习生小团队跟着ld研究课题进行技术迭代,后面有个业务是类似社区的可能会让我接触,ld说跟我的黑马点评有点像,想把我往那方面培养?
原本我这么早就投暑期日常实习是想着熟悉面试流程,面着玩,结果OC了,我想着没法立刻过去,想拒掉的,结果经理很包容,跟我说可以期末考后再去
。
那我后续可能还是接着面,拿到offer我就摊牌说暑假才能去,最后选一个最合适的吧,后续应该会开个帖子来问下大家意见一起选一下
答:基于数组实现,查询时间复杂度 0(1),插入O(n),有扩容机制,扩容到原长度 1.5 倍,扩容先创建新数组然后移动转移数据。
问:hashCode 和equals 区别
答:hashCode是对象唯一哈希码,equals是通过比较对象成员变量值是否相等。
(其实hashCode可能因为哈希冲突不唯一,Object的equals是比较地址,只是大部分类会重写为比较内容,==是比较地址)
问:StringBuilder和 StringBuffer 区别
答:在字符串拼接上性能有差异
(其实应该答线程安全,Buffer是线程安全的所以性能上会有额外开销)
问:如何保证并发安全
答:简单变量可用 CAS或原子类保证数据一致性,复杂业务通过加锁保证线程安全
问:ArrayList线程安全吗
答:不安全,应该使用 ConcurrentHashMap 等线程安全集合类,底层用 AQS 实现
问:Mysql事务隔离级别和相应的问题
答:读未提交、读已提交(RC)、可重复读(RR)、串行化,默认可重复读,通过加间隙锁避免幻读
问:索引底层
答:基于B+树实现,双向链表维护的多叉查找树,前后指针方便范围查询,节点存主键实现回表查询
问:什么情况导致索引失效
答:不符合最左前缀原则,like、!=、isnull 等等。
(其实还有函数与运算操作也会导致索引失效)
问:Redis 分布式锁底层
答:忘记了
(其实是setnx,真忘了)
问:JVM内存结构
答:程序计数器、方法区、常量池、堆和栈
问:垃圾回收算法
答:标记清除法(会产生内存碎片),复制法(需多一倍空闲空间,无内存碎片)。
问:讲讲AOP
答:面向切面编程,用来增强方法,通过找到切入点,选择通知类型增强方法,通过动态代理,调用动态代理的方法
问:Spring Bean 生命周期
答:不会
(没背Spring八股)
问:超卖问题
答:乐观锁解决,原理类似 CAS,先检查优惠券数量是否与原数量一致,再进行减一操作,但高并发下可能成功率会很低。
(其实优化了不需要一致,只要剩余数大于0都会扣库存)
问:消息队列推送消息如何保证不重复
答:生产者去重,发送消息前筛掉发送过的消息
(其实RocketMQ自身具备消息去重功能,通过生产者组内的唯一标识和消息的全局唯一标识,在 Broker 端对消息进行去重处理)
最后经典问我27怎么就找实习学校同意吗,然后问我福州的为什么选择投珠海,然后就跟我说结束了让我等通知
估计是挂了,答的太烂了,没岗位介绍也没反问机会,还跟我强调3天没回复就是落选了
准备太不充分了,一定要把自己简历吃透,被自己写的东西问倒可太丢脸了
————————————————
二编
后续经理二面,讲了公司大致业务和实习生安排。
公司感觉大概是面向海外的外包业务,招实习生进来一般不会接触公司业务,是几个人的实习生小团队跟着ld研究课题进行技术迭代,后面有个业务是类似社区的可能会让我接触,ld说跟我的黑马点评有点像,想把我往那方面培养?
原本我这么早就投暑期日常实习是想着熟悉面试流程,面着玩,结果OC了,我想着没法立刻过去,想拒掉的,结果经理很包容,跟我说可以期末考后再去
那我后续可能还是接着面,拿到offer我就摊牌说暑假才能去,最后选一个最合适的吧,后续应该会开个帖子来问下大家意见一起选一下
全部评论
你是我今天在牛客见过最美的女孩
好厉害


茶老师太强了
你是我见过在牛客见过最美的女孩
这些东西搁哪里学啊
佬是哪里投的啊
为什么我一个面试也没有
你是我在牛客见过最美的女孩
相关推荐

点赞 评论 收藏
分享