在Java面试中,掌握核心知识点至关重要,以下是对给出的15道Java面试题的解析: 1. **字符串常量池**: - 题目:`String str1 = "hello"; String str2 = "he" + new String("llo"); System.err.println(str1 == str2);` - 答案:`str1` 和 `str2` 在内存中的存储不同。`str1` 直接引用字符串常量池中的 "hello",而 `str2` 是通过拼接创建的新对象,因此 `str1 == str2` 返回 `false`。 2. **整型溢出**: - 题目:`int i = Integer.MAX_VALUE; System.err.println((i+1) < i);` - 答案:当整数达到最大值时,再加1会溢出并导致数值变为最小值,因此 `(i+1) < i` 为真。 3. **垃圾收集器**: - 题目:检查GC线程的性质 - 答案:GC线程是由JVM启动的非用户线程(native thread),它不是由`Thread`类直接创建的。它们通常设置为守护线程(daemon thread)。 4. **volatile关键字**: - 题目:使用`ExecutorService`并发修改`volatile`变量`count` - 答案:`volatile`关键字能确保变量的可见性,但不能保证原子性。在多线程环境下,对`count`的并发修改可能导致数据不一致,所以输出表明`volatile`不能保证线程安全。 5. **ArrayList扩容**: - 题目:向容量为20的`ArrayList`添加元素 - 答案:虽然初始容量为20,但当添加元素时,如果超过容量,`ArrayList`会自动扩容。由于题目中没有实际执行添加操作,因此不会触发扩容,输出表示`list grow 0 times`。 6. **BufferedReader构造**: - 题目:创建`BufferedReader`时传入`FileInputStream` - 答案:`BufferedReader`的构造函数需要一个`Reader`类型的参数,而不是`InputStream`类型。正确的做法是先将`FileInputStream`转换为`BufferedReader`,例如使用`new BufferedReader(new InputStreamReader(new FileInputStream("a.dat")))`。 7. **异常处理**: - 题目:处理`IOException`时的异常捕获顺序 - 答案:代码首先捕获`IOException`,然后是`FileNotFoundException`,最后是`Exception`。因为`IOException`是`FileNotFoundException`的父类,所以`FileNotFoundException`的`catch`块永远不会被执行,输出为`IOException!`。 8. **字符串连接效率**: - 题目:未给出具体题目,但通常涉及字符串连接的效率问题。 - 知识点:在Java中,使用`StringBuilder`或`StringBuffer`进行字符串连接比使用`+`操作符更高效,特别是在循环中。 这些题目涵盖了Java基础、并发编程、异常处理、内存管理等多个重要领域,是面试中常见的测试点。理解并能解答这些问题,有助于提升Java程序员的专业素养。
剩余6页未读,继续阅读
- 粉丝: 8
- 资源: 855
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 学校课程软件工程常见10道题目以及答案demo
- javaweb新手开发中常见的目录结构讲解
- 新手小白的git使用的手册入门学习demo
- 基于Java观察者模式的info-express多对多广播通信框架设计源码
- 利用python爬取豆瓣电影评分简单案例demo
- 机器人开发中常见的几道问题以及答案demo
- 基于SpringBoot和layuimini的简洁美观后台权限管理系统设计源码
- 实验报告五六代码.zip
- hdw-dubbo-ui基于vue、element-ui构建开发,实现后台管理前端功能.zip
- (Grafana + Zabbix + ASP.NET Core 2.1 + ECharts + Dapper + Swagger + layuiAdmin)基于角色授权的权限体系.zip