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

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

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

前言

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

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


一:请选出下面关于重写和重载说法正确的选项

  • A: 在子类中,如果方法没有被public修饰符修饰,则该方法不能重载(Overload)
  • B: 重写(Override)只需要满足方法名和参数类型相同即可
  • C: 重写(Override)要求方法的方法名、参数(包括参数类型和参数顺序)、返回值类型都要相同
  • D: 有相同的方法名、参数名、参数类型则表示该方法被重写了

答案: C

  A选项错误: 重载方法与方法的修饰符和返回值类型无关,只跟参数列表(包括参数类型、参数顺序、参数个数)和方法名有关。

在这里插入图片描述

  B选项错误: 重写发生在子类与父类或者子类和接口之间,要求如下(简称:两同两小一大原则):

  • 两同: 表示重写的参数列表(包括参数类型、参数顺序、参数个数)和方法名需要相同。

  • 两小: 表示方法的返回值类型要小于或等于父类的返回值类型和方法抛出的异常要小于或等于父类方法抛出的异常

  • 一大: 表示重写的方法访问修饰符要大于或等于父类方法的修饰符

  @Override注解时JDK自带的注解之一,用于重写的方法之上,如果方法不满足重写的条件,则编译不通过,在重写方法时,建议添加该注解,提高代码可读性

  D选项错误: 说法不正确,重写的方法需要遵循"两同两小一大"原则。

二:请选出下面对应重载说法错误的选项

  • A: 重载方法的方法名必须相同
  • B: 重载方法的区别是参数列表(参数个数或者参数类型)
  • C: 重载方法的返回值必须一致
  • D: 重载方法的实现可以不一样

答案: C (重载只与方法的参数列表和方法名相关,与方法的返回值类型和方法修饰符类型无关)

三:请选出下面说法正确的选项

  • A: 静态方法不能被重写
  • B: 静态方法不能被private修饰
  • C: 私有方法不能被重载
  • D: 静态方法不能通过对象进行调用

答案: A

  A选项正确: 静态方法可以被继承,但是不能被重写。因为静态方法是属于类级别的,在加载到JVM时就已经确定了,但重写是表现多态的一种方式,通过父类引用指向子类,然后在运行时再确定具体的类型从而执行不同的逻辑。

在这里插入图片描述

  B选项错误: 静态方法和普通方法一样可以被public、protected,默认修饰符、private修饰。

在这里插入图片描述

  C选项错误: 重载是表示相同的方法名有不同的参数列表的方法,与返回值类型和访问修饰符无关。

  D选项错误: 静态方法是属于类级别的方法,可以通过类名和实例对象名调用(不推荐使用实例调用静态方法)。

四: 下面那个选项替换到"here"可以让结果输出为:son

public class DemoFather {
    private String name;
    public static void main(String[] args) {
        DemoFather item = new DemoSon();
        // here
    }
}

class DemoSon extends DemoFather{
    private String name;
    public String output(){
        name = "son";
        return name;
    }
}
  • A: System.out.println(item.name);
  • B: System.out.println(item.output());
  • C: System.out.println(((DemoSon)item).output());
  • D: System.out.println((DemoFather)item).output());

答案: C (使用父类引用指向子类,想调用子类的方法,需要将父类类型强制转换成子类类型再进行调用)

五: 下面代码执行会输出什么结果?

class Parent {
    public Parent() {
        System.out.println("A");
    }
}

public class Son extends Parent {
    public Son() {
        System.out.println("B");
    }

    public static void main(String[] args) {
        Parent a = new Son();
        a = new Parent();
    }
}

答案: A B A (因为Son继承了Parent类,在加载Son类时会先去加载它的父类,所以会先执行父类的构造方法)

小结

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

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


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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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