一线互联网公司工作了几年,我作为求职者参加了不少面试,也作为面试官面试了很多同学,整理这份面试指南,一方面是帮助大家更好的准备面试,有的放矢,另一方面也是对自己知识框架做一个体系化的梳理。

这篇文章梳理了Java核心技术常见面试题,整理了120道题目,包括Java基础、集合框架、并发编程、NIO、反射等部分的内容。JVM和垃圾回收部分的内容比较多,会在下一篇博客中单独写。

除了Java核心技术题目,还会梳理虚拟机,Spring,Dubbo,Spring Cloud,分布式系统,数据库模块的面试题,以及阿里,腾讯,百度等互联网一线大厂的面试真题。
在一些高级岗位的面试中有一类区分度比较高的 System Design 系统设计类问题,如秒杀系统,微博评论系统设计等,也会进行专门的解析。
针对准备参加海外IT公司面试的同学,还会梳理LeetCode和剑指Offer的经典算法题目,以及Google,Facebook等硅谷公司的面试真题,最后目标是形成一个互联网面试指南,我的公众号和博客会第一时间发布,敬请期待。

语法基础

  1. 面向对象的特征有哪些方面?
  2. hashCode和equals方法的理解?
  3. 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
  4. 深拷贝和浅拷贝区别?
  5. &和&&的区别?
  6. Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
  7. switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
  8. 用最有效率的方法计算2乘以8?
  9. 数组有没有length()方法?String有没有length()方法?
  10. 在Java中,如何跳出当前的多重嵌套循环?
  11. 构造器(constructor)是否可被重写(override)?
  12. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
  13. 重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?
  14. 为什么不能根据返回类型来区分重载?
  15. 抽象类(abstract class)和接口(interface)有什么异同?
  16. 阐述静态变量和实例变量的区别?
  17. 静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?
  18. 接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?
  19. 一个".Java"源文件中是否可以包含多个类(不是内部类)?有什么限制?
  20. Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口?
  21. 内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?
  22. Java中是如何支持正则表达式操作的?

基本数据类型

  1. String是基本数据类型吗?
  2. float f=3.4;是否正确?
  3. int和Integer有什么区别?
  4. 是否可以继承String类?为什么?
  5. String和StringBuilder、StringBuffer的区别?
  6. char 型变量中能不能存贮一个中文汉字,为什么?
  7. String s = new String("xyz");创建了几个字符串对象?
  8. Java 中的final关键字有哪些用法?
  9. 如何实现字符串的反转及替换?
  10. 什么时候用断言(assert)?

集合框架

  1. ArrayList和LinkedList有什么差别?
  2. 在哪种场景里应当用ArrayList(或LinkedList)?
  3. 有没有有顺序的Map实现类,如果有,他们是怎么保证有序的?
  4. List,Set,Map三者的区别及总结?
  5. HashMap 和 Hashtable 的区别?
  6. HashSet 和 HashMap 区别?
  7. HashMap 和 ConcurrentHashMap 的区别?
  8. hashmap和hashtable和concurrenthashmap区别和比较?
  9. HashSet如何检查重复?
  10. comparable 和 comparator的区别?
  11. 如何对Object的list排序?
  12. 如何实现数组与List的相互转换?
  13. 如何求ArrayList集合的交集、并集、差集、去重复并集?
  14. 说说HashMap 的工作原理及代码实现?
  15. ConcurrentHashMap 的工作原理及代码实现?
  16. 哪些集合类是线程安全的?
  17. Iterator 怎么使用?有什么特点?
  18. Collection和Collections的区别?
  19. List、Map、Set三个接口存取元素时,各有什么特点?
  20. Collections工具类中的sort()方法如何比较元素?
  21. TreeMap和TreeSet在排序时如何比较元素?

IO/NIO

  1. IO和NIO的区别?
  2. Java中有几种类型的流?
  3. 如何用Java代码列出一个目录下所有的文件?
  4. XML文档定义有几种形式?
  5. 解析XML文档有哪几种方式?

