顺网科技1面
1.2min的自我介绍;
2.介绍一个你最熟悉的项目;
3.项目难点是什么?
盖楼活动大量用户进入页面的查询、以及用户互动的延迟;
下单消息的延迟,为了保证订单消息消费的顺序性,我们用了MessageListenerOrderly,但是这样下单消息消费很慢(加机器后仍然达不到要求),因此二开了阶段性并发consumer;
线程资源分配不合理,配置之后就无法改变;
只说了一个点;
4.分库分表的方式?
内部中间件,类似Sharing-JDBC;
todo Sharing-JDBC需要了解下架构原理;
5.表水平拆分之后,遇到了什么问题?
分布式全局唯一ID;
跨分片事物;
跨分片join;
6.RockteMQ内部通信协议是如何设计的?
没有回答出来,说跟Netty有关系;
7.RocketMQ对比kafka?
kafka是基于scala编写的,rocketmq是java开发的,方便二开;
rocketmq使用JMS协议,kafka支持自定义协议;
rocketmq支持消息过滤,kafka不支持;
rocketmq支持消息重试,kafka不支持;
rocketmq支持死信队列,kafka不支持;
rocketmq支持延迟消息,kafka不支持;
没有回答好,以上是较为全面的答案。
8.线上RocketMQ是如何部署的?
2主4从,因为用到了Dleger,具体讲了讲;
9.使用MQ时,要考虑哪些问题?
降低了系统的可用性;
提升了整个系统的复杂度;
消息丢失问题,比如生产者发送消息失败;
重复消息问题,包括生产者产生重复消息、消费者消费重复消息;
消息的顺序问题,比如生产者发送消息的顺序要求跟消费者消费消息的顺序要保持一致;
一致性问题,比如需要保证操作db和发送消息同时成功/失败;
消息堆积问题,比如生产消息快而消费速度慢;
答非所问了,没有回答好。
10.如何解决MQ带来的问题?
消息丢失,重试;
重复消费,用redis幂等;
消息顺序问题,如果要强一致,使用单读写队列;
一致性问题,考虑事物消息/分布式事务;
消息堆积,消费者扩容。
11.mysql如何看线上的慢SQL?
my.cnf增加配置:log-slow-queries和long_query_time;
12.如何优化SQL?
建选择性好的联合索引,并基于索引优化SQL;
13.mysql索引快的原因是什么?
回答了B+树的数据结构;
14.Object类中常用的方法?
hashCode;
equals;
toString;
getClass;
15.hashCode的使用场景?
散列表,比如HashMap;
16.说下synchronized?
少说了,应该先说使用,再谈原理。
https://snailclimb.gitee.io/javaguide/#/docs/java/multi-thread/2020最新Java并发进阶常见面试题总结?id=_13-讲一下-synchronized-关键字的底层原理
17.线上问题的排查?
1.下线机器,防止正常流量打进来;
2.jmap把堆dump出来并下载到本地;
3.倒入jprofiler/mat,具体分析;
18.如何自己实现监控?
MXBean系列;
19.mysql的默认隔离级别?
对于innodb来说是REPEATABLE-READ;
20.REPEATABLE-READ有什么并发问题?
对于其他引擎,有幻读问题。