• 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的主从
    一个主服务器可以拥有多个从服务器,但是一个从服务器只能有一个主服务器。

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    STM32F1课程学习
    「地埋式积水监测站」智慧防汛,科技先行
    AI模型风险评估 第1部分:动机
    车流量监控系统
    Vue 安装与创建第一Docker的项目
    【04】Istio的pilot流量分发机制
    Spring框架系列(14) - SpringMVC实现原理之DispatcherServlet处理请求的过程
    linux中的vim工具
    黑苹果修改intel hd3000核显显存大小.2022-11-29
    【Day26】枚举
  • 原文地址:https://blog.csdn.net/web18484626332/article/details/126070088