java深入源码级的面试题(二)

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

1、对象无引用,只有自身一个节点, 当触发GC时就会被标记清除
2、对象不是强引用,属于弱引用、虚引用,或者对象本身就是空对象时,当内存不够时就会被GC掉

讲一下常见编码方式?

ASCII码、Unicode、utf-8 等

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

中文占3到4个字节 int 占 4个字节

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

静态代理:自己编写代理类,再编译期就完成。一般用于原对象的功能扩展,但又不会破坏原来接口协议格式
动态代理:一般基于系统Proxy,调用系统方法实现代码在运行期动态生成需要的代理类。这样相对而言比静态代码要灵活,实际项目中使用的也最多,不会造成功能对象和代理对象的紧耦合

Java的异常体系

java.lang.Throwable为所有异常的超类:分为错误Error异常Exception两大类:
异常的种类也有很多,一般分为运行时异常RuntimeException和非运行时异常,一般的数组越界、空指针等都是运行时异常;而数据库、文件读写出现的异常基本都是非运行时异常,代码不做处理编译通不过。
一般异常处理流程:
try{
//可能发生异常的地方
}
catch(Exception e){
//抛出异常
}
finally{
//不管发没发生异常都要执行
}

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

解析:在编译阶段就直接把一部分方法的符号引用转化为直接引用,方法在程序真正运行之前就有一个可确定的调用版本,并且这个方法的调用版本在运行期是不可改变的。换句话说,调用目标在程序代码写好、编译器进行编译时就必须确定下来
分派:针对重写、多态的方法,在运行期去确定该动态调用那个方法
从java 虚拟机内部原理入手分析解析和分派:
//www.greatytc.com/p/355ae3bcec41

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

该对象超类Object 类的equals方法

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

父类引用指向子类对象

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

ObjectOutputStream obj=new ObjectOutputStream(new FileOutputStream("xxx.txt"));
obj.writeObject(new Pepole("name",yangyong);
obj.close();

说说你对Java反射的理解

java反射提供了一种代码运行时动态改变其属性的可能,我们写的所有java文件经过编译阶段都会生成class文件,然后进入JVM虚拟机进行class加载链接运行,然而反射就是把我们JVM中运行calss文件的各种属性、变量、方法等反射成相应的对象,让我们可以对其进行修改
获取反射对象可以:getClassLoader() ,getClass()
反射会消耗系统性能,我们不应该滥用反射

说说你对Java注解的理解

java中注解类似于生活中标签的作用,就是用我们的标签(元数据),对想标注的物品(对象、方法)进行标注,注入我们定义好的属性的值,当我们需要的时候进行获取解析(可以是编译器生成字节码,或者通过反射获取注解对象)时就可以知道这个东西代表什么东西,有那些属性

说说你对依赖注入的理解

依赖注入:张三写代码---->代码开放接口,注入一个程序员即可以完成,即实现一个程序员的引用指向一个张三实例,然后把所创建的对象设置到写代码任务中, 这个过程就是依赖注入,完成了一个控制反转
很多优秀的框架都使用的依赖注入,如butterkife、dagger2 .
butterkife中我们只需要把我们的控件ID通过@BindView注入进去完成了控件初始化
dagger2中:
DaggerXXXComponent
.builder()
.appComponent(appComponent)
.controlCarModule(new XXXModule(this))
.build()
.inject(this);
这几行代码也是一个依赖注入,把appComponent、XXXModule、this注入编译期生成好的DaggerXXXComponent类中,以提供我们整个dagger2需要的数据源

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

泛型让编程人员能够使用类型抽象,通常用于集合里面,可以使用通配符:
上界通配符<T extends Integer>
下界通配符<T super String>
方法参数集合通配符List<?>
对类型的抽象,更够使代码为通用,我们可以定义泛型类、泛型方法、含通配符的列表等

Java中String的了解

String是常量,所以储存肯定是再常量池中,如果是String对象那又不一样,那会存于堆中
//www.greatytc.com/p/2f209af80f84
操作对比:
String a="hello ";
String b=a+"world";
String c="hello "+"world";
String d="hello world";
b==d //false
c==d //true

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

1、线程安全
2、原子操作
3、对象变化得到了避免

Object类的equal和hashCode方法重写,为什么?

因为当把Object对象放到集合中时,通过Equals比较对象,不做处是理还会出现重复的问题,根据hash原则,对象的映射地址是根据算法生成,因为hash碰撞的存在,即两个不同的对象hash地址可能一样的情况,这样在hash地址相等的情况下还需要去重写equal方法进行比较
有两种办法可以解决这个问题,第一个就是重写Object类的equal和hashCode方法;第二个就是把对象转换成String再放入集合中,因为String类源码已经重写了这两个方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容

  • 注:都是在百度搜索整理的答案,如有侵权和错误,希告知更改。 一、哪些情况下的对象会被垃圾回收机制处理掉  当对象对...
    Jenchar阅读 3,224评论 3 2
  • 三重:代码、底层内存、源码 第一阶段:开发常用JavaSE基础、IDE、Maven、Gradle、SVN、Git、...
    guodd369阅读 16,543评论 1 44
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,632评论 18 399
  • 这是白云兰子陪伴你的第380天 我们的生活中,随时要面对“选择”,相信不?亲们,放松假期里,看看我的选择还有我选择...
    白云兰子阅读 387评论 0 3
  • 2.14 情人节,一个浪漫的节日。 早上打开手机看到微信上关于情人节的各种图片消息,比如:“喜欢是咋见之欢,爱情是...
    慧说早安阅读 374评论 2 5