-
应手写ThreadPoolExecutor替代Executors工厂方法,因其无界队列易致OOM、无限建线程引发内存与CPU飙升;需显式配置有界队列、合理线程数及拒绝策略,并规范异常处理与监控联动。
-
应用模块描述文件规范核心在于用机器可读契约明确“谁提供什么”和“谁依赖什么”,通过module.json等声明exposes、requires及runtimeConstraints,CI/CD自动校验依赖、冻结共有变量对象,并由契约委员会协同治理。
-
方法重载指同一类中多个同名方法参数列表不同,编译期根据参数数量、类型或顺序精确匹配,仅参数列表决定重载,与返回值、修饰符、异常声明无关。
-
答案:Java项目中通过明确服务、仓库、实体与值对象、应用服务的角色边界,实现低耦合高内聚;服务封装业务逻辑并协调组件,仓库抽象数据访问,实体与值对象承载领域核心,应用服务编排用例并处理横切关注点,职责分明提升可维护性与测试性。
-
数组实现性能计数的核心是用下标作分类标识、元素值作累计次数,所有操作O(1),适合固定范围频次统计;结合环形数组与时间窗口可实现滚动吞吐量计算,多线程需用AtomicIntegerArray。
-
循环队列用数组实现时,front指向队首元素、rear指向下一个入队位置,均通过取模实现回环;判空为front==rear,判满为(rear+1)%(k+1)==front,元素个数=(rear−front+capacity)%capacity。
-
VectorAPI在JDK21中虽为正式特性,但需满足无分支、数组长度可静态估算、内存对齐、连续数组访问等结构约束,否则JIT将静默退化为标量循环;常见失效原因包括混用if/try-catch、偏移未对齐、跨对象字段访问等。
-
梳理 Spring Boot 接口参数校验完整工作流:定义 DTO 边界、添加校验注解、触发 @Valid、统一错误响应,并给出常见误区和速查表。
-
先编译Pattern再用Matcher匹配,可高效处理字符串。例如匹配邮箱:使用Pattern.compile()定义规则,matcher.find()遍历结果,输出所有邮箱地址。处理多行文本时添加Pattern.DOTALL标志,使.匹配换行符,结合非贪婪模式.*?提取日志中的错误信息和用户。复杂结构推荐分组捕获并注释group编号含义,提升可维护性。启用UNICODE_CHARACTER_CLASS支持中文字符识别。性能优化方面,避免嵌套量词防止回溯灾难,优先使用非贪婪模式,固定前缀可用indexOf
-
能,外部类可用default权限,仅限同包访问,跨包不可见、不可实例化,且文件中最多一个public类,文件名须与其一致。
-
String.intern()可使重复JSONkey共享同一对象,降低内存占用与GC压力;需限定在有限高频key集合中使用,避免敏感信息或大字符串误用,并推荐通过预定义KNOWN_KEYS集合控制intern范围。
-
Optional.filter()用于条件性保留单个值:值存在且满足Predicate时返回原Optional,否则返回empty;它不遍历集合,不改变泛型类型,且在empty时不执行Predicate。
-
ReentrantLock提供比synchronized更灵活的线程同步控制,支持手动加锁释放、尝试获取锁、定时等待、可中断及公平锁机制,并可通过Condition实现多条件等待通知,适用于复杂并发场景。
-
ArrayList基于动态数组实现,适合随机访问和读取多的场景,get操作为O(1);LinkedList基于双向链表实现,适合插入删除频繁的场景,add和remove在中间位置为O(n),但无需扩容。
-
add()遍历时必报ConcurrentModificationException,因迭代器的expectedModCount与集合modCount不一致触发fail-fast机制;安全做法包括暂存后批量添加、倒序遍历、ListIterator.add()或改用CopyOnWriteArrayList等。