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

文章大纲
一: 前言
  • 大家好,这里是IT学习日记,一个非双一流大学毕业的深漂族,年少曾憧憬大厂,面试过许多家公司,也曾踩过无数坑,深知面试技巧和知识广度与深度对一个应届生乃至工作多年的开发者的重要性
  • 故特意收集了各个公司、大厂的面试高频题,通过每天打卡的方式,和大家一起记录和学习,希望能够帮助到应届生和开发者们少走弯路,一起冲向大厂!!!

每日壁纸

二: 面试题目

一: String和StringBuilder、StringBuffer的区别?

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

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

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

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

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

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

在这里插入图片描述

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

  • equals()
  • getClass()
  • hashCode()
  • notify()
  • notifyAll()
  • toString()
  • wait()
    在这里插入图片描述

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

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

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

/topics/618545628)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值