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

ilomilo

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

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 的主从复制模式有什么优缺点?
69 订阅

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

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

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
137 订阅

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
298 订阅

Spring 事务的最佳实践总结

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

被面试官问烂了的 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
232 订阅

被面试官问烂了的 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
118 订阅

被面试问烂了的 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
170 订阅

Mockito+PowerMock 单测实践总结

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