面试题集锦(四)

1、MySQL语句中的having与where的区别是什么?
  1. having是在分组后对数据进行过滤,where是在分组前对数据进行过滤
  2. having后面可以使用分组函数(统计函数),where后面不可以使用分组函数
  3. where是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组,而having是对分组后数据的约束
2、try/catch/finally中是否可以有return?如果可以,请说明执行流程。

(1)都可以添加return,但是finally中最好不要写,该方法的结果有可能不能正确返回。
(2)try和catch中都包含return的话,try中没有发生异常,指向try中的return;否则,执行catch中的return

3、try-catch块中存在return语句,是否还执行finally块,如果执行,说明执行顺序。

执行,try中没有发生异常,先执行finally中的语句,然后再执行try中的return,如果发生异常,先执行finally中语句,然后再执行catch中的return。
无论是否异常,都会先执行finally中语句,然后return,所以不建议在finally中加入return,避免返回不正确结果。

4、阅读下面代码,输出结果是什么?
public class Demo5 {
    public static void main(String[] args) {
        getCount();
    }

    public static int getCount() {
        int i = 10;
        try {
            return i++;     //第一步
        } catch (Exception e) {
            return i++;
        } finally {
            i++;        //第二步
            System.out.println("释放资源:" + i);
        }
    }
}

/*
* 返回的值是10,打印结果是【释放资源:12】
* return i++; 会先执行i++,然后执行return,但是中间会先执行finally
* 第一步执行完毕,结果是 return 10; 在执行输出前先执行finally
* 执行第二步,此时i为11,然后i++,结果为12,打印输出
* 最后执行return.
 */	
}
5、其他面试题汇总
  1. char型变量中能不能存储一个中文汉字?为什么?
    可以,因为Java字符采用Unicode编码,每个字符占两个字节,汉字占两个字符,char类型变量占2个字节

  2. 一个".java"源文件中是否可以包括多个类?有什么限制?
    a.一个Java文件中可以写多个类,如果写多个类,则编译后会生成多个.class文件
    b.一个Java文件中最多只能有一个被public修饰的类,这个类的类名必须和Java源文件名保持一致
    c.一个Java文件中如果只有一个类,并且这个类不用public修饰的话,类名和文件名可以不一样,但习惯上,我们都会写上public

  3. 垃圾回收器的作用?垃圾回收器可以马上回收内存吗?
    在JVM的空闲时,检查并释放那些可以被释放的存储空间

  4. 接口和抽象类有什么区别?
    语法:
    1>抽象类使用abstract,接口使用interface
    2>抽象类中可以包含抽象方法,也可以包含非抽象方法,接口中只能包含抽象方法和静态常量,jdk1.8之后接口可以包含静态方法和默认方法。
    3>抽象类和接口都不能实例化。
    4>抽象类可以包含构造方法,接口中没有构造方法。

    功能:
    1>抽象类一般用来表示同类事物,接口可以表示不同类事物。
    2>抽象类可以实现代码的重用,也可以约束子类的功能。接口就是约束实现类的功能,降低代码之间的耦合性。

    使用场景:
    1>程序或模块内部使用抽象类
    2>程序架构或模块之间使用接口8.二维数数组在内存中的存储方式是怎样的?
    本质也是一维数组,不过每个元素存储的是另一个数组的地址

  5. 异常有哪些处理方式,分别需要注意什么问题?
    Throw抛出,hrow 是语句抛出一个异常;throws 是方法抛出一个异常,hrows 可以单独使用,但 throw 不能,throw要么和try-catch-finally语句配套使用,要么与throws配套使用。但throws可以单独使用,然后再由处理异常的方法捕获
    Try catch:捕获异常,try里是可能出现的异常代码,catch对异常进行处理的代码段
    多重try-catch:排列catch 语句的顺序:先子类后父类,发生异常时按顺序逐个匹配,只执行第一个与异常类型匹配的catch语句
    try-catch-finally:如果没有异常,则执行try中代码块,在renturn前执行finally里的代码,如果有异常,执行catch中代码,执行return语句前执行finally中代码,finally块是否发生异常都执行,finally块不执行的唯一情况,退出java虚拟机,System.exit(); 0正常退出,非0非正常退出

  6. 方法的传参过程是如何工作的
    调用方法的时候,用实参给形参进行赋值,这个过程被称为传参
    形参就是一个变量,实参就是一个常量或者携带着值的变量,传参就是把实参赋值给形参
    传参时需要注意的事项:实参的数量和类型必须和形参的数量和类型保持一致
    1 基本类型传递的实际数据
    2 引用类型传递的是地址
    基本类型传递修改后对调用方没有任何影响。引用类型传递修改后对调用方有影响。String和包装类除外

  7. 什么是函数的重载?举例说明
    参数个数不同,参数数据类型不同,参数顺序不同
    函数名相同和而参数列表不同的两个或者多个函数为函数重载

  8. 方法重载与方法重写的区别
    (1)方法重载的函数名相同,而参数列表不同
    (2)方法重新则是函数名、参数列表和返回值都完全一致,访问权限不能比父类严格
    (3)方法重载是在一个类内
    (4)方法重写则出现在继承或者实现接口的情况
    (5)方法重载的使用是为了实现函数的多功能
    (6)子类中从父类继承来的方法无法满足自己的需求时,可以在子类中对父类方法进行完善,这个完善过程叫做方法重写(override),方法的重写相当于在子类中覆盖父类中的方法

  9. 构造方法与普通方法之间的区别
    (1)构造方法用于初始化对象的成员变量,普通方法用于实现具体的功能
    (2)构造方法没有返回值,且方法名必须和类名一致;普通方法必须有返回值,如果没有则使用void修饰,方法名任意,最好是动宾结构
    (3)构造方法在创建对象的过程中就会执行,而且每个对象只执行一次,对于普通方法而言,只有在需要使用的时候才被执行,并且一个对象可以调用多次
    (4)构造方法是在创建对象的过程中自动调用的,普通方法只能手动进行调用
    (5)系统会默认为我们提供一个无参的构造方法,普通方法只能手动添加

  10. this关键字的作用以及使用
    This关键字指向本类对象;this.成员变量,表示本类成员变量;
    this()表示本类构造方法,
    (1) this(参数)只能用在构造方法中,必须是第一条语句
    (2) this(参数)只能调用一次必须是方法的第一条语句

  11. switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
    能用在byte、String(jdk1.7后),不能使用long
    byte、short、int、char、enum(枚举);java7之后可以是String

  12. 什么时候用for循环,什么时候用while循环

    1. 对于同一问题, 三种循环可相互替代。
    2. 循环次数确定的情况优先选用for循环,循环次数不确定的情况,通常选用while和do-while循环。
    3. 要防止无限循环––死循环
  13. break、continue、return的区别
    Break; 应用在switch和循环中,作用跳出语句块
    Continue结束本次循环,继续下一次循环
    Return用在方法中作用返回结果,结束方法

  14. IO流都有哪些分类?依据是什么?
    按照方向分:输入流和输出流
    按照读取的字节个数:字节流和字符流
    按照功能分:节点流 (负责读写数据)、处理流 (封装)

70道阿里百度高频Java面试题(框架+JVM+多线程+算法+数据库)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值