保存成功
订阅成功
保存失败,请重试
提交成功
ilomilo

ilomilo

资深JAVA开发工程师
4年开发经验,精通数据结构和算法,精通web框架源码(spring、mybatis、webflux等),精通中间件的最佳实践和源码,精通分布式技术...更多
创作文章12

2020 年 5 月 RocketMQ 面试题集锦

RocketMQ 是阿里巴巴开发的一款开源的消息中间件,具有集群消费、广播消费、消息积压能力强、防止消息丢失、顺序消息、事务型消息、保证高可用、高性能读写数据等等功能和优点,但是仅仅熟悉 MQ 是远远不够的,需要深入研究其原理和源码。 本场 Chat 总结了最近的 RocketMQ 面试题并整理了合理的解答,希望可以帮助到大家: 1. 什么是解耦? 2. 什么是异步? 3. 什么是削峰填谷? 4. RocketMQ 执行流程 5. 怎么理解 Producer 的? 6. 怎么理解 Consumer 的? 7. 消费者消费模式有哪几种? 8. 消费者获取消息有几种模式? 9. 定时消息是什么?怎样实现的? 10. RocketMQ 如何保证高可用的? 11. 如何保证消息不被重复消费?或者说如何保证消息消费时的幂等性? 12. 如何保证消息的可靠性传输?要是消息丢失了怎么办? 13. 如何保证消息的顺序性? 14. 如何解决消息队列的延时以及过期失效问题? 15. 消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决? 16. 如何解决高性能读写数据的问题? 17. 单机 RocketMQ 的 QPS 上限是多少?
102 订阅

2020 年 5 月 Netty 面试题集锦(二)

Netty 是 Java 开发的一款网络通信框架,在 NIO 的基础上开发并解决了 NIO 的所有 BUG,支持 TCP、WebSockt、HTTP 等网络通信协议,在一些分布式治理和中间件上都有应用,比如 Dubble、RocketMQ、Zookeeper、WebFlux等等,所以想要深入研究分布式治理和中间件的底层通信原理,Netty 是必须要精通的。 本场 Chat 列举出来近期面试官经常问的面试题,并给出了合理的解答快来查缺补漏吧: 1. Netty 高性能体现在哪些方面? 2. Netty 的线程模型是怎么样的? 3. Netty 的零拷贝体现在哪里,与操作系统上的有什么区别? 4. Netty 的内存池是怎么实现的? 5. Netty 的对象池是怎么实现的? 6. 在实际项目中,你们是怎么使用 Netty 的? 7. 使用过 Netty 遇到过什么问题? 8. TCP 的粘包/拆包原因及其解决方法是什么? 9. Netty 的粘包/拆包是怎么处理的,有哪些实现? 10. 如何使用包定长 FixedLengthFrameDecoder 解决粘包与半包问题?原理是什么? 11. 如何使用包分隔符 DelimiterBasedFrameDecoder 解决粘包与半包问题?原理是什么? 12. Dubbo 在使用 Netty 作为网络通讯时候是如何避免粘包与半包问题? 13. Netty框架本身存在粘包半包问题? 14. 什么时候需要考虑粘包与半包问题? 15. 讲讲如何实现 WebSocket 长连接? 16. 讲讲 WebSocket 帧结构的理解? 17. 浏览器、服务器对 WebSocket 的支持情况 18. 如何使用 WebSocket 接收和发送广播信息? 19. 如何使用 WebSocket 接收和发送二进制信息? 20. 服务端如何进行初始化? 21. 何时接受客户端请求? 22. 何时注册接受 Socket 并注册到对应的 EventLoop 管理的 Selector ? 23. 客户端如何进行初始化? 24. 何时创建的 DefaultChannelPipeline ?
84 订阅

2020 年 5 月 Netty 面试题集锦(一)

Netty 是 Java 开发的一款网络通信框架,在 NIO 的基础上开发并解决了 NIO 的所有 BUG,支持 TCP、WebSockt、HTTP 等网络通信协议,在一些分布式治理和中间件上都有应用,比如 Dubble、RocketMQ、Zookeeper、WebFlux等等,所以想要深入研究分布式治理和中间件的底层通信原理,Netty 是必须要精通的。 本场 Chat 列举出来近期面试官经常问的面试题,并给出了合理的解答快来查缺补漏吧: 1. TCP 可靠性表现? 2. TCP 的粘包/拆包原因 3. TCP 粘包、拆包解决办法 4. BIO、NIO、AIO 分别是什么?有什么区别? 5. Netty 跟 Java NIO 有什么不同?为什么不直接使用 JDK NIO 类库? 6. Netty 组件有哪些,分别有什么关联? 7. Reactor 的三种线程模型 8. Select、Poll、Epoll 的机制及其区别 9. 讲讲 Netty 的特点? 10. NIO 的组成是什么? 11. 如何使用 Java NIO 搭建简单的客户端与服务端实现网络通讯? 12. 如何使用 Netty 搭建简单的客户端与服务端实现网络通讯? 13. 讲讲Netty 底层操作与 Java NIO 操作对应关系? 14. Channel 与 Socket 是什么关系,Channel 与 EventLoop 是什么关系,Channel 与 ChannelPipeline 是什么关系? 15. EventLoop 与 EventLoopGroup 是什么关系? 16. 说说 Netty 中几个重要的对象是什么,它们之间的关系是什么? 17. Netty 的线程模型是什么? 18. 同步与异步、阻塞与非阻塞的区别? 19. 说说网络 IO 模型? 20. 说说 Netty 的执行流程?
101 订阅

