41

程序员50+Java面试题

 5 years ago
source link: http://www.apexyun.com/cheng-xu-yuan-50-javamian-shi-ti/?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

大家好!最近,我一直在分享很多Java面试问题和讨论,我的许多读者都要求将它们组合在一起,以便他们可以将它们放在同一页面中并做好准备,这篇文章就是整理的结果。

本文包含 50多个Java面试题, 涵盖所有重要主题,如核心Java基础知识, Java集合框架 ,, Java IOJDBCJVM内核编码问题 ,   面向对象编程 等。

这些问题也可以通过各种面试遇到,但这些问题绝对不是很困难,你可能已经在电话或现场面试遇到了这些问题。

这些问题也非常适合复习多线程和集合等重要主题,因为我还分享了一些有用的资源,用于进一步学习和改进,比如 The Complete Java MasterClass, 以填补Java技能的空白。

那么我们这里是初学者和2到5年经验丰富的Java开发人员的一些常见Java问题列表:

Java面试题与解答

1)Java如何实现平台独立性?

答案:( http://www.java67.com/2012/08/how-java-achieves-platform-independence.html

提示:字节码和Java虚拟机

2)什么是Java ClassLoader?

答案:( http://javarevisited.blogspot.sg/2012/12/how-classloader-works-in-java.html#axzz59AWpr6cb

提示:加载类的字节码的JVM的一部分。你可以自己写。

3)写一个Java程序来判断数字是偶数还是奇数?

答案:( http://javarevisited.blogspot.sg/2013/04/how-to-check-if-number-is-even-or-odd.html#axzz59AWpr6cb

提示:你可以使用位运算符,例如按位AND &,记住,偶数在二进制格式的末尾为0,而奇数在最后为1。

4) Java ArrayList和HashSet 之间的区别  ?

答案:( http://www.java67.com/2012/07/difference-between-arraylist-hashset-in-java.html

提示:  List 和  Set 之间的所有差异都适用于这里,例如排序,重复,随机搜索等。

5)   单例模式 中的双重检查是什么?

答案:( http://www.java67.com/2016/04/why-double-checked-locking-was-broken-before-java5.html

提示:两次检查是否初始化实例,第一次没有锁,第二次有锁。

6)如何在Java中创建线程安全的单例?

答案:( http://javarevisited.blogspot.sg/2012/12/how-to-create-thread-safe-singleton-in-java-example.html

提示:许多方法,例如使用Enum或使用双重检查锁定模式或使用嵌套静态类。

7)何时在Java中使用volatile变量?

答案:( http://www.java67.com/2012/08/what-is-volatile-variable-in-java-when.html

提示:当需要指示JVM一个变量可以被多个线程修改,并提示JVM不缓存其值的时候。

8)何时在Java中使用transient变量?

答案:( http://www.java67.com/2012/08/what-is-transient-variable-in-java.html

提示:当你想在类中创建一个不可序列化的变量,而它实现了Serializable接口时。换句话说,你可以将它用于你不想保存其值的变量。请参阅   The Complete Java MasterClass 以了解Java中的transient变量。

9)Java中transient变量和volatile变量之间的区别?

答案:( http://www.java67.com/2012/11/difference-between-transient-vs-volatile-modifier-variable-java.html

提示:完全不同,一个用于序列化,另一个用于并发。

10)Java中Serializable和Externalizable之间的区别?

答案:( http://www.java67.com/2012/10/difference-between-serializable-vs-externalizable-interface.html

提示:Externalizable使你可以更好地控制序列化过程。

11)我们可以覆盖Java中的私有方法吗?

答案:( http://www.java67.com/2013/08/can-we-override-private-method-in-java-inner-class.html

提示:不能,因为它在子类中不可见,这是在Java覆盖方法的主要要求。

12)Java Hashtable 和  HashMap之间的区别  ?

答案:( http://javarevisited.blogspot.sg/2010/10/difference-between-hashmap-and.html#axzz53B6SD769

提示:最重要的是  Hashtable是同步的,而  HashMap 不是。与之相比,它也是传统和缓慢的HashMap。

13)Java List和  Set 之间的区别  ?

答案:( http://javarevisited.blogspot.sg/2012/04/difference-between-list-and-set-in-java.html#axzz53n9YK0Mb

提示:  List 允许重复。 Set 是无序的,不允许有重复的元素。

14)Java ArrayList 和  Vector 之间的差异  

答案:( http://www.java67.com/2012/09/arraylist-vs-vector-in-java-interview.html

提示:很多,但最重要的  ArrayList 是非同步和快速的; 而 Vector 是同步和很慢的。它也是像Hashtable一样的传统类。

15)Java Hashtable 和 ConcurrentHashMap 之间的区别  ?

答案:( http://javarevisited.blogspot.sg/2011/04/difference-between-concurrenthashmap.html#axzz4qw7RoNvw

提示:更具可扩展性

16)ConcurrentHashMap 如何实现可扩展性?