反射和动态代理

  1. 什么是反射?
  2. 获得一个类的类对象有哪些方式?
  3. 如何通过反射创建对象?
  4. 如何通过反射获取和设置对象私有字段的值?
  5. 如何通过反射调用对象的方法?
  6. 动态代理是什么?有哪些应用?
  7. 什么是 Java 序列化?什么情况下需要序列化?
  8. 如何实现对象克隆?
  9. 怎么实现动态代理?
  10. 动态代理的不同实现方式相应的优缺点?

并发编程

  1. 并行和并发有什么区别?
  2. 举例说明同步和异步
  3. ThreadLocal的原理是什么?
  4. 使用ThreadLocal有哪些注意事项?
  5. Java中能创建volatile数组吗?
  6. volatile 能使得一个非原子操作变成原子操作吗?
  7. volatile的原理,作用,能代替锁么?
  8. Java中有哪些锁?以及他们的区别?
  9. JDK8中对HashMap做了怎样的优化?
  10. 多线程的几种实现方式?
  11. Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别?
  12. 线程的sleep()方法和yield()方法有什么区别?
  13. sleep和sleep(0)的区别?
  14. 乐观锁,悲观锁有什么区别?
  15. Lock与Synchronized的区别?
  16. 守护线程是什么?
  17. 说一下 runnable 和 callable 有什么区别?
  18. notify()和 notifyAll()有什么区别?
  19. 说一下 synchronized 底层实现原理?
  20. synchronized 和 volatile 的区别是什么?
  21. synchronized 和 ReentrantLock 区别是什么?
  22. 当一个线程进入一个对象的synchronized方法A之后,其它线程是否可进入此对象的synchronized方法B?
  23. 多线程中 synchronized 锁升级的原理是什么?
  24. 什么是死锁?怎么防止死锁?
  25. 说一下 atomic 的原理?

线程池

  1. 线程的基本状态以及状态之间的关系?
  2. 什么是线程池(thread pool)?
  3. 创建线程池有哪几种方式?
  4. 线程池都有哪些状态?
  5. 线程池中 submit() 和 execute() 方法有什么区别?
  6. 说出与线程同步以及线程调度相关的方法?
  7. 启动一个线程是调用run()还是start()方法?
  8. 工具类Executors里面提供了哪些静态工厂方法?
  9. 简述synchronized 和Java.util.concurrent.locks.Lock的异同?

异常

  1. Error和Exception有什么区别?
  2. 运行时异常与受检异常有何异同?
  3. 列出一些你常见的运行时异常?
  4. 阐述final、finally、finalize的区别。
  5. throw 和 throws 的区别?

JDBC

  1. 阐述JDBC操作数据库的步骤?
  2. Statement和PreparedStatement有什么区别?哪个性能更好?
  3. 在进行数据库编程时,连接池有什么作用?
  4. JDBC中如何进行事务处理?
  5. JDBC能否处理Blob和Clob?

JDK特性

  1. Lambda表达式有哪些应用?
  2. JDK 8的Fork/Join框架了解吗?
  3. List、Set、Map是否继承自Collection接口?

总结

这篇博客梳理了Java核心技术的面试题,限于篇幅,这里不对面试题做解答,涉及的知识点解析,会在公众号及博客中发布。闲言不多说,下一篇文章中整理JVM和垃圾回收的高频面试题。

