记录Java一周的面试题
开篇
2022注定是不平凡的一年,各大厂裁员不断,京东、美团、火币、每日优鲜、阿里等等,不论是大厂还是中小厂都在降本增效;没错,我自己也不幸中招了,去年入职以后,今年4月份开启了一波裁员,当时组内比例50%,当时很幸运的躲过了一波,随之leader就针对于剩下的人员开了一波会议,描述的意思就是“今年的预算不足,所以不得不降本增效,但是剩下的你们好好干,今年下半年的预算是充足了,不会在动手了,安心干活吧!”;从会议室出来内心开始平静了,看来可以今年是可以苟一波了。
6月份,公司发布通知,由于疫情影响、风水等种种原因,现在要搬离现办公地址去往别的地方,随之发布了新的办公地址,然后一查,得,共享办公室,惊不惊喜意不意外,是不是和某公司的招式一模一样。
8月份,听到风声,又要裁员了,别的组都开始聚餐、讨论人员,我们组风平浪静,为啥?因为leader也要走,月底的某一天,hr发消息,来一下会议室,几分钟后大家也知道了,毕业了,最后组里只剩下3个人,最终还是没有躲过这一劫。
知道今年难,但是没想到这么难,毕业快两周了,接到的面试邀请不足10个。你可能会说是不是简历问题啥的,那肯定不是,同样的简历,去年一周可以约到将近20个面试,到现在的寥寥无几;接下来开始我的面试旅程,下面是最近位数不过的面试中,问道的面试题,整理一下,先分享一波,后续在持续输出:
项目介绍
巴拉巴拉。。。。。。略过,没啥可分享的,就是业务、技术栈、技术点、解决了什么问题等等。
jvm相关
- jvm布局,各部分作用
- 如何确认垃圾
- 垃圾回收算法
- 垃圾回收器
- Parallel Old 与 CMS的区别
- CMS与G1的区别于优缺点
- 内存溢出、内存飙升,怎么排查?
- 服务器的配置?
- 使用了哪种垃圾回收算法?
Java相关
- 什么是重排序
- volatile实现原理,特性
- synchronized的特性及原理
- ReentrantLock锁了什么
- ReentrantLock与synchronized区别
- HashMap与ConcurrentHashMap的区别,如何把HashMap改造成ConcurrentHashMap
- AQS是什么
- 线程的状态
- 线程池参数、运行原理、拒绝策略等
- 子线程如何获取父线程的信息(InheritableThreadLocal)
- List能存放多少数据?
- HashTable/HashMap/ConcurrentHashMap的key/value能为空吗?
Spring及SpringBoot
- Spring与SpringBoot的区别
- AOP原理
- 事务实现原理
- 事务失效场景,如何解决,事务的隔离级别
- SpringBean的生命周期
- 除了AOP还有什么办法可以做切面
- SpringBoot服务打包之后,如何在后台运行
- FactoryBean 与 BeanFactory的区别?
dubbo
- dubbo有哪些角色
- dubbo的实现原理
- 如何自己实现一个dubbo框架,需要那些模块
- dubbo的调用链路
- dubbo的通信协议以及序列化协议,默认是什么?
- 如何扩展dubbo?
- dubbo的SPI与Java的SPI有什么区别
Zookeeper
- zookeeper 的节点类型
- zookeeper 能做什么,实现原理
- watch机制
- zab协议
- master选举
MySQL
- 在Linux中库和表是怎么存放的?
- mysql中的索引
- 怎么进行sql优化的
- Mysql的一次IO是怎么样执行的
- B+树的结构是怎样的?数据怎么存放?
- 组合索引在B+树上的非叶子节点是怎么存放的?
- 分库分表怎么做的?
- 如何判断怎么拆分?如何判断是需要分库还是分表?
- 单库多表和多库单表的效率那个好?为什么?
- 分库分表后的主键怎么设置?达到上限怎么办?
- MVCC是什么?事务特性?怎么实现事务?
- redoLog、undoLog、binLog区别?
MyBatis
- SqlSessionFactory和SqlSession是什么?
- 如何现实MyBatis插件?
- Mybatis中有哪几个角色?
- JDBC中有哪几个类?
- 服务发起请求到数据落表的流程
Redis
- redis有哪些数据类型?
- redis有哪些数据结构?
- 淘汰策略,过期策略
- 集群模式
- 主从复制流程
- 分布式锁?实现原理?过期时间到了业务没执行完怎么处理?
- redis为什么快?
- 6.0为啥改成多线程?是否线程安全?
- redis中的IO多路复用是否可以应用到MySql的链接上?
- 使用redis有没有碰到什么问题?
- 分布式缓存的一致性hash怎么使用?
设计模式
- 工厂的三种模式
- 单例模式
- 策略模式
- 享元模式
- 代理模式等
消息中间件
- 设计到哪些角色?
- 消息幂等怎么处理?
- 消费出现异常如何处理?
场景题&算法
- 如何统计出一个文件中出现最大的元素?
- 千万用户如何设计一个排行榜?读出前100名?自己的排名?自己排名的前20和后20等
- 二维数组输出所有的组合
- 找出01开头的连续出现次数最多的下标
- 千万数据找元素等
- 千万用户抢10个商品如何设计
结尾
以上问题就是最近几场面试遇到的问题,可能遗漏了几个,但基本上就是这些,回答个人感觉回答的还行,除了极个别的点忘了,其他基本都能回答个八九不离十,但最终结果不太如意,希望后面不断补进吧。
最后就是,北京的小伙伴,公司缺人有HC可能内推一下小编,先在此感谢!