答案:( http://javarevisited.blogspot.sg/2017/08/top-10-java-concurrenthashmap-interview.html#axzz50U9xyqbo

提示:通过将映map分为段并且仅在写入操作期间锁定。

17)对于一个 Object 被用作HashMap 的Key, 哪两个方法你需要覆盖 ?

答案:( http://www.java67.com/2013/06/how-get-method-of-hashmap-or-hashtable-works-internally.html

提示:equals和hashcode

18)Java中wait和sleep的区别?

答案:( http://www.java67.com/2012/08/what-are-difference-between-wait-and.html

提示:该 wait() 方法释放锁或监视器,而sleep则不释放。

19) Java notify 和 notifyAll 之间的区别  ?

答案:( http://www.java67.com/2013/03/difference-between-wait-vs-notify-vs-notifyAll-java-thread.html

提示:  notify 通知一个正在等待该锁的随机线程,而 notifyAll 通知所有等待的线程。如果你确定只有一个线程正在等待,那么使用  notify,否则  notifyAll 更好。请参阅   Threading Essentials Mini-Course 由Java Champion Heinz Kabutz提供有关线程基础知识的更多信息。

20)为什么要和equals() 一起在Java中覆盖hashcode  ?

答案:( http://javarevisited.blogspot.sg/2015/01/why-override-equals-hashcode-or-tostring-java.html#axzz55oDxm8vv

提示:要符合equals和hashcode约定,如果你将对象存储到集合类中,则需要这样做,例如  HashMap 或  ArrayList。

21)HashMap load factor是什么意思?

答案:( http://www.java67.com/2017/08/top-10-java-hashmap-interview-questions.html

提示:触发重新调整大小的阈值 , HashMap 一般为0.75,意味着  如果HashMap 到达75%存储则调整自身大小。

22) Java ArrayList 和 LinkedList 之间的区别  ?

答案:( http://www.java67.com/2012/12/difference-between-arraylist-vs-LinkedList-java.html

提示:与数组和链表相同,一个允许随机搜索,而另一个则不允许。在链表上更容易插入和删除,但在array上查询很容易。请参阅   Java Fundamentals:Collections Richard Warburton关于Pluralsight的课程,以了解有关Java中基本Collection数据结构的更多信息。

23) Java CountDownLatch 和  CyclicBarrier之间的区别  ?

答案:( http://www.java67.com/2012/08/difference-between-countdownlatch-and-cyclicbarrier-java.html

提示:你可以在CyclicBarrier 打破后重复使用  ,但CountDownLatch   在计数达到零后无法重复使用  。

24)什么时候在Java中使用  Runnable vs  Thread? 答案:( http://www.java67.com/2016/01/7-differences-between-extends-thread-vs-implements-Runnable-java.html

提示:永远

25)Enum在Java中的类型安全是什么意思?

答案:( http://www.java67.com/2014/04/what-java-developer-should-know-about-Enumeration-type-in-Java.html

提示:这意味着你不能将不同枚举类型的实例分配给Enum变量。例如,如果你有像DayOfWeek 这样的变量,  那么你不能用DayOfMonth 枚举赋值  。

26)Java中Integer的自动装箱如何实现?

答案:( http://javarevisited.blogspot.sg/2012/07/auto-boxing-and-unboxing-in-java-be.html#axzz59AWpr6cb

提示:使用  valueOf() 方法

27)Java 中PATH 和 Classpath 之间的区别  ?

