面试之Java基础

1、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
  • 在switch(expr1)中,expr1只能是一个整数表达式(int基本类型或Integer包装类型)或枚举常量。由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。在JDK7.0中引入了新特性,witch语句可以接收一个String类型的值,String可以作用在switch语句上。然而long是不能作用于swtich语句中。
2、数组有没有length()方法? 字符串有没有length()方法? 集合有没有length()方法?
  • 数组求长度用length属性;字符串求长度用length()方法;集合求长度用size()方法。
3、构造器(constructor)是否可被重写(override)?
  • Constructor不能被继承,所以Constructor也就不能被override。每一个类必须有自己的构造函数,负责构造自己这部分的构造。子类不会覆盖父类的构造函数,相反必须负责在一开始调用父类的构造函数。
4、描述一下JVM加载class文件的原理机制?
  • JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。
  • 由于Java的跨平台性,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的.class文件中的数据读入到内存中,通常是创建一个字节数组读入.class文件,然后产生与所加载类对应的Class对象。加载完成后,Class对象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。最后JVM对类进行初始化,包括:1)如果类存在直接的父类并且这个类还没有被初始化,那么就先初始化父类;2)如果类中存在初始化语句,就依次执行这些初始化语句。
5、Java中,char型变量中能不能存储一个中文汉字,为什么?
  • char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。
6、Java 中会存在内存泄漏吗,请简单描述。
  • 理论上Java因为有垃圾回收机制(GC)不会存在内存泄露问题;然而在实际开发中,可能会存在无用但可达的对象,这些对象不能被GC回收,因此也会导致内存泄露的发生
    。如Hibernate的Session(一级缓存)中的对象属于持久态,垃圾回收器是不会回收这些对象的,然而这些对象中可能存在无用的垃圾对象,如果不及时关闭或清空一级缓存就可能导致内存泄露。

参考:
https://blog.csdn.net/jackfrued/article/details/44921941
https://blog.csdn.net/jackfrued/article/details/44931137
https://blog.csdn.net/jackfrued/article/details/44931161

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值