最近金三银四火热进行中,很多跳槽的小伙伴您们的福利来了,最新java面试题和答案分享给您们,看到这篇面试题肯定对你有很多帮助,京东,阿里,字节,百度,美团面试题及答案资料。 觉得文章对你有用可以 点赞+转发+关注。后台小信封回复【444】即可领取整套面试及答案资料。

Java基础篇

1. JDK 和 JRE 的区别是什么?

2. Java中有哪些数据类型?

3. == 和 equals 的区别是什么?

4. 两个对象的 hashCode() 相同,则 equals() 也一定为 true 正确吗?

5. Java 中 final 关键字的作用是什么?

6. String、StringBuffer、StringBuilder 的区别是什么?

7. String str=“donkey” 与 String str=new String(“donkey”) 一样吗?

8. 字符串如何反转?

9. String 类中常用方法都有哪些?

10. 抽象类是什么?

11. 抽象类必须要有抽象方法吗?

12. 普通类和抽象类的区别是什么?

13. 抽象类能使用 final 修饰吗?

14. 接口是什么?

15. 接口和抽象类的区别是什么?

16. Java 中 IO 流分几种?

17. BIO、NIO、AIO 有什么区别?

18. Files 的常用方法都有哪些?

代码图

 // Files.exists():检测文件路径是否存在Path path1 = Paths.get("C:\\Users\\e-yangfangchao\\Desktop\\test");System.out.println(Files.exists(path1, new LinkOption[]{LinkOption.NOFOLLOW_LINKS})); // true// Files.createFile():创建文件Path path2 = Paths.get("C:\\Users\\e-yangfangchao\\Desktop\\test\\a.txt");try {Path newFilw = Files.createFile(path2);} catch (FileAlreadyExistsException e){System.out.println("exists");} catch (IOException e) {System.out.println("other wrong");}// Files.createDirectory():创建文件夹Path path3 = Paths.get("C:\\Users\\e-yangfangchao\\Desktop\\test\\newDirectory");try {Path newDirectory = Files.createDirectory(path3);} catch (FileAlreadyExistsException e) {System.out.println("exists");} catch (IOException e){System.out.println("other wrong");}// Files.delete():删除一个文件或目录try {Files.delete(path2);} catch (IOException e) {e.printStackTrace();}// Files.copy():复制文件Path source = Paths.get("C:\\Users\\e-yangfangchao\\Desktop\\test\\b.txt");Path target = Paths.get("C:\\Users\\e-yangfangchao\\Desktop\\test\\newb.txt");try {Files.copy(source,target);} catch (FileAlreadyExistsException e) {System.out.println("targetFile already exists");} catch (IOException e){System.out.println("other wrong");}// Files.move():移动文件Path source1 = Paths.get("C:\\Users\\e-yangfangchao\\Desktop\\test\\b.txt");Path target1 = Paths.get("C:\\Users\\e-yangfangchao\\Desktop\\test\\newDirectory\\a.txt");try {Files.move(source1,target1);} catch (FileAlreadyExistsException e) {System.out.println("targetFile1 already exists");} catch (IOException e){System.out.println("other wrong");}// Files.size():查看文件个数// Files.read():读取文件// Files.write():写入文件

Java 容器篇

1. Java 中都有哪些容器?

2. Collection 和 Collections 的区别是什么?

3. List、Set、Map 之间的区别是什么?

4. HashMap 和 Hashtable 的区别是什么?

5. 如何决定使用 HashMap 还是 TreeMap?

6. HashMap 的实现原理是什么?

7. HashSet 的实现原理是什么?

8. ArrayList 和 LinkedList 的区别是什么?

9. 如何实现数组和 List 之间的转换?

10. ArrayList 和 Vector 的区别是什么?

11. Array 和 ArrayList 的区别是什么?

12. 在 Queue 中 poll() 和 remove() 的区别是什么?

13. 线程安全的集合类有哪些?

14. 迭代器 Iterator 是什么?

15. Iterator 怎么使用?有什么特点?

16. Iterator 和 ListIterator 的区别是什么?

