首页 > 编程语言 >讲真,这三道Java入门级面试题,你也不一定能搞定

讲真,这三道Java入门级面试题,你也不一定能搞定

时间:2023-06-08 22:33:17浏览次数:53  
标签:面试题 Java String void 讲真 sayHello 方法 public

下面是一道入门级面试题,这道题基本上都是问初级的小伙伴比较多,但如果你是中级,或者高级。我觉得未必都能回答上来。

说说 Java语言有哪些特点

尽量答出以下几个关键词:

1)简单易学。Java有丰富的类库,能够通过静态方法封装,降低API的学习成本,提高工作效率。

2)面向对象。这个也是Java最重要的特性,java能够使得程序耦合度更低,内聚性更高。

3)可靠安全。Java生态系统包括用于分析和报告安全性问题的各种工具。

4)与平台无关。Java能够跨平台使用,Write Once Run AnyWhere。实际上就是对应操作系统上都有个虚拟机作为一个中间转换。

5)支持多线程。Java可以采用多线程+协程方式实现更多的并发操作。

下面也是一道入门级面试题,面向过程与面向对象的区别,这里最好的是搞过C或C++的同学,后面来搞Java了,这样对面向过程和面向对象编程的体会更深。

说说面向对象和面向过程的区别

1)从概念上来说。面向过程:字面意义上就是面向的是过程,先做什么、在做什么、最后做什么,然后用函数把这些步骤一步一步地实现,在使用的时候一一调用则可。面向对象:字面意义上就是面向的是对象,是把构成问题的事务分解成各个对象,但是建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为。

2)从性能上来说。面向过程性能较高,所以单片机、嵌入式开发等一般采用面向过程开发。从性能上来说,面向对象比面向过程要低。

3)从可用性来说。面向对象有封装、继承、多态的特性,所以易维护、易复用、易扩展,可以设计出低耦合的系统。

扩展面试题:说说面向切面和面向对象的区别。

下面还是一道入门面试题,每个面试题都不要掉以轻心,都是考验基本功是否扎实。

说说方法重载和方法重写的区别

都是和方法有关系的,那Java中方法的签名包含什么呢?

要完整的描述一个方法,需要指出方法名以及参数类型,这就叫方法的签名。

比如说String类中有4个称为indexOf的公有方法:

indexOf(int)
indexOf(int,int)
indexOf(String)
indexOf(String,int)

返回类型不是方法签名的一部分,也就是说,不能有两个名字相同、参数类型也相同却有着不同类型返回值的方法。

public void say(String name){
}
public String say(String name){
}

我们继续聊方法的重写与重载:

「方法的重写(Override)」

从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。

public class Father {

    public static void main(String[] args) { 
        Son s = new Son();
        s.sayHello();
    }

    public void sayHello() {
        System.out.println("Father say Hello");
    }
}

class Son extends Father{
    //Son重写了Father的 sayHello方法
    @Override
    public void sayHello() { 
        System.out.println("Son say hello ");
    }

}

总结:

1.发生在父类与子类之间 。

2.方法名,参数列表,返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须相同。

3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private) 。

4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。

「方法的重载(Overload)」

Java中允许同一个类中可以定义多个同名方法,只要形参列表(方法入参)不同就行。如果同一个类种包含了两个或者多个以上方法的名称相同,但是形参列表不同,则被称之为方法重载。

在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载。

public class Father {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Father s = new Father();
        s.sayHello();
        s.sayHello("wintershii");

    }

    public void sayHello() {
        System.out.println("Hello");
    }

    public void sayHello(String name) {
        System.out.println("Hello" + " " + name);
    }
    
    public void sayHello(Long userId, String name) {
        sayHello("Hello" + " " + name);
    }
}

总结:

方法重载要求两同一不同:

1.同一个类中。

2.方法名相同。

3.参数列表不相同。

方法返回值、修饰符,与方法重载没有任何关系。

不推荐使用以下方式:

public void sayHello(String name){

}
public void sayHello(String... name){

}

因为这么做实在是没有太大的意义,并且容易降低程序的可读性。

总结

本文分享了三道入门级面试题,你都能回答上来吗?你回答都是背的吗还是自己真正理解的?


标签:面试题,Java,String,void,讲真,sayHello,方法,public
From: https://blog.51cto.com/u_11702014/6443923

相关文章

  • 给小白讲java中两大怪物,附带面试题!
    类介绍Java程序是由若干个类组成的,类也是面向对象编程思想的具体实现。以下为类的定义:publicclassUser{//私有属性privateLonguserId;privateStringname;privateIntegerage;//构造方法publicUser(){}//有残构造方法publ......
  • 写给小白看的线程池,还有10道面试题
    为什么要用线程池呢?下面是一段创建线程并运行的代码:for(inti=0;i<100;i++){newThread(()->{System.out.println("runthread->"+Thread.currentThread().getName());userService.updateUser(....);}).start();}我们想使用这种方式去做......
  • 如何吃透一个Java项目?
    现在Austin的文档我觉得还是比较全的,但到了看代码的时候,可能有的同学就不知道应该怎么看,有想知道模块之间的调用链路,有想一点一点把细节给全看了。这时候就很可能在项目里犯迷糊了,绕不出不来了。Java开源项目消息推送平台......
  • Java 的 8 种异步实现方式
    异步的八种实现方式线程ThreadFuture异步框架CompletableFutureSpring注解@AsyncSpringApplicationEvent事件消息队列第三方异步框架,比如Hutool的ThreadUtilGuava异步1.线程异步public class AsyncThread extends Thread {    @Override    public vo......
  • Java反射机制详解上篇
    1反射机制是什么反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。在面向对象的世界里,万事万物皆对象.在java语言里,静态的成员,普......
  • Java多态综合案例(包含接口,接口实现类)
    首先定义一个接口名为USB其次定义两个实现类分别名为KeyBorad和Mouse此时就可以使用多态了,因为实现类和接口某种意义上来说是继承关系。USBu=newKeyborad();USBu2 =newMouse();因为键盘和鼠标都具有插拔功能,所以为了方便,把这两个功能写入接口,然后实现类重写。pac......
  • 一个Java对象到底占用多大内存?
    一个Java对象到底占用多大内存? 最近在读《深入理解Java虚拟机》,对Java对象的内存布局有了进一步的认识,于是脑子里自然而然就有一个很普通的问题,就是一个Java对象到底占用多大内存?在网上搜到了一篇博客讲的非常好:http://yueyemaitian.iteye.com/blog/2033046,里面提供的......
  • java分页代码
    现在开始编写 Service 层代码:在 com.game.products.services.iface 包中新建 ProductsService 接口,代码如下:packagecom.game.products.services.iface;importjava.util.List;importcom.game.products.model.Products;publicint......
  • javascript操作xml(增删改查)例子代码
    关键字:javascript操作xml(增删改查)自己做了一个小东西,不是很好,但是对初学来说是一个不错的例子!包括了stu.hta(是HTML应用程序);stu.xml注意下面的HTML代码必须保存为后缀名为hta否则当对XML文件进行操作(增删改)的时候就会提示没有权限!!文件stu.hta代码如......
  • javaScript通用数据类型校验_2
    /*要求:一、电话号码由数字、"("、")"和"-"构成二、电话号码为3到8位三、如果电话号码中包含有区号,那么区号为三位或四位四、区号用"("、")"或"-"和其他部分隔开用途:检查输入的电话号码格式是否正确输入:strPhone:字符串返回:如果通过验证返回true,否......