最近要换工作,然后开始面试,也发现有很多不知道的地方,可能是自己关注不够。现在写这篇文章,也记录一下我遇到的没有回答的问题。如何保证redis缓存和mysql数据的一致性?常用的是延迟双删除。先删除,更新数据,休眠一段时间,再删除。或者用阿里的取消(至少3家公司问过)Hystrix功能:服务熔断和降级,注解为:@HystrixCommand,以及属性配置。如何生成数据库表ID,ID作为索引,应该是有序递增的,利于查询,最好不要使用UUID。如果生成的话,可以选择雪花算法。(好几个公司都问过这个问题)spring事务的传递,具体的7个,@Transactionl注解的配置属性。mysql优化,索引什么时候失效(至少3个),设置性别的时候用tinyint,这个只有1个字节,空间小。rocketMQ中的topic有哪些类型?JVM优化。如何保证发送到队列的消费被消费?MQ挂了怎么办?分布式事务(我个人觉得最简单的就是阿里的seata,采用AT模式,但这是一个问题,如果有脏数据,无法回滚,需要手动操作。)ArrayList的remove有什么作用?remove(i)先找到对应的位置,时间复杂度为O(1),清除i下标,并将后续数据向前移动一位,时间复杂度:O(n)。LinkedList的remove有什么作用?remove(i)先找到对应的位置,时间复杂度O(n),清除i的下标,将后面的数据向前移动一位,时间复杂度:O(1)HashMap的get方法,具体实现?定位到backet的时间复杂度是多少?我不确定这一点。工作中常用的设计模式(单实例线程池,模板方法,定义一个抽象接口,不同的子类实现不同的方法。)
