Q: 为什么使用微服务?
A: 1. 解耦,减少人员的冲突,提高开发和测试的效率。2. 更好地做CI/CD。
Q: 为什么用rabbitmq?
A: 主要对比 kafka。1. 使用场景可靠性更高。2. 延时消息。3. Kafka 优势是高吞吐,目前的业务使用rabbitmq可以满足。4. 社区活跃,资料多。5. 界面友好。
Q: 怎么保证rabbitmq消息不丢?
A: 1. 生产者一端,使用 ack 机制,同时mq开启事务消息,事务成功才返回 ack,事务失败则重试。2. rabbitmq 持久化,等落盘之后再返回ack。3. 消费端手动ack。
Q: 接口的幂等性是怎么设计的,怎么保证幂等?
A: 1. 请求幂等,将数据库增删改操作的相对值修改改为绝对值修改。2. 使用全局id。3. 业务上幂等,比如同一个用户在 10 分钟内不能多次添加相同名单。
Q: 用过哪些 linux 命令?
A: 常用的命令有:查看cpu情况 top,查看内存情况 free, 查看网络情况 netstat,查看磁盘 df ,还有一些 java 的命令,jps, jstat ,jinfo, jstack 。
Q: Threadlocal 的使用场景
A:
Q: 如何设计一个系统
A: benchMark 对标:了解公司和业内的先进的解决方案,进行对标。
efficiency 效率:原型,可重用的系统或组件,自动化的工具等等。
architecture 架构:简单,合适,可演进。
function 功能:梳理需求,了解业务,整理出功能。
quality 质量:一方面功能要可用,可测试;另一方面要做好兜底方案,保证系统的稳定性。
performance 性能:根据业务场景进行设计和优化,常用的手段有无状态化有利于动态扩容缩容,串行改并行,单线程改多线程,同步改异步,读写分离,分库分表,sql优化,jvm参数优化等。
safety 安全:1. 权限控制;2. sql注入,各种网络攻击等;3. 协议或数据加密。
Q: 面试经典算法:二分查找,快速排序,反转链表,遍历二叉树,给定两束之和求下标,最近公共子节点,爬楼梯算法
A:
Q: linux 常用命令,awk,sed,sort,uniq,统计文本中出现次数最多的ip
A:
Q: 如何定位和排查问题
A: 1. 先从日志入手,判断是否是业务问题。2.是否是资源不足,可借助top,free,jstack等。3. 定位之后制定短期和长期解决方案。
Q: redis的数据结构
A:
Q: mysql update的执行过程
A: