2020最新Java面试题

2020最新Java面试题

研发了这么多年,每天都在搬砖,斗转星移,从一个被面试者,成为了一个面试者。总感觉自己在面试的时候提出的问题没有一个由浅入深的感觉,总是东一个问题,西一个问题的,所以整理一些面试问题,首先是给自己扫盲,丰富自己的技术栈。其次作为一个下次被面试的准备。
如果文章有错误,希望指正。

将围绕下图进行面试题总结和整理:
2020最新Java面试题

Java基础

1.基本数据类型,占用字节?
2020最新Java面试题
2. Integer c =128 , Integer d =128,c==d,输出的是什么?
输出的是false,因为128大于IntegerCache的最大值,所以需要重新创建对象。
在Integer内部有一个静态类

 private static class IntegerCache {
        static final int low = -128;
        static final int high;
        static final Integer cache[];

        static {
            // high value may be configured by property
            int h = 127;
            String integerCacheHighPropValue =
                sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
            if (integerCacheHighPropValue != null) {
                try {
                    int i = parseInt(integerCacheHighPropValue);
                    i = Math.max(i, 127);
                    // Maximum array size is Integer.MAX_VALUE
                    h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
                } catch( NumberFormatException nfe) {
                    // If the property cannot be parsed into an int, ignore it.
                }
            }
            high = h;

            cache = new Integer[(high - low) + 1];
            int j = low;
            for(int k = 0; k < cache.length; k++)
                cache[k] = new Integer(j++);

            // range [-128, 127] must be interned (JLS7 5.1.7)
            assert IntegerCache.high >= 127;
        }

        private IntegerCache() {}
    }

参考资料: Integer缓存池(IntegerCache)及整型缓存池.

3.String能被继承吗?为什么?
不能被继承,因为被final修饰,主要目的就是保证String是不可变(immutable)。不可变就是第二次给一个String 变量赋值的时候,不是在原内存地址上修改数据,而是重新指向一个新对象,新地址。下面看String类源码如何保证是不可变的:

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    /** The value is used for character storage. */
    private final char value[];

参考资料: 【JAVA基础】String类为什么是final的.

4.谈谈你对final的理解?
修饰类,修饰方法,修饰变量。

5.接口可以有方法体吗?
可以有方法体,前提是使用default修饰,这个是1.8的新特性。

6.JDK的新特性?
自己去看吧
参考资料: 【JAVA基础】String类为什么是final的.

7.Java 的反射机制?
通过反射,该类对我们来说是完全透明的,想要获取任何东西都可以。

……未完待续

JVM

JVM 主要从 内存划分,垃圾回收,JMM模型几个方面

1.JVM内存划分?
2020最新Java面试题

Redis

1.redis的数据类型
字符串,有序集合,无需集合,Hash,列表

2.redis的数据结构
注意两者的区别,一个是类型,一个是结构;底层的数据结构大概有:
SDS(Simple Dynamic String),链表,字典,跳跃表,整数集合,压缩列表。
3.redis持久化方案
RDB和AOF,这里简单说一下,目前的redis支持RDB和AOF混合的方式,4.0以后的版本,开启如下的配置,会生成一个混合的文件,

aof-use-rdb-preamble <vaule>

4.redis的高可用实现
这样的问题无非就是几个回答,主从,哨兵,集群。这里的选择使用,结合自己公司的实际情况去考虑。
5.reids的主从
一个主服务器可以拥有多个从服务器,但是一个从服务器只能有一个主服务器。

版权声明:程序员胖胖胖虎阿 发表于 2022年10月26日 下午6:40。
转载请注明:2020最新Java面试题 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...