-
Java应用异常必须过滤重写,禁止直接返回Exception.toString()或堆栈;应统一拦截转换为业务错误码+模糊提示,日志需记录完整堆栈并脱敏敏感信息,第三方SDK异常须显式捕获、安全包装且保留cause链。
-
答案是Java中switch语句用于多分支选择,支持byte、short、int、char、对应包装类、enum和String(Java7+),不支持long、float、double、boolean;基本语法为switch(表达式)匹配case值,break防止穿透,default处理默认情况;使用时需注意case值为常量、避免fall-through、default位置任意、表达式非null。
-
Desktop.getDesktop().browse()报java.awt.HeadlessException是因在无图形界面环境(如Linux无X11、Docker默认)下运行,需先调用isDesktopSupported()判断支持性,再检查isSupported(Desktop.Action.BROWSE),否则必然失败。
-
一眼看出强耦合:看是否直接依赖具体实现(如newUserServiceImpl)、硬编码字段/方法名、跨层调用、用字符串控制流程等;接口编程通过分离“做什么”与“谁做”降低耦合,使实现可替换且调用方无感。
-
局部内部类必须定义在方法或代码块内,不能出现在类成员位置;只能用abstract或final修饰,不可用访问控制符或static;可访问外部类所有成员及方法中final或“事实上final”的变量。
-
CAS是JVM通过Unsafe调用CPU硬件指令(如x86的CMPXCHG)实现的原子操作,依赖volatile保证可见性、硬件指令保证原子性;AtomicInteger.incrementAndGet()采用乐观自旋重试,高并发下可能大量失败;ABA问题需AtomicStampedReference解决;CAS仅保障单变量原子性,不可替代多字段/复合操作的锁机制。
-
答案:Java字符串操作需注意不可变性与性能优化。1.推荐使用字面量创建字符串以利用常量池,比较内容应调用equals()方法;2.通过toCharArray()和charAt()实现字符串与字符的转换;3.常用方法如trim()、substring()、replace()、split()、大小写转换等提升处理效率;4.频繁拼接应使用StringBuilder避免产生过多临时对象,提升性能。掌握这些技巧可显著提高代码质量与执行效率。
-
答案是使用Java+Servlet+JSP+MySQL+Tomcat技术栈,通过MVC分层实现用户认证、新闻增删改查及安全防护等基础功能的Web应用。
-
Java泛型不能用int等基本类型,因类型擦除机制要求类型参数必须是引用类型;基本类型需通过Integer等包装类配合自动装箱/拆箱实现,但存在GC压力、缓存陷阱和空指针风险;高性能场景应选用Trove或EclipseCollections等专为基本类型优化的集合库。
-
static变量属类且共享,类加载时初始化一次;static方法不能访问非静态成员;static块仅执行一次;static内部类不持外部类引用。
-
Tomcat控制台中文乱码需同步解决三方面:logging.properties文件须UTF-8无BOM保存并删中文注释;JVM启动参数加-Dfile.encoding=UTF-8且ConsoleHandler显式设encoding=UT-8;终端(如WindowsCMD)须支持UTF-8输出,或改用PowerShell/IDETerminal。
-
短链接服务核心是Base62编码自增ID生成唯一短码并实现高效302跳转;需解决编码冲突、并发安全、缓存穿透问题,推荐Nginx前置+SpringBoot兜底架构。
-
静态变量属于类本身,所有实例共享同一内存空间;声明需在类体中加static关键字,推荐private+publicstaticgetter/setter;与实例变量相比,它在类加载时初始化、存于元空间、无需实例即可访问;多线程下需注意线程安全,避免复合赋值引发数据不一致。
-
答案是通过反射可动态访问类的字段,需获取Class对象后用getDeclaredField或getField获取Field,私有字段需调用setAccessible(true),再通过get和set读写值。
-
异常栈信息包含异常类型、消息和调用链,通过分析栈顶第一行可定位错误发生位置,结合调用链向下追溯可找到根源,注意匿名类、缺失行号及多线程干扰情况。