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

ilomilo

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

并发编程面试题精选(五)【备战金九银十】

马上到 2020 年 9 月份啦,不知不觉 2020 年的大半年时间已经悄悄溜走啦,秋招已经开始,不管是实习生还是工作多年的同学都可以考虑跳槽涨薪喽,虽然疫情期间是互联网寒冬但是对于充分准备的同学来说仍然是充满机会的,本场 Chat 为大家准备了最新的并发编码面试题助力面试: 1. 为什么要用线程池 2. 线程池的实现原理 3. 常用的几种线程池,分别讲讲它们的工作原理 4. 线程池启动线程 submit() 和 execute() 方法有什么不同? 5. 针对不同场景,到底创建多少个线程合适? 6. 高并发、任务执行时间短的业务怎样使用线程池?并发不高、任务执行时间长的业务怎样使用线程池?并发高、业务执行时间长的业务怎样使用线程池? 7. JDK 提供的 4 种线程池有什么缺陷? 8. CPU 密集的场景怎么使用线程池?IO 密集的场景怎么使用线程池? 9. 提交任务时线程池队列已满时会发生什么? 10. 线程池如何保证线程的复用? 11. Fork/Join 框架是干什么的? 12. Fork/Join 框架使用有哪些需要注意的地方? 13. FutureTask 是什么?
13 订阅

并发编程面试题精选(四)【备战金九银十】

马上到 2020 年 9 月份啦,不知不觉 2020 年的大半年时间已经悄悄溜走啦,秋招已经开始,不管是实习生还是工作多年的同学都可以考虑跳槽涨薪喽,虽然疫情期间是互联网寒冬但是对于充分准备的同学来说仍然是充满机会的。 本场 Chat 为大家准备了最新的并发编码面试题助力面试: 1. 什么锁守护线程,有什么用? 2. 一个线程运行时发生异常会怎样? 3. 线程 yield() 方法有什么用? 4. 线程数过多会造成什么异常? 5. 怎么检测一个线程是否拥有锁? 6. 线程同步需要注意什么? 7. 线程 wait() 方法使用有什么前提? 8. 线程之间如何传递数据? 9. 怎么唤醒一个阻塞的线程? 10. 不可变对象对多线程有什么帮助? 11. 多线程上下文切换是什么意思? 12. 线程切换代价为什么小? 13. 分别解释进程、线程、管程、纤程、协程、超线程 14. Java 中用到了什么线程调度算法
12 订阅

并发编程面试题精选(三)【备战金九银十】

马上到 2020 年 9 月份啦,不知不觉 2020 年的大半年时间已经悄悄溜走啦,秋招已经开始,不管是实习生还是工作多年的同学都可以考虑跳槽涨薪喽,虽然疫情期间是互联网寒冬但是对于充分准备的同学来说仍然是充满机会的。 本场 Chat 为大家准备了最新的并发编码面试题助力面试: 1. Thread.sleep(0) 的作用是什么? 2. Runnable 和 Thread 哪个更好用? 3. 为什么你应该在循环中检查等待条件 4. Java 中堆和栈有什么不同? 5. 你如何在 Java 中获取线程堆栈? 6. JDK 中排查多线程问题用什么命令? 7. 什么是阻塞式方法 8. 如何创建线程安全的单利模式 9. 说说线程安全和线程不安全的集合 10. 解释线程安全的意思 11. 线程什么时候挂起? 12. 进程间通信 13. 为什么要做线程隔离,线程隔离的实现技术讲一下? 14. ThreadLocal 是什么?有什么应用场景? 15. ThreadLocal 有哪些问题?怎么避免?
10 订阅

并发编程面试题精选(二)【备战金九银十】

