当前位置: 萬仟网 > IT编程>开发语言>Java > Java面试题汇总

Java面试题汇总

2019年11月27日 Java 我要评论
没有什么套路,就是直接上干货!!!最新Java面试题汇总整理连答案一块儿分享给大家,希望对大家有帮助~ 之后还会推出Java面试题系列文章,敬请关注! 按照技术模块:Java热点技术、多线程、微服务、JVM、Redis、消息队列、SQL相关的面试题。不要走开,稍后更精彩! 1、面向对象的特点有哪些? ...

没有什么套路,就是直接上干货!!!最新java面试题汇总整理连答案一块儿分享给大家,希望对大家有帮助~

之后还会推出java面试题系列文章,敬请关注!

按照技术模块:java热点技术、多线程、微服务、jvm、redis、消息队列、sql相关的面试题。不要走开,稍后更精彩!

1、面向对象的特点有哪些?

抽象、继承、封装、多态。

2、接口和抽象类有什么联系和区别?

3、重载和重写有什么区别?

4、java有哪些基本数据类型?

5、数组有没有length()方法?string有没有length()方法?

数组没有length()方法,它有length属性。
string有length()方法。
集合求长度用size()方法。

6、java支持的数据类型有哪些?什么是自动拆装箱?

7、int 和 integer 有什么区别?

8、java类的实例化顺序?

父类静态成员和静态代码块 -> 子类静态成员和静态代码块 -> 父类非静态成员和非静态代码块 -> 父类构造方法 -> 子类非静态成员和非静态代码块 -> 子类构造方法

9、什么是值传递和引用传递?

10、string能被继承吗?为什么?

11、string和stringbuilder、stringbuffer的区别?

  • stringbuilder:适用于单线程下在字符缓冲区进行大量操作的情况(是线程不安全的)
  • stringbuffer:适用多线程下在字符缓冲区进行大量操作的情况(一般很少)(是线程安全的)
  • 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:stringbuilder > stringbuffer > string

12、java集合框架的基础接口有哪些?

13、java集合框架是什么?说出一些集合框架的优点?

14、hashmap 与hashtable有什么区别?

15、arraylist 和 linkedlist 有什么区别?

16、简单介绍java异常框架?error与exception有什么区别?

17、java中的throw 和 throws关键字有什么区别?

18、列举几个你了解的几个常见的运行时异常?

19、final, finally, finalize有什么区别?

20、描述java内存模型?

21、java中垃圾收集的方法有哪些?

22、如何判断一个对象是否存活?(或者gc对象的判定方法)?

23、java gc是在什么时候,对什么东西,做了什么事情?

24、什么是类加载器双亲委派模型机制?

25、类加载器有哪些?

26、描述类加载器工作机制?

27、分别写出堆内存溢出与栈内存溢出的程序?

28、java 8 内存模型进行了哪些改进?

29、简述java内存分配与回收策率以及minor gc和major gc?

30、jvm,jdk和jre有什么区别与联系?

31、java线程同步的方式有哪些?

32、解释一下锁的一些基本概念:可重入锁、可中断锁、公平锁、读写锁?

33、synchronized什么情况下会释放锁?

  1. 获取锁的线程执行完了该代码块,然后线程释放对锁的占有;
  2. 线程执行发生异常,此时jvm会让线程自动释放锁。
  3. 调用wait方法,在等待的时候立即释放锁,方便其他的线程使用锁.

34、synchronized和lock有什么区别?

35、使用过哪些数据库连接池,分别有什么优点和缺点?

36、java cas(compare and swap) 无锁算法?

cas(compare and swap) 无锁算法: cas是乐观锁技术,当多个线程尝试使用cas同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。cas有3个操作数,内存值v,旧的预期值a,要修改的新值b。当且仅当预期值a和内存值v相同时,将内存值v修改为b,否则什么都不做。

37、线程池的作用有哪些?

线程池的作用: 在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程

  1. 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
  2. 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。
  3. 提高线程的可管理性。

常用线程池:executorservice 是主要的实现类,其中常用的有

  • executors.newsinglethreadpool(),
  • newfixedthreadpool(),
  • newcachedtheadpool(),
  • newscheduledthreadpool()。

38、反射创建类实例的三种方式?

39、反射机制有哪些优点和缺点?

40、哪些项目中用到了java反射机制?

  1. jdbc中有一行代码:class.forname('com.mysql.jdbc.driver.class').newinstance();
  2. 很多框架都用到反射机制,hibernate,struts都是用反射机制实现的。

