Open xinrong2019 opened 5 years ago
自我介绍直接扯最近做的需求,然后扯一个最近看的,比如springboot应用是如何注册到注册中心的。最后问什么基础就说什么基础,复习最近的面试遇到的问题,比如如何保证消息不被重发,如何保证消息的顺序性。
1、最近有一个需求,实现导出进度条展示。
我想了两种方案,整体的思路类似,先查出总数返回给前台,然后后台将数据分成多段,开始多线程查询,每一段查询完返回给前端,前端根据每一段的查询结果显示进度,在内存中汇总数据,最后查完返回给前端。
在内存中汇总会不会满,会不会OOM?
线上数据几十万条,不会过大。
如果很大怎么办?一个文件总共超过几个G,如何实现这个功能?
可以对下载服务单独扩容,横向扩展。事先将总数据量算出来,然后分发到多个机器上处理下载请求,将这些文件逐个返回给客户端。
横向扩展下载服务,如果其中有一台服务挂了怎么办?
服务挂了,需要对下载请求做一个记录,将分发到没台下载服务集群中的任务提及到MQ或者Redis,所有机器下载完成,将MQ或者redis中的任务消费掉或者删除掉。如果有没有成功的,通过定时任务定期从redis中查询下载任务,去对应的机器下载,直到下载完成,或者用户手动取消。
第二种方案,
可以将每一段多线程下载。
2、结合项目讲一下自己对项目的理解,比如不足:存在单点,模块开发不灵活,
这里临时看看翟永超的微服务专题。思考微服务的优点和缺点。
多研究些架构,少谈些框架(1) -- 论微服务架构的核心概念
拆分带来的需要解决的技术问题?
分布式事务
如何实现分布式事务?
基于MQ的最终一致性补偿策略
如何保证消费者的消费消息的幂等性?
如何保证生产者的发送消息的可靠性?
如何保证消息的顺序性?
消息队列如何实现高可用?
如何确保消息正确地发送至 RabbitMQ?
如何确保消息接收方消费了消息?
如何避免消息重复投递或重复消费?
什么是死信队列?
RabbitMQ 中的 cluster、mirrored queue,以及 warrens 机制分别用于解决什么问题?
RabbitMQ 是否会弄丢数据?
3、用过哪些锁?
4、SpringCloud如何做负载均衡?
5、项目中如何做权限认证(Spring Security)
6、项目中用过缓存吗?
基于Redis的分布式缓存,整合了Spring Session。
如何用?
了解原理吗?
Spring、SpringMVC、SpringBoot、Mybatis,选一个整体说一下,要有体系。
MySQL的隔离级别说一下?
为什么用InnoDB引擎?和MyISAM的区别?
支持事务、支持行级锁和表级锁、更高的并发量
查询不加锁。
数据库索引的原理说一下?
Redis的持久化方式说一下?各自优缺点
Redis过期策略说一下?
如果有大量的 key 需要设置同一时间过期,一般需要注意什么?
Redis 使用场景
数据缓存 会话缓存 消息队列 分布式锁
Redis主从复制原理说一下?
Redis集群如何做高可用?
Redis分区说一下?
代理模式写一下?
命令模式和策略模式的区别?
Java 提供了哪些阻塞队列的实现?
http://svip.iocoder.cn/Java/Concurrent/Interview/
线程池执行任务的过程说一下?
线程池队列满了,此时提交一个任务,会发生什么?
1、调用invokeBeanFactoryPostProcessors方法,在ConfigurationClassPostProcessor中解析、导入配置类
在Spring应用启动的流程中,bean定义加载到beanFactory后,bean初始化前,会调用invokeBeanFactoryPostProcessors方法,该方法在AbstractApplicationContext类的refresh方法中。
这是自动注解配置加载的入口。
<1> 处理AbstractApplicationContext的 post-processor ```java // Do not initialize FactoryBeans here: We need to leave all regular beans // uninitialized to let the bean factory post-processors apply to them! // Separate between BeanDefinitionRegistryPostProcessors that implement // PriorityOrdered, Ordered, and the rest. List