2020 年 Java 面试题集锦(Redis 篇)

现在正值今年的金三银四了,又是跳槽的好季节,准备跳槽的同学都摩拳擦掌准备大面好几场,本场 Chat 为大家准备了精选的 Redis 面试题,快来查漏补缺吧。 1. Redis 为什么是单线程的?为什么单线程却可以处理千万并发请求? 2. 什么是缓存穿透?怎么解决? 3. 什么是缓存雪崩?怎么解决? 4. 什么是缓存击穿?怎么解决? 5. 怎么保证 Redis 缓存和数据库数据的一致性? 6. Redis 的 key 过期策略怎么设计? 7. Redis 持久化有几种方式? 8. Redis 怎么实现分布式锁? 9. Redis 分布式锁有什么缺陷? 10. Redis 如何做内存优化? 11. Redis 淘汰策略有哪些? 12. Redis 常见的性能问题有哪些?该如何解决? 13. Redis 通讯协议是什么?有什么特点? 14. Redis 各个数据类型最大存储量分别是多少? 15. 什么是 Redis 事务?原理是什么? 16. Redis 事务的注意点有哪些? 17. Redis 为什么不支持回滚? 18. 请介绍一下 Redis 的 Pipeline(管道),以及使用场景 19. 请说明一下 Redis 的批量命令与 Pipeline 有什么不同? 20. Redis 的主从复制模式有什么优缺点?
Java
84 订阅

千万别让工资收入成为你唯一的收入来源

大部分行业都有自己的生命周期,过了生命周期我们将不得不考虑下岗失业的问题,像 IT 行业这种高薪的职业生命周期也只有 10 年左右,如果程序员在 10 年之内无法成为架构师或者领导者的话,后半生的职业生涯将面临严峻的失业问题。到了 35 岁上有老下有小,有房贷有车贷有孩子上学父母养老等等问题,不能像年轻人一样豁出去加班,性价比大打折扣,公司的老板也更青睐刚刚毕业的大学生,而一旦在 35 岁的时候失业了没有了工资收入,唯一的收入来源断了车贷房贷怎么办,家人怎么养活? 本场 Chat 将带大家探讨下除了工资收入,怎么拓展自己的收入种类: 1. 工资收入 VS 其他收入 VS 被动收入 2. 领导常用的阴招 3. 程序员在什么情况下需要跳槽、怎么跳槽 4. 怎么跟领导或老板谈加薪 5. 拓展其
免费生活
1125 订阅

2020 年 Java 面试题集锦(网络篇)

马上到今年的金三银四了,又是跳槽的好季节,准备跳槽的同学都摩拳擦掌准备大面好几场,本场 Chat 为大家准备了精选的网络篇的面试题,有很多的候选人对网络方面的技术例如:TCP、UDP、Socket、HTTP 等等的基础知识和原理不熟悉,虽然平时网络技术在实际项目中应用不多,但是网络是面试时候的重点,网络知识了解的多一点在与前端进行接口联调的时候也会有很大的帮助,本场 Chat 精选了一些网络面试题,一起来学习吧。 1. HTTP 响应码有哪些?分别代表什么含义? 2. Forward 和 Redirect 的区别? 3. 如何实现跨域? 4. 说一下 JSONP 实现原理? 5. get 和 post 请求有哪些区别? 6. 简述 TCP 和 UDP 的区别? 7. TCP 为什么要三次握手,两次不行吗?为什么? 8. 说一下 TCP 粘包是怎么产生的?怎么解决粘包问题的? 9. TCP 如何保证可靠性 10. 拥塞控制与流量控制的区别? 11. OSI 的七层模型都有哪些? 12. 网络浏览器访问一个网址的整个过程? 13. 解释滑动窗口算法 14. 域名解析详细过程 15. IP 地址分为几类,每类都代表什么,私网是哪些? 16. 计算机网络中的同步和异步 17. 发现百度上不去,怎么办? 18. Cookie 和 Session 的区别? 19. HTTP 1.0 和 1.1 的区别? 20. HTTP 和 HTTPS 的主要区别?
Java
147 订阅

2020 年 Java 面试题集锦(Java 基础篇)