面试必备!Java核心技术100+面试题的更多相关文章

  1. AI面试必备/深度学习100问1-50题答案解析

    AI面试必备/深度学习100问1-50题答案解析 2018年09月04日 15:42:07 刀客123 阅读数 2020更多 分类专栏: 机器学习   转载:https://blog.csdn.net ...

  2. BAT面试必备——Java 集合类

    本文首发于我的个人博客:尾尾部落 1. Iterator接口 Iterator接口,这是一个用于遍历集合中元素的接口,主要包含hashNext(),next(),remove()三种方法.它的一个子接 ...

  3. 互联网校招面试必备——Java多线程

    本文首发于我的个人博客:尾尾部落 本文是我刷了几十篇一线互联网校招java后端开发岗位的面经后总结的多线程相关题目,虽然有点小长,但是面试前看一看,相信能帮你轻松啃下多线程这块大骨头. 什么是进程,什 ...

  4. 【面试必备】Swift 面试题及其答案

    原文:Swift Interview Questions and Answers 原作者:Antonio Bello 原作者介绍: Antonio 拥有丰富的编程经验.他开始编程的时候,内存单位还是 ...

  5. 面试必备——Java多线程与并发(一)

    1.进程和线程的 (1)由来 1)串行 最初的计算机只能接受一些特定的指令,用户输入一个指令,计算机就做出一个操作.当用户在思考或者输入时,计算机就在等待.显然这样效率低下,在很多时候,计算机都处在等 ...

  6. 面试必备——Java多线程与并发(二)

    1.synchroized相关(锁的是对象,不是代码) (1)线程安全问题的主要原因 存在共享数据(也称临界资源) 存在多线程共同操作这些共享数据 解决:同一时刻有且只有一个线程在操作共享数据,其他线 ...

  7. 【面试必备】常见Java面试题大综合

    一.Java基础 1.Arrays.sort实现原理和Collections.sort实现原理答:Collections.sort方法底层会调用Arrays.sort方法,底层实现都是TimeSort ...

  8. Java 最常见的 200+ 面试题:面试必备

    这份面试题,包含的内容了十九了模块:Java 基础.容器.多线程.反射.对象拷贝.Java Web 模块.异常.网络.设计模式.Spring/Spring MVC.Spring Boot/Spring ...

  9. Java面试必备知识

    JAVA面试必备知识 第一,谈谈final, finally, finalize的区别. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可 ...

随机推荐

  1. Laravel -- Excel 导入(import) (v2.1.0)

    原博客地址 https://www.jianshu.com/p/7287ebdc77bb Install (安装) //> composer.json 中 require中添加如下: " ...

  2. 2018-2-13-wpf-GifBitmapDecoder-解析-gif-格式

    title author date CreateTime categories wpf GifBitmapDecoder 解析 gif 格式 lindexi 2018-2-13 17:23:3 +08 ...

  3. bash: : Too many levels of symbolic links

    ln -s 时 bash: : Too many levels of symbolic links改为绝对路径,

  4. linux zookeeper开机启动

    1.在zkEnv.sh中指定当前用户jdk环境变量 export JAVA_HOME=/usr/local/src/jdk1.7.0_55/ 2.在/etc/rc.d/init.d文件夹下创建zook ...

  5. 牛客多校第3场 J 思维+树状数组+二分

    牛客多校第3场 J 思维+树状数组+二分 传送门:https://ac.nowcoder.com/acm/contest/883/J 题意: 给你q个询问,和一个队列容量f 询问有两种操作: 0.访问 ...

  6. [微信跳转浏览器]微信跳转外部浏览器下载APP源码,可以实现自动跳转外部浏览器打开链接

    基于微信后端开发了一款微信推广助手,使用了本程序生成的链接,用户在微信任意环境下点击链接或者扫描二维码,可以实现直接跳转手机默认浏览器并打开指定网页. 我们开发的此款跳转产品,应用范围广泛.除了下载A ...

  7. 初识Contiv

    Contiv是一个用于跨虚拟机.裸机.公有云或私有云的异构容器部署的开源容器网络架构.作为业界最强大的容器网络架构,Contiv具有2层.3层.overlay和ACI模式,能够与思科基础设施进行本地集 ...

  8. IntelliJ IDEA+springboot+jdbctemplet+easyui+maven+oracle搭建简易开发框架(一)

    前言: 这两天为了巩固easyui的各个控件用法,搭建了一个简易的框架用于开发,大家可以用来参考,如果发现文章中有哪些不正确不合理的地方,也请各位不吝赐教,感激不尽.文章最下面有源码,可以用于参考.整 ...

  9. springboot 简单邮件发送

    写作原因: 项目接近尾声,需求一变再变,其实技术点从未改变,只是业务逻辑的变更,发送邮件提醒的功能,两个月变更七次.我想把技术点记录下来,这里无关乎业务,只有发送邮件的功能. 邮件发送准备说明: 由于 ...

  10. Vue+Element实现网页版个人简历系统

    这篇文章介绍一个使用Vue+Element实现的个人简历系统,主要用到的技术有:vue.element.css3.css定位. 作者在window10进行开发,目前只在chrome上进行过测试,没有大 ...