41、java 反射机制的作用?

42、你了解哪些设计模式,列举几个?jdk中用到了哪些设计模式?

43、单例模式用java有哪几种实现方式?

44、java元注解有哪些,都有什么作用?

45、jdk自带了哪些注解,有什么作用?

46、java8有哪些新特性?

47、简单介绍原生jdbc执行sql过程?

  1. class.forname()加载数据驱动
  2. drivermanager.getconnection()获取数据库连接对象。
  3. 根据sql或sql会话对象,有两种方式statement、preparedstatement。
  4. 执行sql处理结果集,如果有参数就设置参数。
  5. 关闭结果集,关闭会话,关闭资源。

48、char 型变量中能不能存贮一个中文汉字,为什么?

char类型可以存储一个中文汉字,因为java中使用的编码是unicode,一个char类型占2个字节(16比特),所以放一个中文是没问题的。

49、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

50、构造器(constructor)是否可被重写(override)?

“constructor(构造器)不能被继承,所以不能被override(重写),但是可以被overloading(重载)。

51、什么是线程安全?

52、什么是死锁?

53、synchronized的实现原理是什么?

54、有了synchronized,还需要volatile做什么事?

55、synchronized的锁优化是怎么处理的?

(强烈推荐两本书《java并发编程的艺术》、《深入理解java虚拟机》)
synchronized和volatile的区别:
1、volatile 仅能使用在变量级别;
synchronized则可以使用在变量、方法、和同步代码块等类级别的。
2、volatile仅能实现变量的修改可见性和有序性,并不能保证原子性(复合操作的原子性);
synchronized则可以保证变量的可见性、有序性、原子性。
3、volatile不会造成线程的阻塞;
synchronized可能会造成线程的阻塞。
4、volatile标记的变量不会被编译器优化(因为这是由cpu指令完成);
synchronized标记的变量可以被编译器优化(java1.6后性能优化很多)。

56、jmm是什么?

57、java并发包都有哪些?

58、什么是fail-fast?

59、什么是fail-safe?

60、什么是copyonwrite?

61、什么是aqs呢?

62、什么是cas呢?

63、乐观锁是怎样的?

64、乐观锁悲观锁区别是什么?

65、数据库如何实现悲观锁和乐观锁?

66、数据库锁和隔离级别有什么关系?

67、数据库锁和索引有什么关系?

68、什么是聚簇索引?

69、什么是非聚簇索引?

70、索引最左前缀是什么?

71、什么是b+树索引?(有点长,值得一看)

72、什么是联合索引?

73、什么是回表?

74、分布式锁有了解吗?

75、redis怎么实现分布式锁?

76、为什么要用redis?

因为传统的关系型数据库如mysql已经不能适用所有的场景了,比如秒杀的库存扣减,app首页的访问流量高峰等等,都对数据库提出了更高的要求,所以引入了缓存中间件,目前市面上比较常用的缓存中间件有redis 和 memcached 不过中和考虑了他们的优缺点,最后选择了redis。

77、redis和memcache区别是什么?

78、zookeeper怎么实现分布式锁?

79、什么是zookeeper?(漫画版)

80、什么是cap?

81、什么是base?和cap什么区别?

82、cap怎么推导?如何取舍?

83、分布式系统怎么保证数据一致性?

84、什么是分布式事务?分布式事务方案?

85、线程安全的单例?

86、不用synchronized和lock能实现线程安全的单例吗?

87、什么是paxos算法?

88、arraylist和linkedlist和vector的区别·

89、谈一下计模式遵循的面向对象设计原则!

90、arrays.aslist获得的list使用时需要注意什么

91、list和原始类型list之间的区别?

在编译时编译器不会对原始类型进行类型安全检查,却会对带参数的类型进行检查。

92、list<?>和list<t>之间的区别是什么?

93、synchronized是如何实现的?

94、bio、nio和aio的区别、三种io的用法与原理

95、concurrentskiplistmap

96、string.valueof和integer.tostring的区别

97、integer的缓存机制

98、set如何保证元素不重复?

99、java中如何保证线程安全?

100、你使用过jvm相关的参数,列举几个

(0)
打赏 微信扫一扫 微信扫一扫

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。

发表评论

验证码:
Copyright © 2017-2022  萬仟网 保留所有权利. 琼ICP备2022007597号