Java基础知识+Java虚拟机jdkjava

建议反复观看!精选高频java面试题20道,助你跳槽加薪!

2021-03-07  本文已影响0人  前程有光

面向对象的特征有哪些方面?

① 抽象:抽象分为数据抽象和过程抽象两方面。
数据抽象:针对对象的属性,比如建立一个鸟这样的类,鸟会有以下特征,两个翅膀,两支脚,有羽毛等等特性,写成类都是鸟的属性
过程抽象:针对对象的行为特征,比如鸟会飞,会跳等等,这些方面的就会抽象为方法,即过程,写成类都是鸟的方法
② 继承:继承是从已有类得到继承信息创建新类的过程
③ 封装:封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。
④ 多态:多态是同一个行为具有多个不同表现形式或形态的能力(方法的重写)


访问修饰符public,private,protected(不写修饰符默认只能同一包下访问)

基本数据类型

精度丢失问题(如何判定单双精度)

double a = 1;
double b = 20.2;
double c = 300.02;
BigDecimal a1 = new BigDecimal(Double.toString(a));
BigDecimal b1 = new BigDecimal(Double.toString(b));
BigDecimal c1 = new BigDecimal(Double.toString(c));
double result = (a1.add(b1).add(c1)).doubleValue();
System.out.println(result);

int和Integer有什么区别

Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。

class AutoUnboxingTest {

    public static void main(String[] args) {
        Integer a = new Integer(3);
        Integer b = 3;                  // 将3自动装箱成Integer类型
        int c = 3;
        System.out.println(a == b);     // false 两个引用没有引用同一对象
        System.out.println(a == c);     // true a自动拆箱成int类型再和c比较
    }
}

| 和 ||,& 和 && 的区别

0&0=0;   
0&1=0;    
1&0=0;     
1&1=1;

| 按位或运算符,按二进制位进行"或"运算。运算规则:(有 1 则为 1)

0|0=0;    
0|1=1;   
1|0=1;    
1|1=1;

解释内存中的栈(stack)、堆(heap)。

Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行下取整。

数组有没有length()方法?String有没有length()方法?

数组没有length()方法,有length 的属性。String 有length()方法。JavaScript中,获得字符串的长度是通过length属性得到的,这一点容易和Java混淆。

在JAVA中如何跳出当前的多重嵌套循环

// 使用标记
public static void main(String[] args) {
        System.out.println("标记前");
        ok: for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                System.out.println("i=" + i + ",j=" + j);
                if (j == 5)
                    break ok;
            }
        }
        System.out.println("标记后");
    }

是否可以继承String类?

∵ String = final类 && final类 ≠ 继承(不能被继承)
∴ String ≠ 继承(不能被继承)

String、StringBuffer、StringBuilder区别(详细介绍)

方法重载(Overload)和方法重写(Override)

Java中接口(interface)和抽象类(abstract)的区别

Java 中会存在内存泄漏吗,请简单描述。

理论上Java因为有垃圾回收机制(GC)不会存在内存泄露问题(这也是Java被广泛使用于服务器端编程的一个重要原因);然而在实际开发中,可能会存在无用但可达的对象,这些对象不能被GC回收,因此也会导致内存泄露的发生。例如Hibernate的Session(一级缓存)中的对象属于持久态,垃圾回收器是不会回收这些对象的,然而这些对象中可能存在无用的垃圾对象,如果不及时关闭(close)或清空(flush)一级缓存就可能导致内存泄露

String s = new String(“ds”);创建了几个字符串对象?

两个对象,一个是静态区的"ds",一个是用new创建在堆上的对象

Java 中的final关键字有哪些用法?

数据类型之间的转换

如何将字符串转换为基本数据类型
调用基本数据类型对应的包装类中的方法parseXXX(String)或valueOf(String)即可返回相应基本类型
如何将基本数据类型转换为字符串
一种方法是将基本数据类型与空字符串("")连接(+)即可获得其所对应的字符串;
另一种方法是调用String 类中的valueOf()方法返回相应字符串

列出一些你常见的运行时异常

java 集合(list、set、map)的特点

List、Set是存储单列的数据集合,都继承与Collection接口。 Map是存储键值对这样的双列数据的集合,是个独立接口

List:有顺序以线性方式存储,可以存放重复对象 (线程安全方法:List list = Collections.synchronizedList(new LinkedList(…));)

Set:无顺序,不包含重复的元素

Map:键必须是唯一 (同步方法:Map m = Collections.synchronizedMap(new TreeMap(…));)

总结

欢迎关注公众号:前程有光,领取一线大厂Java面试题总结+各知识点学习思维导+一份300页pdf文档的Java核心知识点总结! 这些资料的内容都是面试时面试官必问的知识点,篇章包括了很多知识点,其中包括了有基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等。

上一篇下一篇

猜你喜欢

热点阅读