马上到 2020 年 9 月份啦,不知不觉 2020 年的大半年时间已经悄悄溜走啦,秋招已经开始,不管是实习生还是工作多年的同学都可以考虑跳槽涨薪喽,虽然疫情期间是互联网寒冬但是对于充分准备的同学来说仍然是充满机会的。 本场 Chat 为大家准备了最新的并发编码面试题助力面试: 1. Synchronized 有哪几种用法? 2. Synchronized 加在方法上的底层实现原理?Synchronized 加在静态方法上的底层实现原理?Synchronized 加在代码块上的底层实现原理?三者有什么区别? 3. 讲一下 Synchronized 实现原理和锁升级的过程 4. 多个线程竞争偏向锁的时候撤销偏向锁会暂停获取偏向锁的线程,暂停的原理是什么? 5. Synchronized 和 ReentrantLock 有什么区别? 6. Synchronized 的读写屏障和 Volatile 的屏障的区别? 7. 使用 JOL 观察锁升级的过程 8. Hashtable 的 size() 方法为什么要做同步? 9. 同步方法和同步块哪种更好? 10. notify() 和 notifyall() 有什么区别? 11. 为什么 wait()、notify() 和 notifyall() 这些方法不在 Thread 类里? 12. 为什么 wait() 和 notify() 方法需要在同步块中调用? 13. 请使用 Synchronized 实现生产者与消费者模式
43 订阅

并发编程面试题精选(一)【备战金九银十】

马上到 2020 年 9 月份啦,不知不觉 2020 年的大半年时间已经悄悄溜走啦,秋招已经开始,不管是实习生还是工作多年的同学都可以考虑跳槽涨薪喽,虽然疫情期间是互联网寒冬但是对于充分准备的同学来说仍然是充满机会的,本场 Chat 为大家准备了最新的 200+ 并发编码面试题助力面试: 1. 多线程有什么用? 2. 线程和进程有什么区别? 3. Java 实现线程有哪几种方式? 4. 启动线程的 start() 和 run() 方法有什么区别? 5. 怎么终止一个线程,如何优雅的终止一个线程? 6. 一个线程的生命周期中有哪几种状态,它们之间如何流转的? 7. 线程中的 wait() 和 sleep() 方法有什么区别? 8. 多线程同步有哪几种方式? 9. 什么是死锁,如何避免死锁? 10. 多线程之间如何进行通信? 11. 线程怎么拿到返回结果? 12. 新建 t1、t2、t3 三个线程,如何保证它们顺序执行 13. 怎么控制同一时间只有三个线程运行? 14. 什么是活锁、饥饿、死锁、无锁
91 订阅

MVCC 多版本并发控制【MySQL 篇】

假设事务 A 对表中的指定行数据进行更新,事务 B 对该表中的这几行数据进行读,这个时候为了保证并发控制事务 A 的更新操作会阻塞事务 B 的读操作,为了达到并发控制的目的,MySQL 使用了两种方案去实现:一种是基于锁的并发控制事务 A 更新的时候对数据加锁这样就可以保证事务 B 不会读到不一致的数据,另一种是基于 MVCC 的多版本并发控制事务 A 未提交之前事务 B 只能读取到数据库某个时刻的数据快照知道事务 A 提交后事务 B 才可以读取到修改后的数据。那么 MVCC 是怎么实现并发控制的呢?其底层原理是什么? 本场 chat 就来分析一下其内在的原理: 1. Undo 日志 2. Read View 读视图 3. 当前读、快照读和 MVCC 的关系 4. MVCC 解决了 Repeatable-Read 隔离级别的幻读问题了吗?如果更新数据后幻读问题还会再现吗?
MySQL
74 订阅

交易型数据库库表的三范式和反范式设计【MySQL 篇】

交易型数据库系统的设计应符合第三范式,如若不然将带来一项致命性的危害那就是数据冗余,而数据冗余又将分化出两项致命性的伤害:一个是由于数据用于带来大量的存储磁盘成本消耗,另一个就是基于数据冗余的数据库表将导致上层应用开发无比的复杂。 本场 Chat 结合交易型数据库的设计讲讲三范式和反范式怎么使用比较合理: 1. 三范式和反范式是什么? 2. 交易型数据库的设计使用反范式会造成哪些问题? 3. 分析型数据库的设计使用反范式会带来哪些好处? 4. 交易型数据库主体遵循三范式,特殊场景使用反范式
90 订阅

并发事务处理模式原理分析【MySQL 篇】

你知道 MySQL 的四大隔离级别,你知道脏读、幻读、不可重复读是怎么造成的,你知道不同的隔离级别分别解决了哪些问题,但是你知道不同的隔离级别怎么解决这些问题的吗?其底层原理是什么?是依靠锁还是 MVCC。 本场 Chat 为大家总结了数据库的七大并发事务处理模式设计: 1. 读未提交 2. 读已提交(基于锁) 3. 可重复读(基于锁) 4. 可串行化(基于锁) 5. 读已提交(基于 MVCC) 6. SI 7. SSI
79 订阅