代码图

    public static void main(String[] args) {// ListArrayList<String> list = new ArrayList<>();list.add("apple");list.add("pear");list.add("banana");Iterator<String> iterator = list.iterator();while (iterator.hasNext()){String s = iterator.next();if ("apple".equals(s)){iterator.remove();}}list.forEach(item -> System.out.println(item));// Map<key,value>Map<String,String> map=new HashMap<>();map.put("pig","猪");map.put("cat","猫");map.put("dog","狗");Iterator<String> iterator1 = map.keySet().iterator();Iterator<String> iterator2 = map.values().iterator();while (iterator1.hasNext()){System.out.println(iterator1.next());}while (iterator2.hasNext()){System.out.println(iterator2.next());}}

Java多线程

1. 并行和并发的区别是什么?

2. 线程和进程的区别是什么?

3. 守护线程是什么?

4. 创建线程有哪几种方式?

5. 说一下 runnable 和 callable 有什么区别?

6. 线程有哪些状态?

7. sleep() 和 wait() 有什么区别?

8. notify() 和 notifyAll() 有什么区别?

9. run() 和 start() 有什么区别?

10. 创建线程池有哪几种方式?

11. 线程池都有哪些状态?

12. 线程池中 submit() 和 execute() 方法有什么区别?

13. java 程序中怎么保证多线程的运行安全?

14. 多线程锁的升级原理是什么?

15. 什么是死锁?

16. 怎么防止死锁?

17. ThreadLocal 是什么?有哪些使用场景?

18. 说一下 synchronized 底层实现原理?

19. synchronized 和 volatile 的区别是什么?

20. synchronized 和 Lock 有什么区别?

21. synchronized 和 ReentrantLock 区别是什么?

22. 说一下 atomic 的原理?

代码图

package com.xykj.threadStation;
public class Station extends Thread {// 通过构造方法给线程名字赋值public Station(String name) {super(name);// 给线程名字赋值}// 为了保持票数的一致,票数要静态static int tick = 20;// 创建一个静态钥匙static Object ob = "aa";//值是任意的// 重写run方法,实现买票操作@Overridepublic void run() {while (tick > 0) {synchronized (ob) {// 这个很重要,必须使用一个锁,// 进去的人会把钥匙拿在手上,出来后才把钥匙拿让出来if (tick > 0) {System.out.println(getName() + "卖出了第" + tick + "张票");tick--;} else {System.out.println("票卖完了");}}try {sleep(1000);//休息一秒} catch (InterruptedException e) {e.printStackTrace();}}}
}

常见的Java问题

1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

2.JDK和JRE的区别是什么?

3.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

4.是否可以在static环境中访问非static变量?

5.Java支持的数据类型有哪些?什么是自动拆装箱?

6.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

7.Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

8.Java支持多继承么?

9.接口和抽象类的区别是什么?

10.什么是值传递和引用传递?

代码图

package com.thread.demo.demo3;public class MainClass {/*** 龟兔赛跑:2000米*/public static void main(String[] args) {// 实例化乌龟和兔子Tortoise tortoise = new Tortoise();Rabbit rabbit = new Rabbit();// 回调方法的使用,谁先调用calltoback方法,另一个就不跑了LetOneStop letOneStop1 = new LetOneStop(tortoise);// 让兔子的回调方法里面存在乌龟对象的值,可以把乌龟stoprabbit.calltoback = letOneStop1;LetOneStop letOneStop2 = new LetOneStop(rabbit);// 让乌龟的回调方法里面存在兔子对象的值,可以把兔子stoptortoise.calltoback = letOneStop2;// 开始跑tortoise.start();rabbit.start();}
}

Java线程

11.进程和线程的区别是什么?

12.创建线程有几种不同的方式?你喜欢哪一种?为什么?

13.概括的解释下线程的几种可用状态。

14.同步方法和同步代码块的区别是什么?

15.在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪种级别的同步?

16.什么是死锁(deadlock)?

17.如何确保N个线程可以访问N个资源同时又不导致死锁?

// 创建当前类的对象,并且调用run()方法
public class ExtendsThread extends Thread {public static void main(String[] args) {ExtendsThread t = new ExtendsThread();t.start();}@Overridepublic void run() {for (int i = 0; i < 1000; i++) {System.out.println("你是最棒的你知道么?");}}
}

Java集合类

18.Java集合类框架的基本接口有哪些?

19.为什么集合类没有实现Cloneable和Serializable接口?

20.什么是迭代器(Iterator)?

21.Iterator和ListIterator的区别是什么?

22.快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?

23.Java中的HashMap的工作原理是什么?

24.hashCode()和equals()方法的重要性体现在什么地方?

25.HashMap和Hashtable有什么区别?

26.数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?

27.ArrayList和LinkedList有什么区别?

28.Comparable和Comparator接口是干什么的?列出它们的区别。

29.什么是Java优先级队列(Priority Queue)?

30.你了解大O符号(big-O notation)么?你能给出不同数据结构的例子么?

31.如何权衡是使用无序的数组还是有序的数组?

32.Java集合类框架的最佳实践有哪些?

33.Enumeration接口和Iterator接口的区别有哪些?

34.HashSet和TreeSet有什么区别?

垃圾收集器(Garbage Collectors)

35.Java中垃圾回收有什么目的?什么时候进行垃圾回收?

36.System.gc()和Runtime.gc()会做什么事情?

37.finalize()方法什么时候被调用?析构函数(finalization)的目的是什么?

38.如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?

39.Java堆的结构是什么样子的?什么是堆中的永久代(Perm Gen space)?

40.串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?

41.在Java中,对象什么时候可以被垃圾回收?

42.JVM的永久代中会发生垃圾回收么?

异常处理

43.Java中的两种异常类型是什么?他们有什么区别?

44.Java中Exception和Error有什么区别?

45.throw和throws有什么区别?

46.异常处理的时候,finally代码块的重要性是什么?

46.异常处理完成以后,Exception对象会发生什么变化?

47.finally代码块和finalize()方法有什么区别?

Java小应用程序(Applet)

48.什么是Applet?

49.解释一下Applet的生命周期

50.当applet被载入的时候会发生什么?

51.Applet和普通的Java应用程序有什么区别?

52.Java applet有哪些限制条件?

53.什么是不受信任的applet?

54.从网络上加载的applet和从本地文件系统加载的applet有什么区别?

55.applet类加载器是什么?它会做哪些工作?

56.applet安全管理器是什么?它会做哪些工作?

Swing

57.弹出式选择菜单(Choice)和列表(List)有什么区别

58.什么是布局管理器?

59.滚动条(Scrollbar)和滚动面板(JScrollPane)有什么区别?

60.哪些Swing的方法是线程安全的?

61.说出三种支持重绘(painting)的组件。

62.什么是裁剪(clipping)?

63.MenuItem和CheckboxMenuItem的区别是什么?

64.边缘布局(BorderLayout)里面的元素是如何布局的?

65.网格包布局(GridBagLayout)里面的元素是如何布局的?

66.Window和Frame有什么区别?

67.裁剪(clipping)和重绘(repainting)有什么联系?

68.事件监听器接口(event-listener interface)和事件适配器(event-adapter)有什么关系?

69.GUI组件如何来处理它自己的事件?

70.Java的布局管理器比传统的窗口系统有哪些优势?

71.Java的Swing组件使用了哪种设计模式?

JDBC

72.什么是JDBC?

73.解释下驱动(Driver)在JDBC中的角色。

74.Class.forName()方法有什么作用?

75.PreparedStatement比Statement有什么优势?

76.什么时候使用CallableStatement?用来准备CallableStatement的方法是什么?

77.数据库连接池是什么意思?

78.什么是RMI?

79.RMI体系结构的基本原则是什么?

80.RMI体系结构分哪几层?

81.RMI中的远程接口(Remote Interface)扮演了什么样的角色?

82.java.rmi.Naming类扮演了什么样的角色?

83.RMI的绑定(Binding)是什么意思?

84.Naming类的bind()和rebind()方法有什么区别?

85.让RMI程序能正确运行有哪些步骤?

86.RMI的stub扮演了什么样的角色?

87.什么是分布式垃圾回收(DGC)?它是如何工作的?

88.RMI中使用RMI安全管理器(RMISecurityManager)的目的是什么?

89.解释下Marshalling和demarshalling。

90.解释下Serialization和Deserialization。

Servlet

91.什么是Servlet?

92.说一下Servlet的体系结构。

93.Applet和Servlet有什么区别?

94.GenericServlet和HttpServlet有什么区别?

95.解释下Servlet的生命周期。

96.doGet()方法和doPost()方法有什么区别?

97.什么是Web应用程序?

98.什么是服务端包含(Server Side Include)?

99.什么是Servlet链(Servlet Chaining)?

100.如何知道是哪一个客户端的机器正在请求你的Servlet?

101.HTTP响应的结构是怎么样的?

102.什么是cookie?session和cookie有什么区别?

103.浏览器和Servlet通信使用的是什么协议?

104.什么是HTTP隧道?

105.sendRedirect()和forward()方法有什么区别?

JSP

107.什么是JSP页面?

108.JSP请求是如何被处理的?

109.JSP有什么优点?

110.什么是JSP指令(Directive)?JSP中有哪些不同类型的指令?

111.什么是JSP动作(JSP action)?

112.什么是Scriptlets?

113.声明(Decalaration)在哪里?

114.什么是表达式(Expression)?

115.隐含对象是什么意思?有哪些隐含对象?

其他

ThreadLocal(线程变量副本)

Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量。

采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副本,每个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突。

ThreadLocal类中维护一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值为对应线程的变量副本。

ThreadLocal在Spring中发挥着巨大的作用,在管理Request作用域中的Bean、事务管理、任务调度、AOP等模块都出现了它的身影。

Spring中绝大部分Bean都可以声明成Singleton作用域,采用ThreadLocal进行封装,因此有状态的Bean就能够以singleton的方式在多线程中正常工作了。

觉得文章对你有用可以 点赞+转发+关注。后台小信封回复【444】即可领取整套面试及答案资料。

京东疯狂月薪36k程序员最新Java面试题(常见面试题及答案汇总)相关推荐

  1. 程序员面试系列,MySQL常见面试题?

    原文链接 一.索引相关的面试题 (1)索引失效的情况有哪些 在MySQL查询时,以下情况可能会导致索引失效,无法使用索引进行高效的查询: 数据类型不匹配:如果查询条件中的数据类型与索引列的数据类型不匹 ...

  2. html5退出全屏触发的方法_好程序员web前端分享HTML5常见面试题集锦二

    web前端分享HTML5常见面试题集锦第二篇,希望对大家有所帮助. 1. 方法1: html,body{height: 100%;} body{ margin: 0;display: flex; ju ...

  3. 「java工程师」常见面试题及其答案(持续更新)

    「高级java工程师」常见面试题及其答案: 「高级java工程师」常见面试题及其答案(持续更新)_好人老李的博客-CSDN博客 目录 java基础 面向对象与面向过程的区别? JRE.JDK.JVM的 ...

  4. Java后端工程师常见面试题

    以下是整理的Java后端工程师常见面试题,希望有助于找工作: 1,对Java集合框架的理解.ArrayList和LinkedList的区别和优缺点,以及使用场景.扩容因子了解吗?分别是多少. Java ...

  5. 【搞定 Java 并发面试】面试最常问的 Java 并发进阶常见面试题总结!

    本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star![Java学习 面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.觉得内容不错 ...

  6. 「高级java工程师」常见面试题及其答案(持续更新)

    「java工程师」常见面试题及其答案请见: 「java工程师」常见面试题及其答案(持续更新)_好人老李的博客-CSDN博客 目录 java基础 常用的 jvm 调优方法? OOM的常见场景及其原因.解 ...

  7. java线程池面试题有哪些?java线程池常见面试题

    进行java面试的过程中,java线程池是必问的面试题目,因为这是java的重点知识,也是在java工作中经常会遇到的,那java线程池面试题有哪些?下面来我们就来给大家讲解一下java线程池常见面试 ...

  8. Java初级面试常见面试题

    文章目录 JavaSE Java基本数据类型大小 JAVA中&&和||两种符号 抽象类不能创建对象,那么抽象类中是否有构造器 抽象类是否可以被final修饰 抽象方法可否被static ...

  9. Java并发编程—常见面试题

    建议: 学习java并发前需要先掌握JVM知识 关于下面问题档案的详细解析都在后面推荐的相关系列文章中 一.线程安全相关 1.什么叫线程安全? 线程安全就是说多线程访问同一代码,不会产生不确定的结果. ...

最新文章

  1. MongoDB update修改器: 针对Fields的$修改器 $inc $set $unset
  2. “万人迷”小冰背后的AI故事
  3. Uva - 12050 Palindrome Numbers【数论】
  4. WinForm编程细节
  5. 视频云的全景蓝图,想象力的允诺之地
  6. 周末,说声php的settergetter(魔术)方法,你们辛苦了
  7. 实现TFrecords文件的保存与读取
  8. servlet3.0异步处理
  9. 苹果cms对接影视小程序源码完整源码
  10. 哎呀你不要把他叫出来_不吼不叫,学会这3个亲子互动方法,孩子不专注都难...
  11. Cephalocon 2020首尔峰会取消
  12. React和Redux的连接react-redux【转载】
  13. 软件项目管理实用教程(人民邮电出版)第一章课后习题
  14. 【解决方案】GB28181/RTSP/Onvif/HikSDK/Ehome协议视频共享平台EasyCVR人脸识别助力打造智慧安检
  15. Kaggle注册及绑定手机号
  16. matlab 单相整流电路,基于MATLAB的单相桥式整流电路研究
  17. 三色旗问题中的快排应用
  18. C语言中调用数组元素的三种方法:下标法、数组名法、指针法
  19. 迷你世界枪战精英html5游戏,迷你世界枪战精英吃鸡版
  20. 【深度长文】循序渐进解读Oracle AWR性能分析报告

热门文章

  1. 利用信号量机制实现前驱关系
  2. VUI参数语义,色彩原色图表,高宽比标示符含义图表
  3. 网络空间安全导论|基本思维导图持续更新中~
  4. 常见五轴机床的机械结构形式讲解!
  5. uniapp使用plus.sqlite实现图片、视频缓存到手机本地
  6. 不看绝对血亏!mysql下载安装教程win10
  7. 使用Windows 10自带工具 校验MD5 SHA1 SHA256类型文件
  8. 服务器安装系统路径,裸金属服务器安装多路径软件
  9. 跑通Jetson Nano TensorRt sampleSSD例程
  10. 整理了一下以前写的东西,单条记载 现在看看还蛮有意思