BAT大厂面试题以及答案(一)

小弟初来乍到,还请大家多多关照。最近自己看到很了很多BAT大厂的面试题,但是只有试题没有相应的答案,每天得花很多时间找答案,所以在这里,我给大家把试题和答案都列出来,希望能对在找工作的同胞们有所帮助哈!

1、ava中==和equals和hashCode的区别
解析:
equals :equals的作用是判断两个对象是否相等,通过判断两个对象的地址是否相同来判断。
hashCode:能够高效率的产生一个离散的int值,通过hashCode()来计算出两个对象的hash值然后进行比较。但是会出现不同的类也会有相同hash值,所以这不是安全、不可靠的。
双等于:一般用于基本类型数据的比较,判断两个值是否相同 ,也可以用于类的比较,同样也是比较两个对象的内存地址。(就是两个对象都是同一个对象),所以在equals没覆盖的情况下,==和equals是等价的。

2、String、StringBuffer、StringBuilder区别
解析
①、执行速度
在这方面运行速度快慢为:StringBuilder > StringBuffer > String
String最慢的原因:String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。

②、线程安全方面
在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的
如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的,但StringBuilder的方法则没有该关键字,所以不能保证线程安全,有可能会出现一些错误的操作。所以如果要进行的操作是多线程的,那么就要使用StringBuffer,但是在单线程的情况下,还是建议使用速度比较快的StringBuilder。

③、个人总结
String:适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

3、哪些情况下的对象会被垃圾回收机制处理掉?
解析:
该对象的最后一个引用指向了另一个对象或null
该对象的最后一个引用的作用域结束

4、List,Set,Map的区别
解析:
①、List 集合中对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象,例如通过list.get(i)方法来获取集合中的元素;
②、Map 中的每一个元素包含一个键和一个值,成对出现,键对象不可以重复,值对象可以重复;
③、Set 集合中的对象不按照特定的方式排序,并且没有重复对象,但它的实现类能对集合中的对象按照特定的方式排序,例如 Tree Set 类,可以按照默认顺序,也可以通过实现 Java.util.Comparator< Type >接口来自定义排序方式。

5、ArrayList和LinkedList的区别,以及应用场景
解析
①、区别
ArrayList是基于数组实现,而LinkedList是基于链表实现。 因为数组是基于索引的数据结构,所以当查找元素时会特别方便,其时间复杂度为O(1),但是要插入和删除数据的话开销确是很大的,需要挪动大量数据。而且当插入一定元素后,ArrayList会进行动态扩容操作。而对于链表来说,插入和删除元素确是很容易办到的,只需要改变对应节点的前后指针,其时间复杂度为O(1),而不需要改变数组大小,也不需要搬移挪动元素等。但是如果要查找访问元素的话却需要从头遍历,其时间复杂度为O(n)。此外,相比较于ArrayList,LinkedList需要花费更多的空间来存储节点数据(实际数据+前后节点位置)。

②、应用场景
如果你的程序更多的是进行元素的查找,建议使用ArrayList;如果更多的是进行插入和删除操作,LinkedList会更优。

6、List和Map的实现方式以及存储方式
①、List
常用实现方式有:ArrayList和LinkedList
ArrayList 的存储方式:数组,查询快
LinkedList的存储方式:链表,插入,删除快
②、Map
常用实现方式有:HashMap和TreeMap
HashMap的存储方式:哈希码算法,快速查找键值
TreeMap存储方式:对键按序存放

今天的分享就先这些,接下来每天都会给大家分享新的信息,先谢谢大家的关注!

接下来,给大家送上一个每日笑话,一整天开始打代码
A:嘿 //是什么意思啊?
B:嘿.
A:呃我问你//是什么意思?
B:问吧.
A:我刚才不是问了么?
B:啊?
A:你再看看记录…
B:看完了.
A:……所以//是啥?
B:所以什么?
A:你存心耍我呢吧?
B:没有啊你想问什么?
……
不断循环之后,A一气之下和B绝交,自己苦学程序。
N年之后,A终于修成正果,回想起B
,又把聊天记录翻出来看,这时,他突然发现B没有耍他……
而他自己也不知道当年他问B的究竟是什么问题……
BAT大厂面试题以及答案(一)_第1张图片

你可能感兴趣的:(BAT大厂面试题以及答案(一))