马上到今年的金三银四了,又是跳槽的好季节,准备跳槽的同学都摩拳擦掌准备大面好几场,本场 Chat 为大家准备了精选的 Java 基础面试题,快来查漏补缺吧。 1. finalize() 方法的底层实现原理 2. 强引用、软引用、弱引用、虚引用的使用场景 3. Java 反射的原理 4. Arrays.sort 实现原理和 Collection 实现原理 5. cloneable 接口实现原理 6. 描述异常分类以及处理机制 7. 数组在内存中如何分配? 8. Final 在 Java 中有什么作用? 9. Java 中的 Math.round(-1.5) 等于多少? 10. String 属于基础的数据类型吗? 11. String str="i" 与 String str=new String("i") 一样吗? 12. String 类的常用方法都有那些? 13. 抽象类必须要有抽象方法吗? 14. 普通类和抽象类有哪些区别? 15. 抽象类能使用 Final 修饰吗? 16. 接口和抽象类有什么区别? 17. BIO、NIO、AIO 有什么区别? 18. 集合中为什么要使用迭代器? 19. 为什么要使用克隆?如何实现对象克隆? 20. 深拷贝和浅拷贝区别是什么?
Java
323 订阅

Spring 事务的最佳实践总结

Spring 事务是我们在项目开发中经常使用的技术之一,事务太短那么会频繁创建数据库连接和释放连接导致数据库开销增大,事务太长又会导致数据库表死锁的风险,学习本 Chat 大家将会学习到 Spring 事务的各种使用技巧: - 事务的四个属性 - 事务的隔离级别 - Spring 事务的传播行为 - Spring 事务的实现原理 - Spring 事务是如何保证线程安全的? - Spring 事务模板和事务同步器 - Spring 事务和 UnitOfWork - @Transactional 注解的使用技巧及失效场景
Spring
175 订阅

被面试官问烂了的 Spring MVC 原理你了解多少?

随着 Spring Boot 逐步全面覆盖到我们的项目之中,我们已经基本忘却当年经典的 Servlet + Spring MVC 的组合,那让人熟悉的 web.xml 配置。而本文,我们想先抛开 Spring Boot 到一旁,回到从前,一起来看看 Servlet 是怎么和 Spring MVC 集成,怎么来初始化 Spring 容器的。 1. 上下文在 Web 容器中的启动 2. DispatcherServlet 的启动和初始化 3. MVC 是怎么处理 HTTP 分发请求的 4. MVC 视图的呈现
严选Spring
262 订阅

被面试官问烂了的 Spring Aop 原理你了解多少?

AOP 是面向切片编程的简称,是 Spring 的重要组成部分,旨在从复杂的业务代码中把特定领域的问题的代码分离出来单独维护,AOP 的使用场景有权限验证、事务管理、日志记录、异常捕获等等。本场 Chat 将从源码的角度分析 AOP 的底层原理,经过学习可以对 AOP 的底层实现的了解更加透彻: 1. Advice 、 Pointcut 、 Advisor 的定义 2. 实现 AOP 的第一步:ProxyFactoryBean 生成 AopProxy 代理对象 3. 实现 AOP 的第二步:拦截器的实现 4. 实现 AOP 的第三步:配置通知器 5. 实现 AOP 的第四步:Advice 通知的实现 6. JDK 动态代理和 CGLIB 动态代理的底层实现原理 7. AOP 的使用场景分析 8. 静态织入(编译时) 9. 动态织入 Hook 方式(运行时) 10. 通过 javaagent 参数设置一个应用包在不通环境下是否开启 AOP 功能
Spring
130 订阅

被面试问烂了的 Spring IOC 原理你理解多少?

Spring 是 Java 程序员最常用的框架,它旨在简化开发提升开发效率,可以无缝集成其他框架、中间件等,也是面试官考察候选人最经常问到的技术难点之一,不同开发经验的程序员对 Spring 的理解也是不一样的,经过本场 chat 的学习,大家对 Spring IOC 的高级特性和底层原理的理解将会更加透彻: 1. ApplicationContext 的刷新事件 2. BeanDefinition 的 Resource 定位 3. BeanDefinition 的载入和解析 4. BeanDefinition 在IOC 容器中的注册 5. 从单例缓存中获取 bean 6. 父容器与依赖处理 7. singleton 和 prototype 的 bean 的创建过程 8. bean 的预实例化和实例化 9. bean 的实例化策略:InstantiationStrategy 10. bean 的属性填充 11. 解决 bean 的循环依赖 12. bean 的生命周期 13. bean 对 IOC 容器的感知 14. 深入分析 Aware 接口 15. 深入分析 BeanPostProcessor 接口 16. 深入分析 InitializingBean 接口和 init-method
SpringIoC
180 订阅

Mockito+PowerMock 单测实践总结

单元测试是 Java 开发过程中必不可少的一种技术手段,行覆盖很高的单测可以防止一些低级 bug 提高代码的质量,在维护老的复杂项目的时候,修改一行代码可能会牵扯到很多的模块,一些潜在的低级 bug 很可能会被忽略然后被部署到日常环境,浪费测试同事的时间也浪费开发的时间,但是有了高覆盖率的单测就不一样了,我们修改一行代码单测可以自动检测出哪些模块受到了影响从而为我们节省了高贵的时间。 在本场 Chat 中,会讲到如下内容: 1. 怎么配置单测的覆盖率 2. Mockito API 的基本使用技巧 3. 怎么解决出现 org.mockito.exceptions.misusing.UnnecessaryStubbingException 的异常 4. 使用 PowerMock 解决 Mockito 无法对类的 Private、Final 和 Static 方法进行 Mock 的问题
测试
107 订阅
微信扫描登录