-
投票系统通过枚举定义候选人,Map记录票数,Set防止重复投票,支持投票、计票和结果查询功能。
-
符号位提取需用算术右移(>>)将有符号整数最高位移至最低位,再与1按位与得0/1结果;可据此高效判断正负、计算绝对值、实现符号扩展等,但须注意语言差异、INT_MIN溢出及无符号类型不适用等问题。
-
SpringBoot本身不提供原生的命令行远程调用机制,但可通过Actuator+HTTP端点、JMX、SpringIntegration或自定义WebSocket/REST接口等方式安全实现运行时方法触发。
-
因为Java泛型存在类型擦除,ArrayList.class非法——JVM只认原始类型ArrayList,编译器无法生成带泛型参数的类字面量;运行时getClass()返回相同Class对象,泛型信息已丢失。
-
值对象是不可变、无ID、基于属性相等性、自我验证的领域概念。需满足:final字段、重写equals/hashCode、无id、构造时校验;典型如Money;区别于Entity(有ID)、DTO(传输导向)、JavaBean(可变)。
-
getClass()返回代理对象实际运行时类型(如$Proxy1),无法直接获取目标类;需通过Proxy.getInvocationHandler()获取处理器,再反射提取其内部目标对象getClass()才能得到原始业务类。
-
Java封装的核心是通过接口隔离实现细节,而非仅设private字段;需在行为层校验状态、用模块系统强制隐藏实现、返回不可变对象或防御性拷贝,并持续权衡暴露边界。
-
必须用HashSet而非TreeSet,因后者自动排序破坏随机性;红球应为random.nextInt(33)+1保证1–33,蓝球同理;循环需以set.size()==6为终止条件确保数量稳定。
-
Metaspace泄露本质是类加载器未被回收导致元数据堆积;需通过JVM参数监控、jcmd/MAT定位异常类加载器,并修复ThreadLocal、静态缓存、监听器注册等常见泄露点。
-
Collections.swap()仅用于安全交换List中两元素,不实现排序逻辑;冒泡排序用它交换相邻逆序元素,选择排序用它将极值换至目标位。
-
@SneakyThrows不消除受检异常,而是通过字节码改写将其伪装为运行时异常抛出;实际仍抛原始异常对象,故可被对应catch捕获;推荐显式指定异常类型,避免误吞;适用于测试、Lambda等场景,禁用于Service层等破坏契约处。
-
finalize()不是资源清理保险丝而是系统风险点,必须遵循主动、可控、可测、不可复活原则:需用AutoCloseable/try-with-resources或Cleaner替代;清理逻辑须与对象状态解耦;避免性能损耗;其已被Java9弃用、JDK18默认禁用。
-
匿名内部类不支持显式构造方法,但可通过实例初始化块实现动态初始化,如配置监听器、捕获外部变量、处理异常及控制执行顺序。
-
String类是Java中处理文本的核心工具,具有不可变性。1.提供equals、equalsIgnoreCase进行字符串比较,startsWith、endsWith判断前后缀,contains检查子串,isEmpty和isBlank判断空或空白内容。2.charAt获取指定位置字符,indexOf和lastIndexOf查找子串位置,substring实现截取操作。3.replace和replaceAll支持字符或正则替换,trim、strip系列方法去除空白,format用于格式化输出。4.spli
-
Properties类是Java中专为字符串键值对持久化设计的轻量级配置工具,适合管理少量、变动不频繁的配置项;它继承自Hashtable,强制key和value为String类型,通过load()/store()与IO流深度绑定,支持自动编码处理、注释和Unicode转义,推荐使用setProperty()、getProperty()和stringPropertyNames()确保类型安全与跨平台兼容。