- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Java后端面试题及答案(实战版)
一、Java基础(10题)
问:String、StringBuffer、StringBuilder的区别?实际开发中怎么选?
答:核心区别在可变性和线程安全。String是不可变类(底层char数组final修饰),每次修改都会生成新对象,适合少量、不频繁修改的场景;StringBuffer是可变类,方法加了synchronized,线程安全但效率低,适合多线程环境下的字符串拼接;StringBuilder也是可变类,无锁设计,效率高但线程不安全,单线程场景(比如普通业务逻辑中的字符串拼接)优先用。实际开发中,90%的场景是单线程,所以优先选StringBuilder,只有明确多线程共享且需修改时才用StringBuffer。
问:Integer的自动装箱/拆箱会踩哪些坑?举个例子
答:主要坑在缓存池和空指针。Integer的缓存池默认缓存-128~127的数值,超出这个范围会new新对象,比如Integera=127;Integerb=127;是true,但a=128;b=128;是false。另外,拆箱时如果对象是null,会抛NullPointerException,比如Integerc=null;intd=c;直接报错。实际开发中,接收前端参数或数据库查询结果时(可能为null),一定要先判空再拆箱。
问:final关键字的用法?final修饰引用和基本类型有区别吗?
答:final可修饰类、方法、变量。修饰类:不能被继承(比如String);修饰方法:不能被重写,且JVM会尝试内联优化;修饰变量:基本类型变量值不能改,引用类型变量的引用地址不能改,但对象内部属性可以改。比如finalUseruser=newUser();user.setName(张三);是允许的,但user=newUser();会编译报错。
问:异常体系的结构?checked异常和unchecked异常的区别?实际开发中怎么处理异常?
答:异常体系顶层是Throwable,分为Error(严重错误,如OOM、StackOverflow,程序无法处理,只能规避)和Exception(可处理异常)。Exception又分checked异常(编译时必须处理,如IOException、SQLException,不处理编译报错)和unchecked异常(运行时异常,如NullPointerException、ArrayIndexOutOfBoundsException,编译不强制处理)。实际开发中,不建议吞掉异常(catch后不处理),也不建议滥用try-catch(比如把整个方法包起来)。正确做法:1)针对具体异常捕获,而非捕获Exception;2)业务异常建议自定义unchecked异常(继承RuntimeException),配合全局异常处理器(如Spring的@RestControllerAdvice)统一返回;3)资源相关(如流、数据库连接)用try-with-resources自动关闭。
问:重载(Overload)和重写(Override)的区别?重写要遵循哪些规则?
答:重载是同一个类中,方法名相同、参数列表(类型、个数、顺序)不同,返回值和访问修饰符可不同,是编译时多态;重写是子类继承父类后,方法名、参数列表、返回值完全相同(子类返回值可是父类返回值的子类,即协变返回),访问修饰符不能比父类更严格,是运行时多态。重写规则:1)方法签名必须一致;2)不能重写final方法;3)不能重写static方法(子类同名static方法是隐藏,不是重写);4)子类重写方法的异常不能比父类更宽泛(checked异常);5)访问修饰符权限=父类方法。
问:接口和抽象类的区别?Java8之后接口有哪些变化?
答:核心区别:1)抽象类用abstract修饰,可包含抽象方法和普通方法,接口默认所有方法是publicabstract(Java8后可加默认方法和静态方法);2)抽象类只能单继承,接口可多实现;3)抽象类可有构造方法(供子类调用),接口没有;4)抽象类的成员变量可任意修饰,接口的成员变量默认是publicstaticfinal。Java8后接口新增:1)default方法(带方法体,用default修饰,子类可重写也可不重写);2)static方法(带方法体,用static修饰,只能通过接口名调用)。实际开发中,优先用接口(解耦、支持多实现),抽象类适合抽取多个子类的共同属性和方法(比如BaseService)
您可能关注的文档
- HBase 高频面试题及实战答案.docx
- HCIE面试高频题及实战答案.docx
- HDFS面试高频题及实战答案.docx
- Helpdesk面试题及参考答案.docx
- Hive 笔试题及参考答案.docx
- Hive高频面试题及参考答案.docx
- Hive面试高频题及实战答案.docx
- HR真实场景面试题及参考答案.docx
- HSE考试题库及答案(实操型).docx
- HSE知识考核试卷及答案.docx
- 2025中国电信股份有限公司涡阳分公司外包人员招聘1人笔试题库附答案.docx
- 2025中国农业科学院农业信息研究所第二批招聘5人笔试备考题库附答案.docx
- 2025中国地质科学院招聘科研助理2人笔试题库附答案.docx
- 2025安徽中共宿州市纪委、中共宿州市委巡察办所属事业单位选调工作人员8人备考题库附答案.docx
- 2025年11月广东深圳市大鹏新区科技和工业信息化局招聘编外人员1人笔试参考题库附答案.docx
- 2025国务院国资委委属事业单位招聘5人笔试题库附答案.docx
- 2025南方电网玉溪供电局项目制用工招聘备考题库(38人)附答案.docx
- 2025中新天津生态城教育系统招聘教职人员参考题库(297人)附答案.docx
- 2025中国移动校园招聘即将启动笔试参考题库附答案.docx
- 2025北京市化工职业病防治院退役大学生士兵定向招聘笔试参考题库附答案.docx
原创力文档


文档评论(0)