Java综合面试题(更新ing)

本文详述了Java面试中的关键点,涵盖了项目经验、基础语法、集合框架、多线程、JVM、框架应用、消息中间件、数据库、及其他技术领域。深入探讨了HashMap、线程安全、并发控制、数据库优化、Redis持久化等重点,并介绍了如何在实际项目中解决复杂问题,为面试者提供了全面的准备指南。
摘要由CSDN通过智能技术生成

一、项目

1.1.知道你的项目到底是做什么的,有哪些功能。
1.2.知道你做的模块在整个项目中所处的位置及作用,并能清晰的阐述模块间的调用关系。
1.3.知道你项目的整体架构和使用到的中间件,并对中间件的原理有一定的了解。
1.4.能流畅阐述的自己在项目中解决过的比较复杂的问题(重点)。
1.5.自我介绍

二、Java基础知识

2.1.栈和队列的区别
2.2.接口和抽象类的区别

首先,接口和抽象类的共同点是都不可以直接实例化,接口和抽象类的实现类只有实现了两者中的方法才能进行实例化。

接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现。Java1.8之后,接口中default的方法也可拥有方法体了。

抽象类是可以有私有方法或私有变量的,通过把类或者类中的方法声明为abstract来表示一个类是抽象类,被声明为抽象的方法不能包含方法体

实现接口的关键字为implements,继承抽象类的关键字为extends。Java中是单继承、多实现模式。

接口强调特定功能的实现,而抽象类强调所属关系。接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色,不适用于日后重新对立面的代码修改。功能需要累积时用抽象类,不需要累积时用接口。

2.3.int和Integer的区别,以及自动拆箱/装箱的相关问题

int是我们常说的整形数字,是基本类型,Java的原始数据类型之一。

Integer是int对应的包装类,是引用类型,它有一个int类型的字段存储数据,并且提供了基本操作,比如数学运算、int和字符串之间转换等。

在Java1. 5中,引入了自动装箱和自动拆箱功能(boxing/unboxing),Java可以根据上下文,自动进行int和Integer类型转换,极大地简化了相关编程。

在int到Integer的自动装箱操作中,会调用Integer的静态工厂方法 valueOf(int i) 方法,在调用它的时候会利用一个缓存机制,带来了明显的性能改进。Integer中有一个IntegerCache内部类,valueOf()方法先判断了变量i的值是否在这个缓存范围内,也就是[-128,127],在这个范围内直接返回创建好的对象,并不会重新创建对象。

JVM调优:IntegerCache缓存类的上下限,下限不可以配置,上限可以通过JVM参数进行配置。调高后可以避免创建更多的Integer对象节省内存。

valueOf()方法:

    public static Integer valueOf(int i) {
   
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

IntegerCache内部类:

    private static class IntegerCache {
   
        //下限-128
        static final int low = -128;
        static final int high;
        static final Integer cache[];
        static {
   
            // 默认上限127
            int h = 127;
Java面试题整理 .............................................................................................................. 9 Java面向对象................................................................................................................... 9 1. super()与this()的区别? ...................................................................................... 9 super(参数):调用父类的构造方法 。 this(参数):调用本类的其他构造方法。   2. 作用域public,protected,private,以及不写时的区别?............................................. 9 Public 公有的 protected 受保护的 private 私有的 3. 编程输出如下图形。 .......................................................................................... 9 4. JAVA的事件委托机制和垃圾回收机制 ............................................................. 10 5. 在JAVA中,如何跳出当前的多重嵌套循环? ................................................. 10 break;return; 6. 什么是java序列化,如何实现java序列化?(写一个实例) ................................ 10 7. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?......... 10可以包含多个类。只允许有一个公共类,且公共类名与Java源文件名相同。 8. 排序都有哪几种方法?请列举。用JAVA实现一个快速排序? ......................... 10 插入排序、冒泡排序、选择排序 9. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?....11 Override是重写:方法名称、参数个数,类型,顺序,返回值类型都是必须和父类方法一致的。它的关系是父子关系。 Overload是重载:方法名称不变,其余的都是可以变更的。它的关系是同一个类,同一个方法名,不同的方法参数或返回值。 10. Final类有什么特点?.....................................................................................11 属性常量  方法不可以overridding  类不可以继承
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值