《面试季》高频面试题-基础篇(二)

举报
IT学习日记v 发表于 2022/03/29 22:17:35 2022/03/29
【摘要】 面试季第二篇,本专栏意在分享面试中常见的各种面试真题!目的是为了更好应对各厂裁员和跳槽涨薪问题,提前准备,不断学习!

  • 💂 个人网站: IT学习日记
  • 🤟 版权: 本文由【IT学习日记】原创、需要转载请联系博主
  • 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦

前言

  • 大家好,这里是IT学习日记,相信大家对今年IT的行情应该也有所了解了,从大厂到小厂,各种裁员消息。公司裁员我们无法决定,我们能做的就是不断提升自己,提前准备。

  • 本系列文章主要分享了之前博主真实面试中遇到的一些问题,希望能够帮助准备就业或者跳槽的朋友。


一: float f = 6.6 这个代码是否有问题?

   有,在JAVA语言中,默认小数是双精度(double),而float是单精度类型,使用float接收双精度的数值,相当于向下转型(down-casting),会造成精度丢失,因此需要强制类型转换即float f = (float)6.6或者在数值后指定类型即float f = 6.6F;

在这里插入图片描述

追问1: short s1 = 1; s1 = s1 + 1;存在问题吗,存在则具体说明,short s1 = 1; s1 += 1;存在问题吗?

   s1 = s1 + 1存在问题,无法通过编译。因为1是int类型在JAVA语言中占4个字节,而short类型在JAVA中占2个字节,使用short类型接收,则表明需要强制类型转换即写成:想要编译通过需要写成: s1 = (short) (s1 + 1);

   short s1 = 1; s1 += 1;写法没有错误,可以正常编译,"+="是一个复合运算符,JAVA编译器会对它进行特殊处理,它包含了隐式的强制类型转换,相当于s1 = (short)s1 + 1;

在这里插入图片描述

二: &和&&的区别?

   1、&运算符有两种用法:

   (1)按位与: 具体的含义是参与运算的两数各对应的二进制位相与,只有对应的两个二进位均为1时,结果位才为1 ,否则为0。

   (2)逻辑与: 要求左右两边的条件都为true时,返回的结果才为true,否则为false。

在这里插入图片描述

   2、&&运算符也叫短路与运算,特点如下:

   (1)、如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。只有运算符两边的条件都为真时,才会返回true。

   (2)、它的运用场景很多,合理运用可以避免空指针,如判断用户名不是null且不为空字符串时,使用username != null &&!username.equals(“”),运算符的条件顺序不能调换,否则会出现空指针。

   (3)、逻辑或运算符(|)和短路或运算符(||)的差别也是相似,短路或运算符(||)只要运算符左边的条件为真,则不运行右边的条件判断,直接返回true。

三: Math.round(2.5) 等于多少?Math.round(-2.5)等于多少?

   round方法的作用是四舍五入,Math.round(2.5)的返回值是3,Math.round(-2.5)的返回值是-2。四舍五入的原理是在参数上加0.5然后进行下取整(向下取整表示取更小的值)。

在这里插入图片描述

四: switch(condition)中,condition的值可以是哪些类型?

  1、Java5以前,switch(condition)中,condition只能是byte、short、char、int(包括它们的包装类型)类型的值。

  2、Java5开始,Java中引入了枚举类型,condition也可以是enum类型的值

  3、Java7开始,condition还可以是字符串(String),但是长整型(long),浮点数(float)到目前为止还不支持。

在这里插入图片描述

五: 当两个对象x、y的equals方法为true时,他们的hashCode方法返回的值可以是不同,这个说法正确?

  这个说法是错误的!当x.equals(y)时,它们的hash code也应该相同。对于equals和hashCode方法Java中有以下的规定:

  1、如果两个对象相同(equals方法返回true),那么它们的hashCode值一定要相同;

  2、如果两个对象的hashCode相同,它们equals并不一定相同,只能说明两个对象在散列存储结构中,存放在相同的一个位置。

  3、如果违背了上面两点的规范,那么在使用容器的时候,在Set集合中可能出现相同的对象,增加元素的效率会大大下降,频繁的哈希冲突会导致性能大大的下降。

追问1: 重写equals方法应该注意哪些事项

  如果重写了一个对象的equals方法,那么一定要重写这个对象的hashCode方法,目的是为了保证equals方法相同的对象拥有相同的hashCode,《Effective Java》书籍中写到重写equals需要注意以下事项:

  1、自反性: 针对非空的x,使用x.equals(x)应该返回true

  2、对称性: 针对x,y,如果x.equals(y)为true,那么y.equals(x)也应该为true

  3、传递性: 如有x,y,z,存在x.equals(y)和y.equals(z)都为True,那么x.equals(z)也应该为true

  4、一致性: 如果比较对象未发生改变,则反复调用equals方法应该返回同样的结果

  5、对于任意的非空x,x.equals(null)应该返回false

追问2: 重写equals方法应该大概包含哪些内容

  一个好的equals方法重写应该具有以下的特点:

  1、使用==操作符检查”,判断参数是否为这个对象的引用”;

  2、使用instanceof操作符检查”参数是否为正确的类型”;

  3、对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;

  4、编写完equals方法后,要判断它是否满足自反性、对称性、传递性、一致性;

  6、重写equals时总是要重写hashCode;

  7、不要将equals方法参数中的Object对象替换为其他的类型,在重写时不要忘掉@Override注解。

小结

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

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


  该篇文章已经被收录在个人开源专栏:《IT知识小屋》中。专栏以小白视角切入,讲解通俗易懂,内容包含IT各方向知识(JAVA基础、进阶、面试真题、算法、面试采坑经验、996公司等),是IT知识学习+面试首选IT小屋。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。