点击上方“好好学java”,选择“置顶公众号”

优秀学习资源、干货第一时间送达!

好好学java

java知识分享/学习资源免费分享

关注

精彩内容

java实战练习项目教程

全网最全电子图书分享

你所需要的大数据视频教程

java全套学习视频教程及源码

1、你对String对象的intern()熟悉么?

intern()方法会首先从常量池中查找是否存在该常量值,如果常量池中不存在则现在常量池中创建,如果已经存在则直接返回. 比如 String s1=”aa”; String s2=s1.intern(); System.out.print(s1==s2);//返回true

2、Object中有哪些公共方法?

  • equals()

  • clone()

  • getClass()

  • notify(),notifyAll(),wait()

  • toString

3、java当中的四种引用

强引用,软引用,弱引用,虚引用.不同的引用类型主要体现在GC上:

  • 强引用:如果一个对象具有强引用,它就不会被垃圾回收器回收。即使当前内存空间不足,JVM也不会回收它,而是抛出 OutOfMemoryError 错误,使程序异常终止。如果想中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象

  • 软引用:在使用软引用时,如果内存的空间足够,软引用就能继续被使用,而不会被垃圾回收器回收,只有在内存不足时,软引用才会被垃圾回收器回收。

  • 弱引用:具有弱引用的对象拥有的生命周期更短暂。因为当 JVM 进行垃圾回收,一旦发现弱引用对象,无论当前内存空间是否充足,都会将弱引用回收。不过由于垃圾回收器是一个优先级较低的线程,所以并不一定能迅速发现弱引用对象

  • 虚引用:顾名思义,就是形同虚设,如果一个对象仅持有虚引用,那么它相当于没有引用,在任何时候都可能被垃圾回收器回收。

4、WeakReference与SoftReference的区别?

这点在四种引用类型中已经做了解释,这里简单说明一下即可:
虽然 WeakReference 与 SoftReference 都有利于提高 GC 和 内存的效率,但是 WeakReference ,一旦失去最后一个强引用,就会被 GC 回收,而软引用虽然不能阻止被回收,但是可以延迟到 JVM 内存不足的时候。

5、为什么要有不同的引用类型

不像C语言,我们可以控制内存的申请和释放,在Java中有时候我们需要适当的控制对象被回收的时机,因此就诞生了不同的引用类型,可以说不同的引用类型实则是对GC回收时机不可控的妥协.有以下几个使用场景可以充分的说明:

  • 利用软引用和弱引用解决OOM问题:用一个HashMap来保存图片的路径和相应图片对象关联的软引用之间的映射关系,在内存不足时,JVM会自动回收这些缓存图片对象所占用的空间,从而有效地避免了OOM的问题.

  • 通过软引用实现Java对象的高速缓存:比如我们创建了一Person的类,如果每次需要查询一个人的信息,哪怕是几秒中之前刚刚查询过的,都要重新构建一个实例,这将引起大量Person对象的消耗,并且由于这些对象的生命周期相对较短,会引起多次GC影响性能。此时,通过软引用和 HashMap 的结合可以构建高速缓存,提供性能.

