`
步青龙
  • 浏览: 297735 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
72ba33fb-eefe-3de1-bd65-82a6e579265d
Java面试
浏览量:0
社区版块
存档分类
最新评论

面试那些事儿

 
阅读更多

这是一道坑人的面试题,看代码:

 package com.sprone.classloader1;

public class ClassLoader1 {
	public static void main(String[] args) {
		Singleton singleton = Singleton.getInstance();
		System.out.println("a= " + Singleton.a);
		System.out.println("a= " + Singleton.b);
	}
}

class Singleton {
	private static Singleton singleton = new Singleton();// code1
	public static int a;
	public static int b = 0;

	// code2
	private Singleton() {
		a++;
		b++;
	}

	public static Singleton getInstance() {
		return singleton;
	}

}
 

打印结果是什么?把code1 的代码 剪切到code2 结果是什么?

答案:1,0  剪切后1,1

 

分析:类的加载 ,链接与初始化过程

加载:查找并加载类的二进制数据

链接:验证:确保被加载的类的正确性

 准备:为类的静态变量分配内存,并将其初始化为默认值 比如private static int a = 3;在准备阶段分配内

                 存设置为0(int的默认值) 

         解析

 

问题1:对象对应的Class什么时候产生的? 假设是运行时,可想而知,JVM效率如蚂蚁,JVM团队也不会再运行时的时候才去生成Class对象,在我们编译之后.class文件里面都编译好了,每一个对象对应都有一个Class对象,而这个Class在字节码文件解析,为我们提供了一些生成对象的接口,我们常用的反射代码的生成都是在编译的时候生成的。

 

静态代码块顺序执行 a没有赋值,在准备阶段给其默认值。执行完code1 的时候 a为1; 继续下面的代码块,后面没有赋值,a=1,而b有重新赋值为0;

剪切后,new在后面 最终的值是在构造方法,所以都是1


分享到:
评论

相关推荐

    项目经理面试那些事儿-面试知识点大全(思维导图).png

    项目经理面试那些事儿-面试知识点大全(思维导图)

    「Java面试那些事儿」所涉及的面试题目及相应代码.zip

    【一线互联网大厂Java核心面试题库】Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等..

    Java面试那些事儿.html

    文章来源自微信公众号 码匠笔记 https://mp.weixin.qq.com/s/1IygP2GAo6Dwi5GHzClhpA

    《JAVA面试题》--「Java面试那些事儿」所涉及的面试题目及相应代码.zip

    十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA...

    java程序员上班那些事儿.pdf

    ### Java程序员上班那些事儿 #### 一、求职者与企业之间的认知差异 ##### 1.1 应聘者的自我定位问题 - **高大全式的技能列表**:许多求职者在简历上罗列了大量的技能,从传统编程语言如C++、VB,到现代技术如Java...

    公开课第五节:测试管理的那些事儿.mp4

    公开课第五节:测试管理的那些事儿.mp4 公开课第六节:自动化测试的设计模式.mp4 公开课第七节(1):自动化测试的设计模式2.avi 公开课第八节:自动化测试的设计模式3.avi 公开课第九节:多线程和自动化测试的并发...

    java面试学习指南全集.zip

    总结Dubbo.md 总结Java基础.md 总结Java多线程.md 总结Java集合.md 总结JVM.md 总结Mybatis.md ...计算机网络原理-http那些事儿.md 计算机网络面试常见问题.md Redis-面试常见的问题.md Spring面试常见问题.md

    java面试题集合java面试题集合java面试题集合

    Java作为一门广泛使用...通过阅读《Java面试题笔试题大全》、《Java程序员上班那点事儿》、《Java程序员面试宝典》、《Java企业面试题》以及《华为_中软等大公司JAVA面试试题》等资料,可以系统地复习和巩固这些知识。

    java面试书籍

    这些内容在"Java程序员上班那点事儿"中可能都有所涉及,而"面试指南"则会更加聚焦于面试场景,给出针对性的复习建议。 JVM是Java程序员必须了解的部分,面试中经常会涉及到内存模型(堆、栈、方法区等)、垃圾回收...

    掌握这些面试黑技巧offer翻倍不是事儿(上)Word范文.docx

    在求职过程中,面试是至关重要的环节,而面试的准备不仅限于专业知识的积累,还包括了形象、仪态、言谈举止等多方面的细节。本文主要针对面试前的准备工作,提供了一些实用的“黑技巧”,帮助求职者提升面试成功率。...

    掌握这些面试黑技巧offer翻倍不是事儿(下)Word模板.docx

    在面试过程中,掌握一定的策略和技巧能够显著提升获得Offer的成功率。以下是一些关于面试的实用建议,尤其针对自由提问环节: 1. **自我介绍的引导作用**:自我介绍不仅是为了让面试官了解你,更是为了引导他们提出...

    掌握这些面试黑技巧offer翻倍不是事儿(中)Word模板.docx

    在面试过程中,自我介绍是向面试官展示自己能力和特质的重要环节。一个好的自我介绍可以帮助求职者在众多竞争者中脱颖而出,增加获得理想Offer的机会。以下是对自我介绍环节中需要注意的关键点的详细解析: 1. **...

    FPGA设计系列资料.zip

    《FPGA设计系列资料》是一份综合性的学习资源,涵盖了硬件工程师面试的必备知识点以及FPGA设计的核心技术。这份资料旨在帮助对FPGA设计感兴趣的工程师提升技能,为面试做好充分准备,同时也为已经在职的工程师提供...

    RPC那些事儿

    RPC(Remote Procedure Call)协议是计算机通信中的一种技术,它允许程序通过网络调用远程机器上的函数或方法,就像调用本地函数一样简单。RPC协议的核心思想是隐藏底层的网络通信细节,使得开发者能专注于应用逻辑...

    2021互联网大厂Java架构师面试题突击视频教程

    46_体验一下面试官对于分库分表这个事儿的一个连环炮 47_来来来!咱们聊一下你们公司是怎么玩儿分库分表的? 48_你们当时是如何把系统不停机迁移到分库分表的? 49_好啊!那如何设计可以动态扩容缩容的分库分表方案...

    Java程序员 上班那点事儿.pdf

    ### Java程序员 上班那点事儿 #### 知识点概览 1. **技术全面性与实际需求的差异** - 应聘者的技能全面但缺乏针对性。 - 企业需求更加具体化。 2. **求职者的自我认知与定位** - 如何明确自己的职业定位。 - ...

    公开课第四节:软件测试人员面试的技巧和互联网大厂真题分享.mp4

    公开课第五节:测试管理的那些事儿.mp4 公开课第六节:自动化测试的设计模式.mp4 公开课第七节(1):自动化测试的设计模式2.avi 公开课第八节:自动化测试的设计模式3.avi 公开课第九节:多线程和自动化测试的并发...

Global site tag (gtag.js) - Google Analytics