答案:( http://www.java67.com/2012/08/what-is-path-and-classpath-in-java-difference.html

提示:  PATH 由操作系统使用,而Classpath 由JVM用于定位Java二进制文件(例如JAR文件或类文件 。见 Java Fundamentals: The Core Platform 更多地了解  PATH,  Classpath和其他Java环境变量。

28)Java中方法重载和覆盖之间的区别?

答案:( http://www.java67.com/2015/08/top-10-method-overloading-overriding-interview-questions-answers-java.html

提示:覆盖发生在子类,而重载发生在同一个类中。此外,覆盖是运行时活动,而重载在编译时解析。

29)如何防止一个类在Java中被继承?

答案:( http://www.java67.com/2017/06/10-points-about-final-modifier-in-java.html

提示:final修饰类

30)你如何限制你class被client使用?

答案:( http://javarevisited.blogspot.sg/2016/01/why-jpa-entity-or-hibernate-persistence-should-not-be-final-in-java.html

提示:使构造函数为private或从构造函数中抛出异常

31)Java StringBuilder 和  StringBuffer之间的区别  ?

答案:( http://www.java67.com/2016/10/5-difference-between-stringbuffer.html

提示:  StringBuilder 不同步而 StringBuffer 同步。

32)Java中多态和继承的区别?

答案:( http://www.java67.com/2014/04/difference-between-polymorphism-and-Inheritance-java-oops.html

提示:继承允许代码重用并构建类之间的关系,这是多态所需要的,它提供动态行为。请参阅   Java Fundamentals: Object-Oriented Design

以了解有关OOP功能的更多信息。

33)我们可以覆盖Java中的静态方法吗?

答案:( http://www.java67.com/2012/08/can-we-override-static-method-in-java.html

提示:不能,因为覆盖在运行时解析,而静态方法调用在编译时解析。

34)我们可以在Java中访问私有方法吗?

答案:( http://www.java67.com/2012/08/can-we-override-private-method-in-java.html

提示:能,在同一个类但不在类之外

35)Java中接口和抽象类之间的区别?

答案:( http://www.java67.com/2017/08/difference-between-abstract-class-and-interface-in-java8.html

提示:从Java 8开始,差异很模糊。但是,Java类仍然可以实现多个接口,但只能扩展一个类。

36)Java中的DOM和SAX解析器之间的区别?

答案:( http://www.java67.com/2012/09/dom-vs-sax-parser-in-java-xml-parsing.html

提示:DOM在内存中加载整个XML文件,而SAX则没有。它是一个基于事件的解析器,可用于解析大文件,但DOM速度很快,应该是小文件的首选。

37)Java中throw和throws关键字的区别?

答案:( http://www.java67.com/2012/10/difference-between-throw-vs-throws-in.html

提示:throws声明一个方法在出现错误时可以抛出的异常,但throw关键字实际上会引发异常。请参阅 Java Fundamentals:Exception Handling 以了解有关   Java中异常处理的 更多信息。

38)Java中的fail-safe和fail-fast 迭代器之间的区别?

答案:( http://www.java67.com/2015/06/what-is-fail-safe-and-fail-fast-iterator-in-java.html

提示: 当它们迭代检测到底层集合的外部更改时,fail-fast抛出 ConcurrentModificationException,fail-safe不会抛出  。

39)Java中Iterator和Enumeration之间的区别?

答案:( http://javarevisited.blogspot.sg/2010/10/what-is-difference-between-enumeration.html#axzz59AWpr6cb

提示:Iterator还允许你在迭代时删除元素,而Enumeration不允许这样做。

40)Java中什么是  IdentityHashMap ?

答案:( http://www.java67.com/2016/09/difference-between-identityhashmap-weakhashmap-enummap-in-java.html

提示:一个 Map,它使用  == 相等运算符来检查相等而不是  equals() 方法。

41)Java中什么是  String pool?

答案:( http://javarevisited.blogspot.sg/2016/07/difference-in-string-pool-between-java6-java7.html#axzz4pGGwsyna

提示:一个String 字符串池  。它已经从JDK 7中的perm gen空间转移到堆。

42)在Java中一个Serializable 类可以包含一个不可序列化的字段吗?

答案:( http://javarevisited.blogspot.sg/2016/09/how-to-serialize-object-in-java-serialization-example.html

提示:可以,但你需要将其设置为static或transient。

43)Java this和super之间的区别?

答案:( http://www.java67.com/2013/06/difference-between-this-and-super-keyword-java.html

提示:this指的是当前实例,而super指的是超类的一个实例。

44) Java 中Comparator 和  之间的区别  Comparable?

答案:( http://www.java67.com/2013/08/difference-between-comparator-and-comparable-in-java-interface-sorting.html

提示:  Comparator 定义自定义排序,而Comparable 定义对象的自然顺序,例如String的字母顺序  。有关 使用Java 进行排序的详细信息,请参阅 The Complete Java MasterClass

45)Java java.util.Date 和 java.sql.Date 之间的区别  ?

答案:( http://javarevisited.blogspot.sg/2012/04/difference-between-javautildate-and.html

提示:前者包含日期和时间,后来只包含日期部分。

46)为什么wait和notify方法在Java 中的Object 类中声明  ?

答案:( http://javarevisited.blogspot.sg/2012/02/why-wait-notify-and-notifyall-is.html

提示:任何对象都可作为锁。

47)为什么Java不支持多重继承?

答案:( http://javarevisited.blogspot.sg/2011/07/why-multiple-inheritances-are-not.html

48)Java中检查和未检查的异常之间的区别?

答案:( http://javarevisited.blogspot.sg/2011/12/checked-vs-unchecked-exception-in-java.html

提示:如果是检查异常,则必须使用catch块处理异常,而如果是未检查,则由你决定; 编译不会提示你。

49)Java中的错误和异常之间的区别?

答案:( http://www.java67.com/2012/12/difference-between-error-vs-exception.html

50)Java中的竞争条件和死锁之间的区别?

答案:( http://javarevisited.blogspot.sg/2012/02/what-is-race-condition-in.html#axzz59AbkWuk9

更多资源

Java Interview Guide: 200+ Interview Questions and Answers

Spring Framework Interview Guide - 200+ Questions & Answers

Preparing For a Job Interview By John Sonmez

Java Programming Interview Exposed by Markham

Cracking the Coding Interview - 189 Questions and Answers

Data Structure and Algorithms Analysis for Job Interviews

130+ Java Interview Questions of Last 5 Years

感谢你阅读本文!如果你喜欢这些核心Java问题,请与你的朋友和同事分享。如果你有任何问题或反馈,请在下面留言。

点击英文原文链接

更多文章欢迎访问: http://www.apexyun.com

公众号:银河系1号

联系邮箱:[email protected]

(未经同意,请勿转载)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK