54 归档分页
370 留言互动
4 核心专题

最近更新

Java 2023-03-01

高级算法

文章介绍了几种常见的面试算法及实现要点。首先阐述了LRU(最近最少使用)缓存的原理、get/put 接口及其命中率、复杂度等特性。随后简述逆波兰(后缀)表达式无需括号的优势。接着给出基于 MD5 的 URL 短链压缩思路。随后详细说明 SnowFlake 分布式全局唯一自增 ID 的 64 位结构、优缺点。最后提供了 LFU(最不经常使用)缓存的 O(1) 时间复杂度实现代码,包括节点和哈希表的设计。

面经 阅读全文
Java 2023-03-01

设计模式

本文围绕面向对象的设计原则与常用设计模式展开。概述了六大原则:单一职责、里氏替换、依赖倒置、接口隔离、迪米特(最少知识)和开闭原则,阐明其含义及对高内聚、低耦合、可复用、可维护和可扩展性的促进作用。随后给出单例模式的实现示例,包括饿汉式、懒汉式及其线程安全写法。最后介绍工厂模式的概念及实现,分别展示了简单工厂、工厂方法的代码结构,说明了工厂模式在把对象创建职责抽象化、解耦客户端与具体实现方面的价值。

面经 阅读全文
Java 2023-03-01

场景题

文章分别介绍了微信红包、秒杀系统、扫码登录、单点登录和本地缓存的实现要点。红包采用实时内存计算、随机算法、Cache计数防超发;秒杀需防超卖、限流、Redis预减库存、URL动态化、异步下单等;扫码登录通过二维码ID关联Token,分待扫描、已扫待确认、已确认三阶段完成;SSO实现全局会话与局部会话的令牌授权及统一注销;本地缓存关注数据结构、容量上限、LRU/FIFO等淘汰策略、过期时间和线程安全。

面经 阅读全文
Java 2023-03-01

UML

UML提供多种图形化符号描述系统的静态和动态结构,包括用例图、类图、时序图、协作图、状态图、活动图、构件图、部署图等。其中,用例图用于捕获需求并展示功能模块及其关系,类图描述类及类间关联,时序图展示对象交互及消息顺序,这三图是最关键的。

面经 阅读全文
Java 2023-02-14

es 在数据量很大的情况下(数十亿级别)如何提高查询效率?

es 在大规模数据(十亿级)下的查询性能主要依赖 OS 缓存;因此应让索引文件尽量能放入内存。可通过减少写入字段、将非检索数据迁至 MySQL/HBase、对热点数据预热、冷热分离(热、冷数据分别建索引并分配节点)来降低磁盘访问。文档模型要在写入时完成关联,避免在 ES 中使用 join、nested、parent‑child 等高开销操作。分页应避免深度分页,改用 scroll 或 search_after 逐页获取快照。上述措施综合使用,可显著提升 ES 在海量数据下的查询效率。

Elasticsearch 面试 阅读全文
Java 2023-02-13

如何对Integer和Double类型判断相等?

Integer 与 Double 不能直接使用 `==`、字符串比较或 `compareTo` 进行相等判断,因为它们类型不同且 `compareTo` 只能在同类之间使用。两者都继承自 `Number`,该类提供 `intValue、doubleValue` 等转换方法。可先将 Integer 与 Double 转换为相同的基本类型(如 `double`),再使用 `==` 比较数值是否相等。示例代码展示了 `i.doubleValue() == d.doubleValue()` 返回 `true`,实现了正确的相等判断。

面试 阅读全文