菜鸟春招Java二面凉经
第一个大厂面试完了,真的一直不想听这段录音,觉得面得特别差,当时面完整整一个下午时间才缓过神来😭
今天终于鼓起还是鼓起勇气来复盘下,只有不断复盘才能进步吧,0offer选手继续加油
3/27 一面,30min
1,就问了一些集合和数据库事务的基础吧,还有数据结构的特性是啥?最后还有一些基础问题:比赛你负责做的那个模块?选开发的原因?学Java多久了?项目是怎么搭的?看别人的代码中觉得最巧妙或是印象最深刻的是哪一部分?
4/1 二面,40min,
2,线程池说一下,,,
老八股文(三个临界条件会发生啥,数据结构,拒绝策略以及通过什么参数与方法来线程监控)
3,BIO和NIO了解不,说一下他们的区别吧
4,hashmap不是线程安全的,concurrentMap为什么是线程安全的呢?
5,并发安全说一下(我把悲观锁,乐观锁以及可重入锁说了遍)
面试官追问:你知道可重入锁是吧,那你把reentrank的详细原理给我说下
reetranklock不是取代synchronized的,而是在提供比如可饷应中断锁,可轮询锁请求,定时锁等避免多线程死锁的方法;reentranklock通过方法lock0与unlock()来进行加锁与解锁操作,与synchronized会被JVM自动解锁机制不同,reentranklock需要手动进行解锁,为了程序异常二出现无法解锁,用reetrankLock必须在finally控制块中进行解锁操作...
6,AOP动态代理的实现方式有哪些以及区别说下
7,CMS垃圾回收器回收过程说下
initial mark -> concurrent mark -> remark -> sweep,
8,mysql大数据量分页如何查
先查主键,再查记录
9,i++是原子操作吗?为什么?,1什么是分布式事务?分布式事务如何保证数据一致性?
1.补偿性事务 2.后置提交优化 3.两阶段提交
10,线程池的参数如何作用?假如核心线程数=5,最大线程数=15,阻塞队列=10,来了6个任务,会创建几个线程?
- 创建5个线程,第6个线程入阻塞队列。如果阻塞队列满了,再创建线程至最大线程数;如果达到最大线程数,阻塞队列也满了,则走拒绝策略,
11,redis的过期策略
- 定期删除:定期随机抽取20个key检查过期并删除
- 惰性删除:读取key时检查到过期则删除
13,kafka如何保证消息可靠性?
重复发送,数据落地,确认信号.....
写笔试题
手写单例模式(懒汉+双重校验),阿里一道字符串匹配的题(网上能查到) 复盘完发现真的原理很难,但是当时真的答得特别差,泡了一礼拜就挂了,还是太菜了,继续加油吧。