6、java中==和eqauls()的区别,equals()和`hashcode的区别

==是运算符,用于比较两个变量是否相等,而equals是Object类的方法,用于比较两个对象是否相等.默认Object类的equals方法是比较两个对象的地址,此时和==的结果一样.换句话说:基本类型比较用==,比较的是他们的值.默认下,对象用==比较时,比较的是内存地址,如果需要比较对象内容,需要重写equal方法

7、equals()和hashcode()的联系

hashCode()是Object类的一个方法,返回一个哈希值.如果两个对象根据equal()方法比较相等,那么调用这两个对象中任意一个对象的hashCode()方法必须产生相同的哈希值.
如果两个对象根据eqaul()方法比较不相等,那么产生的哈希值不一定相等(碰撞的情况下还是会相等的)

8、a.hashCode()有什么用?与a.equals(b)有什么关系

hashCode() 方法是相应对象整型的 hash 值。它常用于基于 hash 的集合类,如 Hashtable、HashMap、LinkedHashMap等等。它与 equals() 方法关系特别紧密。根据 Java 规范,使用 equal() 方法来判断两个相等的对象,必须具有相同的 hashcode。
将对象放入到集合中时,首先判断要放入对象的hashcode是否已经在集合中存在,不存在则直接放入集合.如果hashcode相等,然后通过equal()方法判断要放入对象与集合中的任意对象是否相等:如果equal()判断不相等,直接将该元素放入集合中,否则不放入.

9、有没有可能两个不相等的对象有相同的hashcode

有可能,两个不相等的对象可能会有相同的 hashcode 值,这就是为什么在 hashmap 中会有冲突。如果两个对象相等,必须有相同的hashcode 值,反之不成立.

10、可以在hashcode中使用随机数字吗?

不行,因为同一对象的 hashcode 值必须是相同的

11、a==b与a.equals(b)有什么区别

如果a 和b 都是对象,则 a==b 是比较两个对象的引用,只有当 a 和 b 指向的是堆中的同一个对象才会返回 true,而 a.equals(b) 是进行逻辑比较,所以通常需要重写该方法来提供逻辑一致性的比较。例如,String 类重写 equals() 方法,所以可以用于两个不同对象,但是包含的字母相同的比较。

12、3*0.1==0.3返回值是什么

false,因为有些浮点数不能完全精确的表示出来。

13、a=a+b与a+=b有什么区别吗?

+=操作符会进行隐式自动类型转换,此处a+=b隐式的将加操作的结果类型强制转换为持有结果的类型,而a=a+b则不会自动进行类型转换.如:
byte a = 127;
byte b = 127;
b = a + b; // error : cannot convert from int to byte
b += a; // ok
(译者注:这个地方应该表述的有误,其实无论 a+b 的值为多少,编译器都会报错,因为 a+b 操作会将 a、b 提升为 int 类型,所以将 int 类型赋值给 byte 就会编译出错)

14、short s1= 1; s1 = s1 + 1; 该段代码是否有错,有的话怎么改?

有错误,short类型在进行运算时会自动提升为int类型,也就是说s1+1的运算结果是int类型.

附上热门QQ群,存放资源和历史资料,500容量(低门槛付费群),长按二维码入群


长按二维码关注

“面试不败计划”: java语言基础面试题(二)相关推荐

  1. “面试不败计划”: java语言基础面试题(三)

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 好好学java java知识分享/学习资源免费分享 关注 精彩内容 java实 ...

  2. “面试不败计划”: java语言基础面试题(一)

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 好好学java java知识分享/学习资源免费分享 关注 精彩内容 java实 ...

  3. “面试不败计划”:集合知识整体总结

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 好好学java java知识分享/学习资源免费分享 关注 精彩内容 java实 ...

  4. java基础1之java语言基础1

    一.常量的概述和使用 A:什么是常量 * 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 * 字面值常量 * 自定义常量(面向对象部分讲) C:字面值常量的分类 * 字符串常量 用双引 ...

  5. 实体类 接口_Java 语言基础编程题 (二维数组, 五子棋游戏, 实体类和接口)

    原文:Java 语言基础编程题 (二维数组, 五子棋游戏, 实体类和接口, 视频讲解) 这里分享三道编程题, 下面是我个人的视频讲解 二维数组, 五子棋游戏, 实体类和接口_哔哩哔哩 (゜-゜)つロ ...

  6. JavaSE——Day1——计算机基础知识、Java语言基础、JRE与JDK

    计算机基础知识 什么是计算机? 计算机全称:电子计算机,俗称电脑.是一种能够按照程序原乡,自动.告诉处理海量数据的现代化只能电子设备.计算机由软件和硬件组成,没有安装任何软件的计算机称为课机.常见的形 ...

  7. 2、java语言基础

    java语言基础 1.关键字关键字都是小写 public类名首字母大写 Demo12.标识符在程序中自定义的一些名称.由26个英文字母大小写,数字:0-9,符号:_$数字不可以开头不可以使用关键字3. ...

  8. 【java后端学习】java语言基础(夯实基础)

    文章目录 一.基础语法 1 java中的标识符 1.1 变量命名规范 1.2 保留字 2 java中的常量 3 java基本数据类型 4 数组 5 字符及字符串 6 运算符 7 控制语句 for语句 ...

  9. day01计算机基础知识Java语言基础

    计算机基础知识(计算机概述) 计算机基础知识(软件开发和计算机语言概述) 计算机基础知识(人机交互) 计算机基础知识(键盘功能键和快捷键) 计算机基础知识(如何打开DOS控制台) 计算机基础知识(常见 ...

最新文章

  1. Parcelable与Serializable接口的用法和区别
  2. python导入其他py文件-Python如何import其它.py文件及其函数
  3. firefox 自定义快捷键
  4. windows 检测无键鼠操作时间_HP快速卡简易操作流程
  5. 为什么Jedis操作后要主动归还?
  6. python绘制饼图双层_Python入门进阶:Python绘制饼图到Microsoft Excel
  7. 设计模式之外观模式(Fasade Pattern)
  8. iphone 如何实现全屏截图
  9. Matplotlib基础(part2)--图形对象
  10. Help Jimmy POJ - 1661
  11. STL浅析——序列式容器vector的数据结构
  12. 第一节:别出心裁的HTML5简介
  13. MFC中开发ocx控件,html容器收不到ocx的事件Event
  14. 玩转SecureCRT 安装
  15. LeetCode Encode and Decode TinyURL
  16. C语言宏的特殊用法和几个坑
  17. SpringBoot日志logback-spring.xml分环境
  18. mybatis plugins_[Mybatis]-[基础支持层]-插件-多个插件执行顺序
  19. DSP技术是利用计算机或,什么是dsp技术?dsp技术有哪些应用?
  20. 工作中使用BBM:消费者的“闺蜜”级顾问 凯特周智囊团

热门文章

  1. 优秀软件开发者必须具备的能力
  2. 苹果系统的优点和缺点
  3. 恢复误删数据(SQL Server 2000)--Log Explorer
  4. 爬虫篇——selenium(webdriver)进行用户登录并爬取数据)
  5. 可视化篇(四)——— python绘制双y轴、箱线图、概率分布三种图形及案例
  6. 计算机网络第六章ppt课件,计算机网络与通信(第6章).ppt
  7. Keras实现seq2seq案例代码:Bi-LSTM
  8. 文本挖掘预处理:向量化与Hash Trick
  9. word2vec原理(一): 词向量、CBOW与Skip-Gram模型基础
  10. CSS基本选择器(元素选择器、类选择器、id选择器)