王力面试(未完全解析)(部分)

这篇具有很好参考价值的文章主要介绍了王力面试(未完全解析)(部分)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • Java对象的创建过程?参考答案1,2,3
  1. 检查类是否已经被加载;
  2. 为对象分配内存空间;
  3. 为实例变量赋默认值(0或者null);(附1这段代码可证明此步早于实例变量初始化 )
  4. 设置对象头
  5. 执行内部生成的<init>方法进行初始化

其中第5步的具体步骤为:递归调用超类构造器----实例变量初始化(变量声明)以及调用实例代码块-----调用构造器。

实际上,如果我们对实例变量直接赋值或者使用实例代码块赋值,那么编译器会将其中的代码放到类的构造函数中去,并且这些代码会被放在对超类构造函数的调用语句之后2

Java是按照代码顺序来执行实例变量初始化和实例代码块的2,有以下代码为证:

public class InstanceVariableInitializer {  

    private int i = 1;  
    private int j = i + 1;  //实例初始化

    public InstanceVariableInitializer(int var){
        System.out.println(i);
        System.out.println(j);
        this.i = var;
        System.out.println(i);
        System.out.println(j);
    }

    {               // 实例代码块
        j += 3; 
    }

    public static void main(String[] args) {
        new InstanceVariableInitializer(8);
    }
}/* Output: 
            1
            5
            8
            5
 *///:~

总的来说,类实例化的一般过程是:父类的类构造器<clinit>() -> 子类的类构造器<clinit>() -> 父类的成员变量和实例代码块 -> 父类的构造函数 -> 子类的成员变量和实例代码块 -> 子类的构造函数。2

    • 为对象分配内存的两种方式?相关知识4,5:是否栈上分配。而在堆上分配时,根据堆是否规整又可分为两种方法:1、指针碰撞(Bump the Pointer),2、空闲列表(Free List)
  • es脑裂有碰到过吗? 相关知识参考本博-----《专题三分布式系统》之《第四章 拓展进阶(二)——搜索引擎ES》 之 《4.12.5 ES高性能集群》

  • es很大数据量(上亿)聚合如何实现

  • es如何在多并发下保证一致性?相关知识:本博-----《专题五 容器化微服务》之《第三章 云原生DevOps》之《第二节 监控》 之 《3.2.3 Elasticsearch与Kibana》最后提到的wait_for_active_shards

  • es数据量特别大时,有哪些备份手段?Elasticsearch Snapshot6

  • 有没有做过实时计算?数据流量很大,怎样的架构才能支持实时查询和分析?相关知识:浅谈实时计算:Flink

附1:

public class InstanceInitializer {  
    private int j = getI();  
    private int i = 1;  

    public InstanceInitializer() {  
        i = 2;  
    }  

    private int getI() {  
        return i;  
    }  

    public static void main(String[] args) {  
        InstanceInitializer ii = new InstanceInitializer();  
        System.out.println(ii.j);  
    }  
}  
/* Output: 0
*/

  1. 知乎-----java对象的创建过程 ↩︎

  2. 深入理解Java对象的创建过程:类的初始化与实例化 ↩︎ ↩︎ ↩︎ ↩︎

  3. java对象的创建过程 ↩︎

  4. Java中的对象一定在堆上分配吗? ↩︎

  5. JavaGuide—对象的创建—Step2:分配内存 ↩︎

  6. 阿里云-----【最佳实践】Elasticsearch Snapshot 备份的使用方法 ↩︎文章来源地址https://www.toymoban.com/news/detail-537922.html