SQL 查询优化器底层原理解析【MySQL 篇】

一条普通的 SQL 执行前会经历五个阶段:SQL 输入、语法分析、语义检查、SQL 优化、SQL 执行,而 SQL 优化又分为两步完成:第一步是逻辑优化、第二步是物理优化,SQL 优化的底层逻辑复杂又有趣。 通过本场 Chat 的学习可以帮助大家更加透彻的了解 SQL 底层的优化器是怎么工作的,在做慢查询优化的时候多一些分析的依据: 1. MySQL 查询优化器架构概览 2. MySQL 查询优化器架构设计思想 3. MySQL 根据执行计划查询执行过程 4. 逻辑优化 5. 物理优化 6. 生成执行计划的过程
MySQL
118 订阅

Innodb 存储引擎的那些“锁事儿”【MySQL 篇】

MySQL 的 Innodb 存储引擎为了解决并发处理能力,通过加锁保证高并发下数据的一致性防止出现脏数据,根据锁范围的不同分为了:表锁、行锁、GAAP 锁;行锁又分为了:共享锁(S 锁)和排他锁(X 锁);按照并发处理能力的不同又将行锁分为:乐观锁和悲观锁;通过本场 Chat 的学习你可以更加透彻的了解 MySQL 锁的底层细节: 1. 表锁、行锁和 GAAP 锁的底层原理分析; 2. 读锁和共享锁,写锁和排他锁的底层原理分析; 3. 行锁和索引的关系; 4. for update 排他锁解决热点问题的用法,for update 会阻塞其他读操作吗? 5. 乐观锁和悲观锁的底层原理分析; 6. 高并发下的锁竞争和锁超时原理; 7. 高并发下的死锁和锁表问题该怎么避免?
MySQL
84 订阅

SQL 执行流程的底层原理【MySQL 篇】

写了五年 SQL 语句了,你知道 SQL 的执行流程吗?你知道 MySQL 底层对其做了哪些优化吗? 本场 Chat 带大家深入分析其原理: 1. SQL 缓存机制 2. 解析器进行语法解析产生解析树的原理 3. 预处理器进行语法解析产生新的解析树的原理 4. 查询优化器是怎么生成执行计划的 5. 根据执行计划查询执行引擎的原理
MySQL
116 订阅

EXISTS 和 IN 原理解析【MySQL 篇】

写了五年 SQL 语句了,你知道 EXISTS 和 IN 的原理吗?你知道 MySQL 底层对其做了哪些优化吗? 本场 Chat 带大家深入分析其原理: 1. EXISTS 是采用小表驱动大表进行联接查询,其性能消耗总结 2. IN 是采用 hash join 进行联接查询,其性能消耗总结
MySQL
93 订阅

Group By 分组原理解析【MySQL 篇】

写了五年 SQL 语句了,你知道 Group By 分组的实现原理吗?你知道 MySQL 底层对其做了哪些优化吗? 本场 Chat 带大家深入分析其原理: 1. Group By 基本原理 2. 用松散索引扫描实现 Group By 3. 用紧凑索引扫描实现 Group By 4. 用临时表实现 Group By 5. Group By 为什么会对主键排序? 6. 怎么防止 Group By 对主键进行排序,其原理是什么?
MySQL
98 订阅

程序员误更新几十万数据,项目经理和架构师都慌啦!【MySQL 篇】

这是一个真实线上数据订正问题,而且是由我亲自造成的严重事故,事情的起因是这样的:我们的还款业务有时候会因为第三方支付的处理超时导致失败,其实第三方已经成功,所以我们的还款表需要写数据订正脚本去修复状态和还款金额明细,但是由于我的疏忽和 DBA 同学的疏忽导致 Where 条件后的 ID 字段丢失,导致还款表的几十万数据被更新成了一模一样的造成了严重的事故, 本场 Chat 记录下当时的架构师和 DBA 同学的解决方案,希望可以帮到其他研发同学: 1. MySQL 是怎么对业务 SQL 进行快照的? 2. Binlog 恢复数据的解决方案 3. Redolog、Binlog、Undolog 是什么? 4. 数据安全性复盘
MySQL
103 订阅

