面试专栏
文章平均质量分 88
面试专栏致力于为读者提供有关面试的全面指导和实用建议。从面试前的准备到面试技巧的提升,专栏将涵盖各个方面的内容。我们将分享面试的常见问题、答题技巧、沟通能力的培养以及自我表达的提升等内容。通过专栏的阅读,读者可以了解面试的流程和注意事项,学习如何回答问题并展现自己的优势。无论是求职新人还是经验丰富的
我乐了.
这个作者很懒,什么都没留下…
展开
-
必会框架 - RPC与ORM(下)
SQL 语句是通过 SqlSession 中的 Executor 来执行,Executor 根据 SqlSession 传递的参数执行 query() 方法,然后创建一个 StatementHandler 对象,将必要的参数传递给 StatementHandler,由 StatementHandler 来完成对数据库的查询。图中绿色的模块是 RPC 中最主要的三个角色。MyBatis 的一级缓存的存储作用域是 Session,会对同一个 Session 中执行语句的结果进行缓存,来提高再次执行时的效率。原创 2024-01-16 17:16:51 · 813 阅读 · 0 评论 -
必会框架 - Spring全家桶(上)
但是,我们思考这样一个问题,一个系统中会有多个不同的服务,例如用户服务、商品信息服务等等,每个服务的Controller层都需要验证参数,都需要处理异常,如果按照图中红色的部分,对不同服务的纵向处理流程进行横切,在每个切面上完成通用的功能,例如身份认证、验证参数、处理异常等等、这样就不用在每个服务中都写相同的逻辑了,这就是 AOP 思想解决的问题。正向流程导致了对象于对象之间的高耦合,IoC 可以解决对象耦合的问题,有利于功能的复用,能够使程序的结构变得非常灵活。Struts 实现的就是其中控制层的角色。原创 2024-01-15 10:36:15 · 808 阅读 · 0 评论 -
常用工具集
举个例子,当面试官询问你遇到过哪些线上问题时,你可以说遇到过单机请求耗时高的问题,通过 JMC 的飞行记录器采样分析,发现写 log 日志时线程竞争非常激烈,很多线程在等待写锁时耗时非常大,进一步通过 iostat 排查发现 util 利用率百分比很高,最后定位是磁盘出现问题。为了更好得管理代码,需要制定一个工作流程,这就是我们说的工作流,也可以叫分支管理策略。GDB 是一个强大的命令行调试工具,可以让程序在受控的环境中运行,让被调试的程序在指定的断点处停住,也可以动态的改变程序的执行环境。原创 2024-01-15 10:35:15 · 762 阅读 · 0 评论 -
数据结构与算法
常用的查找算法,包括二分查找、二叉排序树、B 树、Hash、BloomFilter 等,需要了解它们的适用场景,例如二分查找适合小数量集内存查找,B 树适合文件索引,Hash 常数级的时间复杂度更适合对查找效率要求较高的场合,BloomFilter 适合对大数据集进行数据存在性过滤。另外一个,叶子节点相当于数据存储层,保存关键字对应的数据,而非叶子节点只保存关键字和指向叶节点的指针,不保存关键字对应的数据,所以同样数量关键字的非叶节点,B+ 树比 B 树要小很多。能够发现解答中的一些问题,给出改进的思路。原创 2024-01-15 10:32:26 · 834 阅读 · 0 评论 -
并发与多线程
最后一行是比较常用的两个集合类,ConcurrentHashMap 我们前面的课程已经详细介绍过了,这里可以了解 CopyOnWriteArrayList,COW 通过写入数据时进行 copy 修改,然后更新引用的方式,来消除并行读写中的锁使用,比较适合读多写少,数据量比较小,但是并发非常高的场景。针对 synchronized 获取锁的方式,JVM 使用了锁升级的优化方式,就是先使用偏向锁优先同一线程然后再次获取锁,如果失败,就升级为 CAS 轻量级锁,如果失败就会短暂自旋,防止线程被系统挂起。原创 2024-01-15 10:28:52 · 766 阅读 · 0 评论 -
深入浅出JVM
在多线程进行数据交互时,例如线程 A 给一个共享变量赋值后,由线程 B 来读取这个值,A 修改完变量是修改在自己的工作区内存中,B 是不可见的,只有从 A 的工作区写回主内存,B 再从主内存读取自己的工作区才能进行进一步的操作。Java 的类加载使用双亲委派模式,即一个类加载器在加载类时,先把这个请求委托给自己的父类加载器去执行,如果父类加载器还存在父类加载器,就继续向上委托,直到顶层的启动类加载器,如上图中蓝色向上的箭头。总结如下,G1 是逻辑分代不是物理划分,需要知道回收的过程和停顿的阶段。原创 2024-01-15 10:27:00 · 876 阅读 · 0 评论 -
Java语言特性与设计模式
除了实现的方式,我们还需要知道填充因子的作用与 Map 扩容时的 rehash 机制,需要知道 HashMap 的容量都是 2 的幂次方,是因为可以通过按位与操作来计算余数,比求模要快。目前大部分公司的生产环境使用的还是 1.8 版本,一少部分升级到 1.9 或 1.10 版本,Java 的 1.8 版本是一个长期支持的版本,最新发布的 1.11 版本也是一个长期支持的版本,1.11 版本中已经包含了 1.9、1.10 版本的功能,所以 1.8 和 1.11 版本是我们要重点关注的版本。原创 2024-01-15 10:25:30 · 855 阅读 · 0 评论 -
操作系统与计算机网络
TCP 链接的关闭,通信双方都可以先发起,我们暂且把先发起的一方看作 Client,从图中看出,通信中 Client 和 Server 两端的链接都是 ESTABLISHED 状态,然后 Client 先主动发起了关闭链接请求,Client 向 Server 发送了一个 FIN 包,表示 Client 端已经没有数据要发送了,然后 Client 进入了 FIN_WAIT_1 状态。TIME_WAIT 状态下需要等待 2 倍的最大报文段生存时间,来保证链接的可靠关闭,之后才会进入 CLOSED 关闭状态。原创 2024-01-15 10:24:21 · 833 阅读 · 0 评论