做一个单纯的程序汪,分享干货,聊聊人生。
微信公众号:后端架构进阶
关注我发现更多的干货,微服务、Spring源码、JVM、SpringCloud Alibaba、K8S等。
最近在准备面试,大大小小也面了有五六家了,把这几家遇到的问题做个总结。基本都是很高频的面试题,给大家做个参考,金三银四,你准备好了么?
一、消息队列MQ
消息队列老生常谈的问题了,这个是一定会涉及的,那么我遇到的都是些啥问题呢?
削峰填谷就不说了,幂等,数据不丢失,这是基本操作。
建议多看看比较主流的mq,比如:rocketmq、kafka、rabbitmq。知道原理和一些基本的差异。
kafka多提一嘴,为什么这么快,分片有啥好处。
自己在项目中都遇到哪些奇怪的问题?这个比较刁钻些,可以看出你到底有没有使用,遇到问题你自己怎么解决以及自己处理问题的能力。
二、MYSQL
mysql更多的是问一些优化手段,explain的分析,以及索引,innodb和myisam的差异。以及mvcc相关的一些内容。数据库的隔离级别,以及常见的一些高可用方案。死锁定位以及问题处理的方式。
三、REDIS
redis首先基础的一些数据类型,以及他们的一些使用场景,bitmap等的使用。缓存穿透、缓存雪崩以及热点缓存的使用方式都是必要的。
持久化的两种方式:RDB(快照)和AOF(追加),他们的使用场景以及都有啥优缺点是一定要会的。
常见的集群方案都有哪些?项目是怎么使用的,为什么选择这种也是需要知道的。
四、JVM调优
这个就是主要考察自己项目中的一些调优手段,举例说明下,无非就是减少STW(stop the world)的时间,然后垃圾收集器的选择,都有啥优缺点,各自适应的场景。
垃圾收集的过程,以及JVM内存模型是怎么分配的,动态年龄担保机制,还有就是一些基本参数的设置。
五、源码
提到源码,肯定绕不开的是spring的源码了,spring的bean的生命周期,一定会涉及。aop,事务的创建过程。以及spring的bean工厂和applicationcontext的区别,factorybean的作用。循环依赖的解决方案。还有各种扩展点,各种aware 和后置处理器。以及自己在项目中的使用方式。
还有就是mybatis了,xml写好sql语句后,如何加载的,sqlsessionfactory的作用,sqlsession的操作等等,各种一级二级缓存。
六、并发
synchronized和lock的区别。synchronized在1.6后做了哪些优化?锁升级,锁粗化,锁的消除。
synchronized的底层实现。mark word里面都有哪些信息等等。
七、分布式锁
zk和redis分布式锁分别实现方式。
zk实现分布式锁使用的是哪种数据结构,为什么选这种,watch机制是一次性使用还是可以多次。
redis如果不适用lua脚本如何实现事务性。redisson的看门狗机制等等。
八、项目部署方案
项目部署方案以及高并发下如何保证服务的高可用,数据库瓶颈如何突破,本地缓存和分布式缓存的优缺点。
当然以上是我遇到的比较高频的面试点,很多都是提出来给大家做个参考,还需要细细的去学习了解,包括在工作中多实践多使用。做到融会贯通,那么应对面试也就能灵活应对了。
预祝大家都能找到心仪的职位。
总结
以上就是今日的内容总结和分享,感谢各位大佬的 点赞、关注和 收藏 !
微信公众号:后端架构进阶
更多文章正在赶来,喜欢记得给我点个 👍 ,感谢支持!
公众号文章同步更新!关注我,不迷路!