10 条超难的 SQL,全写出来你就是最强王者【MySQL 篇】

工作三年了,你的 SQL 水平怎么样呢?熟悉 SQL 语法但是你未必能写出高效的 SQL,当你写的低效 SQL 满足不了业务需求的时候再百度搜索?项目经理看到你写的 SQL 不够专业的时候是否还会信任你给你安排更多的任务。 不妨订阅本场 Chat 测试下你的 SQL 水平,本场 Chat 有 10 个 SQL 场景题: 1. 按照订单状态给订单列表排序问题(要求某个特定状态排在最前,某个特定状态排在最后) 2. 一个表一千个列值为 True 和 False,写 SQL 查询有 300 个列值为 True 的行 3. 行程和用户问题 4. 查询部门工资最高的员工 5. 查询部门工资前三高的员工 6. 查询成绩表中各科成绩最好的成绩名单 7. 查询所有用户首次交易的订单记录 8. 员工薪水中位数问题 9. 给定数字的频率查询中位数问题 10. 查询至少有 5 名直接下属的经理
MySQL
214 订阅

order by 排序原理分析【MySQL 篇】

写了五年 SQL 语句了,你知道 order by 排序的算法实现吗?你知道 MySQL 底层对其做了哪些优化吗? 本场 Chat 带大家深入分析其原理: 1. order by 排序的算法实现 2. sort buffer 在 order by 排序中的应用 3. 快速排序,归并排序,堆排序算法在 order by 排序中的应用 4. 文件排序和临时表对 order by 排序的影响 5. 利用索引优化 order by 排序防止进行文件排序和产生临时表
MySQL
138 订阅

最全面索引原理总结【MySQL 篇】

日常开发中项目经理扔给你一个慢查询日志让你优化,是不是经常束手无策,虽然有 Explain 帮你优化 SQL,但还是迷迷糊糊不知道打印出来的参数的底层逻辑,其实很大程度上是不了解 MySQL 的索引原理导致的,不了解索引的底层原理又怎么能写出高效率的 SQL 语句呢。 本场 Chat 帮大家总结了索引的底层原理和利用索引优化慢查询的建议: 1. 索引从数据结构角度分为:BTree 索引,Hash 索引,Fulltext 索引 2. 索引从存储角度分为:聚集索引和辅助索引 3. 索引从逻辑角度分为:主键索引、唯一索引、普通索引、单列索引、复合索引、覆盖索引 4. 建立索引的三大原则:最左匹配原则、高离散度原则、长度短小原则 5. B+Tree 和 B-Tree 的区别? 6. 为什么 Mysql 中 B+Tree 的高度只有 1-3 层?B+Tree 最多可以存多少数据? 7. Mysaim 的索引和 Innodb 索引的区别 8. 一个表最多可以建多少个索引,Varchat 类型的列的长度超过 255 就不能建索引是为什么? 9. 怎么利用覆盖索引优化 SQL 10. 利用索引排序优化 SQL 11. 关于索引查找的随机 IO 和顺序 IO 12. 什么是回表查询,覆盖索引为什么可以避免回表查询?
MySQL
148 订阅

Join 原理分析【MySQL 篇】

MySQL 是一个关系型数据库,我们日常开发中经常使用 inner join、outter join、left join 等联接查询,那么 Mysql 底层对联接查询做了哪些优化呢,日常开发中怎么优化联接查询提高查询效率呢? 本场 Chat 将会为大家揭露其底层算法的原理: 1. 简单嵌套循环联接 (SNLJ) 、效率和使用场景 2. 基于索引的嵌套循环联接 (INLJ)、效率和使用场景 3. 基于数据块的嵌套循环联接 (BNL)、效率和使用场景 4. 批量键访问 (BKA) 、效率和使用场景 5. 哈希联接、效率和使用场景 6. Join buffer 在 join 算法中的作用 7. MRR 技术在 BKA 算法中的作用
算法
104 订阅

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 上限是多少?
RocketMQ
150 订阅

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 ?
Netty
100 订阅

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 的执行流程?
Netty
118 订阅

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

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

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

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

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

Spring 事务的最佳实践总结

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

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

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

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

Mockito+PowerMock 单测实践总结

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