到了这里,关于王力面试(未完全解析)(部分)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【java基础面试题】jdk、jre、jvm区别

    【java基础面试题】jdk、jre、jvm区别 jdk ​ 从概念上讲JDK是JAVA开发工具,用它来开发JAVA程序,里面有很多基础类库和jre。 ​ JDK(Java Development Kit),它是功能齐全的 Java SDK,是提供给开发者使用的,能够创建和编译 Java 程序。他包含了 JRE,同时还包含了编译 java 源码的编译器

    2024年02月10日
    浏览(48)
  • JAVA后端开发面试基础知识(一)——JVM

    Class loader(类装载) 根据给定的全限定名类名(如: java.lang.Object)来装载class文件到 Runtime data area中的method area。 Execution engine(执行引擎) 执行classes中的指令。 Native Interface(本地接口) 与native libraries交互,是其它编程语言交互的接口。 Runtime data area(运行时数据区域) 这就是我们常说

    2024年03月10日
    浏览(61)
  • 【Java基础教程】(八)面向对象篇 · 第二讲:Java 数组全面解析——动态与静态初始化、二维数组、方法参数传递、排序与转置、对象数组、操作API~

    掌握数组的动态及静态创建方式、使用及特征; 掌握引用类型数据的特征; 掌握数组的排序、转置操作; 数组可以将多个变量进行统一的命名,这样相同类型的元素就可以按照一定的顺序进行组合排列 。在 Java中,数组属于引用类型数据,所以在数组的操作过程中,也一定

    2024年02月13日
    浏览(53)
  • JVM面试和学习中需要注意的部分

    在学习jvm的时候许多人处于迷茫的状态,对一些基础的知识反而听过就忘了,这篇笔记是我在学习jvm的时候随手记的一些,适合已经学过或者了解过的小伙伴复习回顾一下,当然知识的覆盖是没有的,主要记录了我觉得容易忘记或者记错的知识点,这些有很多是基石知识,希

    2024年02月03日
    浏览(37)
  • [AutoSar]基础部分 RTE 05 Port的实例化和初始化

       嵌入式、C语言、autosar、Rte 项目 Value OS autosar OS autosar厂商 vector 芯片厂商 TI 编程语言 C,C++ 编译器 HighTec (GCC) 回到总目录    如下图所示,端口类型有多种,不论哪种类型的端口都是用来在component间交互使用的。具体每种端口用法在后续SWC中会详细描述。 命名规则参

    2024年01月22日
    浏览(46)
  • 【面试题】JDK(工具包)、JRE(运行环境和基础库)、JVM(java虚拟机)之间的关系?

    【面试题】JDK、JRE、JVM之间的关系? JDK (Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。 JRE (Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程序运行的所需环境

    2024年02月11日
    浏览(60)
  • Jvm基础面试题

    JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。 Class loader(类装载):根据给定的全限定名类名(如:java.lang.Object)来装载class文件到Runtime data area中的method area。 Executio

    2024年02月09日
    浏览(39)
  • JVM基础,面试常见问题

    目录 一.运行时数据区域 1.线程独享 (1)栈 (2)程序计数器 2.线程共享 (1)方法区 (2)堆 二.内存如何分配 1.指针碰撞法 2.空闲列表法 3.TLAB 三.对象在内存中的组成 1.对象头 (1)markword (2)指向类型的指针 (3)如果是数组-》数组长度 2.实例数据 3.对齐填充 四.如何访

    2024年01月23日
    浏览(51)
  • 华为OD机试 - 完全二叉树非叶子部分后序遍历(Java & JS & Python)

    题目描述 给定一个以顺序储存结构存储整数值的完全二叉树序列(最多1000个整数),请找出此完全二叉树的所有非叶子节点部分,然后采用后序遍历方式将此部分树(不包含叶子)输出。 1、只有一个节点的树,此节点认定为根节点(非叶子)。 2、此完全二叉树并非满二叉

    2024年02月11日
    浏览(39)
  • java八股文面试[JVM]——JVM参数

    参考:JVM学习笔记(一)_卷心菜不卷Iris的博客-CSDN博客 jdk1.7: jdk1.8: 面试题 :给定-Xms Xmx -Xmn 问 最大的eden区域是多少M。 常用JVM参数 怎么对jvm进行调优?通过 参数配置 参数 备注 -Xms 初始堆大小。只要启动,就占用的堆大小,默认是内存的1/64 -Xmx 最大堆大小。默认是内存

    2024年02月11日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包