java基础面试题1

java基础面试题1

1.简单说说Java中的异常处理机制的简单原理和应用。

在这里插入图片描述

2.Java中Object类常用方法

toString方法

toString定义一个对象的字符串表现形式,Object类中定义的规则是类的全路径名+@+对象的哈希码。重写之后,我们可以自行决定返回的字符串中包含对象的哪些属性信息。

clone方法

在这里插入图片描述
详解

finalize方法

在这里插入图片描述

getClass方法

在这里插入图片描述

hashCode方法

在这里插入图片描述
详解

equals方法

说说HashCode()、equals()的区别?
在这里插入图片描述
详解
在这里插入图片描述
在这里插入图片描述

notify方法

在这里插入图片描述

notifyAll方法

在这里插入图片描述

wait方法

java中 sleep 和 wait 的区别
在这里插入图片描述

3.jdk1.8新特性

在这里插入图片描述
详解

4.面向对象的三大特性

在这里插入图片描述

5.面向对象的五大原则

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
详解
在这里插入图片描述
详解
在这里插入图片描述

6.java中重载和重写的区别

在这里插入图片描述

7.怎样声明一个类不会被继承,什么场景下会用?

final修饰的类不能有子类,大部分都是出于安全考虑

String 类举例

8.java中的自增是线程安全的吗,如何实现线程安全的自增

不安全
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


public class SafeTest {
 
    private static AtomicInteger count = new AtomicInteger(0);
    private static final int times = Integer.MAX_VALUE;
 
    public static void main(String[] args) {
 
        long curTime = System.nanoTime();
 
        Thread decThread = new DecThread();
        decThread.start();
 
        // 使用run()来运行结果为0,原因是单线程执行不会有线程安全问题
        // new DecThread().run();
 
        System.out.println("Start thread: " + Thread.currentThread() + " i++");
 
        for (int i = 0; i < times; i++) {
            count.incrementAndGet();
        }
 
        // 等待decThread结束
        while (decThread.isAlive());
 
        long duration = System.nanoTime() - curTime;
        System.out.println("Result: " + count);
        System.out.format("Duration: %.2f\n", duration / 1.0e9);
    }
 
    private static class DecThread extends Thread {
 
        @Override
        public void run() {
            System.out.println("Start thread: " + Thread.currentThread() + " i--");
            for (int i = 0; i < times; i++) {
                count.decrementAndGet();
            }
            System.out.println("End thread: " + Thread.currentThread() + " i--");
        }
    }
}

在这里插入图片描述

9.jdk1.8中的stream有用过吗,详述一下stream的并行操作原理?stream并行的线程池哪来的

详解

10.动态代理的2种方式以及区别?

在这里插入图片描述
在这里插入图片描述
JDK动态代理原理

11.简述一下Java运行时数据区?

在这里插入图片描述

12.说一下反射,反射会影响性能吗?

Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射这种运行时动态的功能可以说是非常重要的,可以说无反射不框架!!!反射方式实例化对象和属性赋值和调用方法肯定比直接的慢,但是程序运行快慢的原因有很多,不能主要归于反射,如果你只是偶尔调用一下反射,反射的影响可以忽略不计,如果你需要大量调用反射,会产生一些影响,适当考虑减少使用或者使用缓存,你的编程思想才是限制你程序性能的最主要的因素

13.单例模式有哪些实现方式,有什么优缺点

详解

14.BIO,NIO,AIO有什么区别?

在这里插入图片描述
详解
基础知识

15.包装类缓存问题

详解

16.为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗?

在这里插入图片描述
在这里插入图片描述

17.为什么不把基本类型放堆中呢?

在这里插入图片描述

18.堆中存什么,栈中存什么?

在这里插入图片描述

19.Java中的参数传递是传值呢?还是传引用?

参数是基本类型,按值传递
参数是引用传递,按引用传递
按引用传递在方法体中修改形参时,可能会对实参产生影响

20.final finally finalize的区别

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值