北京-京东-Java实习面经(附答案)

题目目录

1、哪些情况下的对象会被垃圾回收机制处理掉?

2、讲一下常见编码方式?

3、utf-8编码中的中文占几个字节;int型几个字节?

4、静态代理和动态代理的区别,什么场景使用?

5、Java的异常体系

6、谈谈你对解析与分派的认识。

7、修改对象A的equals方法的签名,那么使用HashMap存放这个对象实例的时候,会调用哪个equals方法?

8、Java中实现多态的机制是什么?

9、如何将一个Java对象序列化到文件里?

10、说说你对Java反射的理解

11、说说你对Java注解的理解

12、说一下泛型原理,并举例说明

13、Java中String的了解

14、String为什么要设计成不可变的?

试题详解

1、哪些情况下的对象会被垃圾回收机制处理掉?

利用可达性分析算法,虚拟机会将一些对象定义为GCRoots,从GCRoots出发沿着引用链向下寻找,如果某个对象不能通过GCRoots寻找到,虚拟机就认为该对象可以被回收掉。

1.1哪些对象可以被看做是GCRoots呢?

1)虚拟机栈(栈帧中的本地变量表)中引用的对象;

2)方法区中的类静态属性引用的对象,常量引用的对象;

3)本地方法栈中JNI(Native方法)引用的对象;

1.2对象不可达,一定会被垃圾收集器回收么?

即使不可达,对象也不一定会被垃圾收集器回收,

1)先判断对象是否有必要执行finalize()方法,对象必须重写finalize()方法且没有被运行过。

2)若有必要执行,会把对象放到一个队列中,JVM会开一个线程去回收它们,这是对象最后一次可以逃逸清理的机会。

2、讲一下常见编码方式?

编码的意义:计算机中存储的最小单元是一个字节即8bit,所能表示的字符范围是255个,而人类要表示的符号太多,无法用一个字节来完全表示,固需要将符号编码,将各种语言翻译成计算机能懂的语言。

1)ASCII码:总共128个,用一个字节的低7位表示,0〜31控制字符如换回车删除等;32~126是打印字符,可通过键盘输入并显示出来;

2)ISO-8859-1,用来扩展ASCII编码,256个字符,涵盖了大多数西欧语言字符。

3)GB2312:双字节编码,总编码范围是A1-A7,A1-A9是符号区,包含682个字符,B0-B7是汉字区,包含6763个汉字;

4)GBK为了扩展GB2312,加入了更多的汉字,编码范围是8140~FEFE,有23940个码位,能表示21003个汉字。

5)UTF-16:ISO试图想创建一个全新的超语言字典,世界上所有语言都可通过这本字典Unicode来相互翻译,而UTF-16定义了Unicode字符在计算机中存取方法,用两个字节来表示Unicode转化格式。不论什么字符都可用两字节表示,即16bit,固叫UTF-16。

6)UTF-8:UTF-16统一采用两字节表示一个字符,但有些字符只用一个字节就可表示,浪费存储空间,而UTF-8采用一种变长技术,每个编

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值