面试必备!Java核心技术100+面试题
一线互联网公司工作了几年,我作为求职者参加了不少面试,也作为面试官面试了很多同学,整理这份面试指南,一方面是帮助大家更好的准备面试,有的放矢,另一方面也是对自己知识框架做一个体系化的梳理。
这篇文章梳理了Java核心技术常见面试题,整理了120道题目,包括Java基础、集合框架、并发编程、NIO、反射等部分的内容。JVM和垃圾回收部分的内容比较多,会在下一篇博客中单独写。

除了Java核心技术题目,还会梳理虚拟机,Spring,Dubbo,Spring Cloud,分布式系统,数据库模块的面试题,以及阿里,腾讯,百度等互联网一线大厂的面试真题。
在一些高级岗位的面试中有一类区分度比较高的 System Design 系统设计类问题,如秒杀系统,微博评论系统设计等,也会进行专门的解析。
针对准备参加海外IT公司面试的同学,还会梳理LeetCode和剑指Offer的经典算法题目,以及Google,Facebook等硅谷公司的面试真题,最后目标是形成一个互联网面试指南,我的公众号和博客会第一时间发布,敬请期待。
语法基础
- 面向对象的特征有哪些方面?
- hashCode和equals方法的理解?
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- 深拷贝和浅拷贝区别?
- &和&&的区别?
- Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
- switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
- 用最有效率的方法计算2乘以8?
- 数组有没有length()方法?String有没有length()方法?
- 在Java中,如何跳出当前的多重嵌套循环?
- 构造器(constructor)是否可被重写(override)?
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?
- 为什么不能根据返回类型来区分重载?
- 抽象类(abstract class)和接口(interface)有什么异同?
- 阐述静态变量和实例变量的区别?
- 静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?
- 接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?
- 一个".Java"源文件中是否可以包含多个类(不是内部类)?有什么限制?
- Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口?
- 内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?
- Java中是如何支持正则表达式操作的?
基本数据类型
- String是基本数据类型吗?
- float f=3.4;是否正确?
- int和Integer有什么区别?
- 是否可以继承String类?为什么?
- String和StringBuilder、StringBuffer的区别?
- char 型变量中能不能存贮一个中文汉字,为什么?
- String s = new String("xyz");创建了几个字符串对象?
- Java 中的final关键字有哪些用法?
- 如何实现字符串的反转及替换?
- 什么时候用断言(assert)?
集合框架
- ArrayList和LinkedList有什么差别?
- 在哪种场景里应当用ArrayList(或LinkedList)?
- 有没有有顺序的Map实现类,如果有,他们是怎么保证有序的?
- List,Set,Map三者的区别及总结?
- HashMap 和 Hashtable 的区别?
- HashSet 和 HashMap 区别?
- HashMap 和 ConcurrentHashMap 的区别?
- hashmap和hashtable和concurrenthashmap区别和比较?
- HashSet如何检查重复?
- comparable 和 comparator的区别?
- 如何对Object的list排序?
- 如何实现数组与List的相互转换?
- 如何求ArrayList集合的交集、并集、差集、去重复并集?
- 说说HashMap 的工作原理及代码实现?
- ConcurrentHashMap 的工作原理及代码实现?
- 哪些集合类是线程安全的?
- Iterator 怎么使用?有什么特点?
- Collection和Collections的区别?
- List、Map、Set三个接口存取元素时,各有什么特点?
- Collections工具类中的sort()方法如何比较元素?
- TreeMap和TreeSet在排序时如何比较元素?
IO/NIO
- IO和NIO的区别?
- Java中有几种类型的流?
- 如何用Java代码列出一个目录下所有的文件?
- XML文档定义有几种形式?
- 解析XML文档有哪几种方式?
反射和动态代理
- 什么是反射?
- 获得一个类的类对象有哪些方式?
- 如何通过反射创建对象?
- 如何通过反射获取和设置对象私有字段的值?
- 如何通过反射调用对象的方法?
- 动态代理是什么?有哪些应用?
- 什么是 Java 序列化?什么情况下需要序列化?
- 如何实现对象克隆?
- 怎么实现动态代理?
- 动态代理的不同实现方式相应的优缺点?
并发编程
- 并行和并发有什么区别?
- 举例说明同步和异步
- ThreadLocal的原理是什么?
- 使用ThreadLocal有哪些注意事项?
- Java中能创建volatile数组吗?
- volatile 能使得一个非原子操作变成原子操作吗?
- volatile的原理,作用,能代替锁么?
- Java中有哪些锁?以及他们的区别?
- JDK8中对HashMap做了怎样的优化?
- 多线程的几种实现方式?
- Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别?
- 线程的sleep()方法和yield()方法有什么区别?
- sleep和sleep(0)的区别?
- 乐观锁,悲观锁有什么区别?
- Lock与Synchronized的区别?
- 守护线程是什么?
- 说一下 runnable 和 callable 有什么区别?
- notify()和 notifyAll()有什么区别?
- 说一下 synchronized 底层实现原理?
- synchronized 和 volatile 的区别是什么?
- synchronized 和 ReentrantLock 区别是什么?
- 当一个线程进入一个对象的synchronized方法A之后,其它线程是否可进入此对象的synchronized方法B?
- 多线程中 synchronized 锁升级的原理是什么?
- 什么是死锁?怎么防止死锁?
- 说一下 atomic 的原理?
线程池
- 线程的基本状态以及状态之间的关系?
- 什么是线程池(thread pool)?
- 创建线程池有哪几种方式?
- 线程池都有哪些状态?
- 线程池中 submit() 和 execute() 方法有什么区别?
- 说出与线程同步以及线程调度相关的方法?
- 启动一个线程是调用run()还是start()方法?
- 工具类Executors里面提供了哪些静态工厂方法?
- 简述synchronized 和Java.util.concurrent.locks.Lock的异同?
异常
- Error和Exception有什么区别?
- 运行时异常与受检异常有何异同?
- 列出一些你常见的运行时异常?
- 阐述final、finally、finalize的区别。
- throw 和 throws 的区别?
JDBC
- 阐述JDBC操作数据库的步骤?
- Statement和PreparedStatement有什么区别?哪个性能更好?
- 在进行数据库编程时,连接池有什么作用?
- JDBC中如何进行事务处理?
- JDBC能否处理Blob和Clob?
JDK特性
- Lambda表达式有哪些应用?
- JDK 8的Fork/Join框架了解吗?
- List、Set、Map是否继承自Collection接口?
总结
这篇博客梳理了Java核心技术的面试题,限于篇幅,这里不对面试题做解答,涉及的知识点解析,会在公众号及博客中发布。闲言不多说,下一篇文章中整理JVM和垃圾回收的高频面试题。
面试必备!Java核心技术100+面试题的更多相关文章
- AI面试必备/深度学习100问1-50题答案解析
AI面试必备/深度学习100问1-50题答案解析 2018年09月04日 15:42:07 刀客123 阅读数 2020更多 分类专栏: 机器学习 转载:https://blog.csdn.net ...
- BAT面试必备——Java 集合类
本文首发于我的个人博客:尾尾部落 1. Iterator接口 Iterator接口,这是一个用于遍历集合中元素的接口,主要包含hashNext(),next(),remove()三种方法.它的一个子接 ...
- 互联网校招面试必备——Java多线程
本文首发于我的个人博客:尾尾部落 本文是我刷了几十篇一线互联网校招java后端开发岗位的面经后总结的多线程相关题目,虽然有点小长,但是面试前看一看,相信能帮你轻松啃下多线程这块大骨头. 什么是进程,什 ...
- 【面试必备】Swift 面试题及其答案
原文:Swift Interview Questions and Answers 原作者:Antonio Bello 原作者介绍: Antonio 拥有丰富的编程经验.他开始编程的时候,内存单位还是 ...
- 面试必备——Java多线程与并发(一)
1.进程和线程的 (1)由来 1)串行 最初的计算机只能接受一些特定的指令,用户输入一个指令,计算机就做出一个操作.当用户在思考或者输入时,计算机就在等待.显然这样效率低下,在很多时候,计算机都处在等 ...
- 面试必备——Java多线程与并发(二)
1.synchroized相关(锁的是对象,不是代码) (1)线程安全问题的主要原因 存在共享数据(也称临界资源) 存在多线程共同操作这些共享数据 解决:同一时刻有且只有一个线程在操作共享数据,其他线 ...
- 【面试必备】常见Java面试题大综合
一.Java基础 1.Arrays.sort实现原理和Collections.sort实现原理答:Collections.sort方法底层会调用Arrays.sort方法,底层实现都是TimeSort ...
- Java 最常见的 200+ 面试题:面试必备
这份面试题,包含的内容了十九了模块:Java 基础.容器.多线程.反射.对象拷贝.Java Web 模块.异常.网络.设计模式.Spring/Spring MVC.Spring Boot/Spring ...
- Java面试必备知识
JAVA面试必备知识 第一,谈谈final, finally, finalize的区别. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可 ...
随机推荐
- JQuery仿购物网站放大镜特效所遇问题及思考
JQuery仿购物网站放大镜特效所遇问题及思考 先贴下效果图,然后描述起来也就不会不知道我在说什么了. 我碰到的问题一: 一开始我自己总结了是因为两个小原因导致的①使用了mouseover,mouse ...
- 创意app1
app名称: 与我相似的人 app目的: 旨在通过云匹配,搜索到与自己类似爱好或者性格的人用户相似的内容:衣服品牌鞋子手机笔记本键盘鼠标相机刮胡刀自行车工作 说明: 现有的格局 百度贴吧是面向多 ...
- net core WebApi——依赖注入Autofac
目录 前言 Autofac 添加一个Util来随时调用 小结 代码地址 前言 周末加班,下午犯困,整理下之前鼓捣过的东西,看过我之前的webapi系列的读者知道,我之前试过Aspect,但是升级到3. ...
- pytorch torch.Stroage();torch.cuda()
转自:https://ptorch.com/news/52.html torch.Storage是单个数据类型的连续的一维数组,每个torch.Tensor都具有相同数据类型的相应存储.他是torch ...
- .NETCore3.1中的Json互操作最全解读-收藏级
前言 本文比较长,我建议大家先点赞.收藏后慢慢阅读,点赞再看,形成习惯! 我很高兴,.NETCore终于来到了3.1LTS版本,并且将支持3年,我们也准备让部分业务迁移到3.1上面,不过很快我们就遇到 ...
- $Loj10155$ 数字转换(求树的最长链) 树形$DP$
loj Description 如果一个数x的/约数和/y(不包括他本身)比他本身小,那么x可以变成y,y 也可以变成x.限定所有数字变换在不超过n的正整数范围内进行,求不断进行数字变换且不出现重复数 ...
- 全网最详细的Ceph14.2.5集群部署及配置文件详解,快来看看吧! -- <2>
部署Ceph集群 Ceph版本选择 Ceph版本来源介绍 Ceph 社区最新版本是 14,而 Ceph 12 是市面用的最广的稳定版本. 第一个 Ceph 版本是 0.1 ,要回溯到 2008 年 1 ...
- 「UVA12004」 Bubble Sort 解题报告
UVA12004 Bubble Sort Check the following code which counts the number of swaps of bubble sort. int f ...
- docker-代理服务器
配置Docker以使用代理服务器 如果容器需要使用HTTP,HTTPS或FTP代理服务器,则可以通过不同方式对其进行配置: 在Docker 17.07及更高版本中,可以 将Docker客户端配置为自动 ...
- DZNEmptyDataSet框架阅读
前段时间使用公司封装的空白页占位视图工具,工具是对DZNEmptyDataSet框架的封装.这个框架以前在许多项目也都用过,却没有认真阅读过源码,真的很遗憾.这两天趁五一放假有空,将DZNEmpt ...