• 2020最新Java面试题


    2020最新Java面试题

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

    将围绕下图进行面试题总结和整理:
    在这里插入图片描述

    Java基础

    1.基本数据类型,占用字节?
    在这里插入图片描述
    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() {}
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

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

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

    public final class String
        implements java.io.Serializable, Comparable, CharSequence {
        /** The value is used for character storage. */
        private final char value[];
    
    • 1
    • 2
    • 3
    • 4

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

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

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

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

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

    ……未完待续

    JVM

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

    1.JVM内存划分?
    在这里插入图片描述

    Redis

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

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

    aof-use-rdb-preamble 
    
    • 1

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

  • 相关阅读:
    NFT Insider #75:The Sandbox 为Avatar 打造特别活动,Ambire 团队发起第一次官方治理投票
    Oracle函数如何返回多行多列?
    关于集合list去除两端[]中括号;String类型字符串转换成集合
    用Nginx搭建一个具备缓存功能的反向代理服务
    10款远程办公软件,助你事半功倍,晋升快如闪电
    【校招VIP】前端CSS/CSS3之盒模型
    SQLServer过滤数据(二)
    居家办公小能手,分享提高工作效率的4款办公软件
    通过@QConfigPropertySource为static属性赋值
    小米12sultra支持ip68级防水吗 小米12sultra有光学变焦吗
  • 原文地址:https://blog.csdn.net/Ajekseg/article/details/126317294