【秋招冲刺-每日打卡】应届生JAVA岗-每日5道高频面试题【Day3】-基础篇(3)

简介: 【秋招冲刺-每日打卡】应届生JAVA岗-每日5道高频面试题【Day3】-基础篇(3)

文章大纲

一: String和StringBuilder、StringBuffer的区别?

追问1: s1 = new String(“hello”)和s1 = “hello”有什么区别?

追问2: s1 = “a” + “b”和s1 = a1 + a2 (注:a1 = “a”,a2=”b”)有什么区别

二: Object中有哪些公共方法?

三: java中==和eqauls()的区别?

四: 接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?

五: JAVA中final关键字的作用

追问1: final、finally、finalize三个关键字的区别

每日小结

image.png

大家好,这里是IT学习日记,一个非双一流大学毕业的深漂族,年少曾憧憬大厂,面试过许多家公司,也曾踩过无数坑,深知面试技巧和知识广度与深度对一个应届生乃至工作多年的开发者的重要性。

故特意收集了各个公司、大厂的面试高频题,通过每天打卡的方式,和大家一起记录和学习,希望能够帮助到应届生和开发者们少走弯路,一起冲向大厂!!!

image.png

一: String和StringBuilder、StringBuffer的区别?


 1、String类被final修饰,对象是不可变的,但是StringBuffer和StringBuilder是可变的(既意味着它们不会产生中间对象,所以它们很适用于需要多个字符串拼接的场景)


 2、String是不可变的、StringBuffer类中方法使用了synchronize加锁,所以它们都是线程安全的,但是StringBuilder是线程不安全的


 3、因为StringBuffer方法中加了锁,String是不可变的,在操作时会产生大量的中间对象,所以它们的执行效率都比StringBuilder低,既执行效率: StringBuilder > StringBuffer > String

image.png

追问1: s1 = new String(“hello”)和s1 = “hello”有什么区别?


 new String(“hello”)是先在堆中创建一个对象,并返回给s1,”hello”是一个常量,会先到字符串常量池中查询是否存在这个字符串,没有则分配一个空间并存放”hello”,并将”hello”在常量池的地址存放在new出来的对象中(所以:如果”hello”字符串在常量池中存在则该语句创建一个对象,不存在则创建两个)


 s1 = “hello”则表示直接到常量池中查询,有则返回地址,没有则创建新的再返回地址(所以:如果常量池中存在,则不创建对象,不存在则创建一个对象)

image.png

追问2: s1 = “a” + “b”和s1 = a1 + a2 (注:a1 = “a”,a2=”b”)有什么区别


 如果是变量相加如(s1 = a1 + a2 (注:a1 = “a”,a2=”b”)),则先开空间,再拼接(每一个字符串变量在常量池中都有一个地址,如果是多个拼接,则生成新的对象并返回这个对象的地址)。


 如果是常量相加如:s1 = “a” + “b”,则是先将字符串拼接好,再到常量池中查找。


 所以,在进行比较的时候,一般判断清除是拼接完再查询还是查询后再拼接,这样使用在进行比较的时候也是不一样的。

image.png

二: Object中有哪些公共方法?

equals()

getClass()

hashCode()

notify()

notifyAll()

toString()

wait()

image.png

三: java中==和eqauls()的区别?


  ==是运算符,用于比较两个变量是否相等,而equals是Object类的方法,用于比较两个对象是否相等。


 默认Object类的equals方法是比较两个对象的地址,此时和==的结果一样。当比较类型是基本类型时,==比较的是它们的值,默认下,如果使用==比较对象,则比较的是对象的内存地址。


 如果需要比较对象内容,需要重写equal方法,如String就重写了equals方法,但要注意,如果重写equals方法,则也一定要重写hashCode方法,具体原因在上一篇有讲解到,感兴趣的可以看: 【秋招冲刺-每日打卡】应届生JAVA岗-每日5道高频面试题【Day2】-基础篇(2)

image.png

四: 接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?


 1、接口可以继承(extends)接口,且支持多继承(即一个接口继承多个接口)


 2、抽象类可以实现(implements)接口


 3、抽象类可继承具体类也可以继承抽象类。

image.png

五: JAVA中final关键字的作用

  (1)修饰类:表示该类不能被继承;

  (2)修饰方法:表示方法不能被重写;

  (3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。

image.png

追问1: final、finally、finalize三个关键字的区别


final:修饰符、关键字,表示“不可变的”,有三种用法:如果一个类被声明为final,意味着它不能再派生出新的子类,即不能被继承,因此它和abstract是反义词。将变量声明为final,可以保证它们在使用中不被改变,被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取不可修改。被声明为final的方法也同样只能使用,不能在子类中被重写。

finally:通常放在try…catch…的后面构造总是执行代码块,这就意味着程序无论正常执行还是发生异常,这里的代码只要JVM不关闭都能执行,可以将释放外部资源的代码写在finally块中。

finalize:Object类中定义的方法,Java中允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时调用的,通过重写finalize()方法可以整理系统资源或者执行其他清理工作。


每日小结


  不积跬步,无以至千里;不积小流,无以成江海。今天播种努力的种子,总会有一天发芽!


  欢迎大家关注,如果觉得文章对你有帮助,不要忘记一键三连哦,你的支持是我创作更加优质文章的动力,希望大家都能够早日拿到心仪的Offer,有任何面试问题可以私信我,欢迎大家投稿面试题目哦!


相关文章
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
算法 Java
50道java基础面试题
50道java基础面试题
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
645 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
缓存 Java 关系型数据库
Java 面试经验总结与最新 BAT 面试资料整理含核心考点的 Java 面试经验及最新 BAT 面试资料
本文汇总了Java面试经验与BAT等大厂常见面试考点,涵盖心态准备、简历优化、面试技巧及Java基础、多线程、JVM、数据库、框架等核心技术点,并附实际代码示例,助力高效备战Java面试。
653 0
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
1848 0
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
842 0
|
缓存 Java 关系型数据库
2025 年最新华为 Java 面试题及答案,全方位打造面试宝典
Java面试高频考点与实践指南(150字摘要) 本文系统梳理了Java面试核心考点,包括Java基础(数据类型、面向对象特性、常用类使用)、并发编程(线程机制、锁原理、并发容器)、JVM(内存模型、GC算法、类加载机制)、Spring框架(IoC/AOP、Bean生命周期、事务管理)、数据库(MySQL引擎、事务隔离、索引优化)及分布式(CAP理论、ID生成、Redis缓存)。同时提供华为级实战代码,涵盖Spring Cloud Alibaba微服务、Sentinel限流、Seata分布式事务,以及完整的D
858 1
|
算法 架构师 Java
Java 开发岗及 java 架构师百度校招历年经典面试题汇总
以下是百度校招Java岗位面试题精选摘要(150字): Java开发岗重点关注集合类、并发和系统设计。HashMap线程安全可通过Collections.synchronizedMap()或ConcurrentHashMap实现,后者采用分段锁提升并发性能。负载均衡算法包括轮询、加权轮询和最少连接数,一致性哈希可均匀分布请求。Redis持久化有RDB(快照恢复快)和AOF(日志更安全)两种方式。架构师岗涉及JMM内存模型、happens-before原则和无锁数据结构(基于CAS)。
481 5
|
安全 Java API
2025 年 Java 校招面试常见问题及详细答案汇总
本资料涵盖Java校招常见面试题,包括Java基础、并发编程、JVM、Spring框架、分布式与微服务等核心知识点,并提供详细解析与实操代码,助力2025校招备战。
688 1