记得那是周五,一天连着四轮面试(上午两场+下午两场),上午是百度一面和shopee,下午两轮全是百度的
一面
-
String,StringBuffer, StringBuilder
- String是由final修饰的类,同时它是由byte(9+)或者char(8-)数组组成的,这些数组也是final的
- StringBuffer是线程安全的,StringBuilder是线程不安全的。StringBuffer是通过synchronized的方法级别来实现的
- 对于StringBuffer和StringBuilder来说,他们有一个共同的父类,即AbstractStringBuilder,他们的属性和类都没有final修饰,所以导致了他们是可变的。相对来说,StringBuffer有自己的cache,保证了查询的性能,这个cache在builder中是没有的。
-
接口和抽象类
- 在JDK5之前,接口和抽象类在语法层面上有着显著的区别:接口不能有自己的方法体,同时接口只能是public的;抽象类可以有自己实现的方法,同时抽象类也可以有空方法
- 随着JDK的升级,在Java8时,接口可以有default方法,到了Java9之后,接口也可以有自己的私有方法。接口除了属性默认是public final的之外,几乎和抽象类在语法层面,没有任何区别
- 所以对于这两者的区别,我们要站在更高的的角度,从设计的层面去看它们之间的区别。在我看来接口的设计是自上而下的,而抽象类的设计是自下而上的。设
本文详细记录了一次包含四轮面试的百度面试经验,涉及面试内容包括Java基础(String、StringBuilder、锁机制)、接口与抽象类的区别、集合并发问题、NIO与BIO、线程状态及转换、数据库索引、AQS原理、分布式锁实现及集群发现机制等。面试过程中,还讨论了MQ消息不丢失策略和Spring AOP的实现。面试官问题逐步深入,强调了算法与持续学习的重要性。
订阅专栏 解锁全文
296

被折叠的 条评论
为什么被折叠?



