arraylist有无类的区别 new_JAVA基础面试题

1.JDK和JRE有什么区别?JDK:java Development Kit的简称,JAVA开发工具包,提供了java的开发环境和运行环境

JRE:java Runtime Environment的简称,java运行环境,java运行环境,为java的运行提供了所需环境

具体来说JDK其实包含了JRE,同时还包含了编译JAVA源码的编译器JAVAC,还包含了很多java程序调试和分析的工具。

Java语言经过编译,生成一种与平台无关的字节码(*.class文件)。必须使用Java解释器来解释执行(特定平台的机器码)。因此Java语言既是编译型语言,也是解释型语言。Java程序的执行过程必须经过先编译、后解释两个步骤。

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

(1)== 对于基本类型和引用数据类型==的作用效果是不同的,如下所示:基本类型:比较的是值是否相同

引用类型:比较的是引用是否相同

(2)equals,本质上就是==,但是String和Integer等重写了equals方法,把它变成了值比较、

3.两个对象的hashCode()相同,则equals也一定为true对吗不对,两个对象的hashCode()相同,equals不一定为true。hashcode()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等

4.final在JAVA中有什么作用?final修饰的类叫最终类,该类不能被继承

final修饰的方法不能被重写

final修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改

5.String不属于基本数据类型

6.Java中操作字符串都有哪些类?它们之间有什么区别?

操作字符串的类有:String、StringBuffer、StringBuilderString声明的是不可变的对象,每次操作都会生成新的String对象,然后将指针指向新的String对象,而StringBuffer和StringBuilder可以在原有的对象基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用String

StringBuffer和StringBuilder最大的区别在于,StringBuffer是线程安全的,而StringBuilder是非线程安全,但StringBuilder的性能却高于StringBuffer,所以在电线程的情况下推荐使用StringBuilder,多线程情况下推荐使用StringBuffer

7.String str="i"与String str=new String("i")一样吗?不一样,因为内存分配方式不一样.String str="i"的方式,Java虚拟机会将其分配到常量池中;而Stringstr=new String("i")则会分到堆内存中.

8.如何将字符串反转?StringBuilder或者StringBuffer的reverse()方法

9.普通类和抽象类有哪些区别?普通类不能包含抽象方法,抽象类可以包含抽象方法

抽象类不能直接实例化,普通类可以直接实例化

10.抽象类不能被final修饰

11.Java中Io分为几种?按照功能来分:输入流(input)和输出流(output)

按类型来分:字节流和字符流

字节流和字符流的区别是:字节流按8位传输以字节为单位输入输出数据,字符流按16位传输以字符单位输入输出数据

12.接口和抽象类什么区别?抽象类的子类使用extends来继承;接口必须使用implements来实现接口

构造函数:抽象类可以有构造函数;接口不能有

类可以实现多个接口 但是单继承

访问修饰符:接口中的方法默认使用public修饰;抽象类中的方法可以是任意访问字符

抽象类中可以有普通的成员变量;接口中的变量必须是static final类型的,必须被初始化,接口中只有常量,没有变量

Java8中接口会有default方法,即方法可以被实现

13.BIO、NIO、AIO有什么区别?BIO:Block IO同步阻塞式IO,就是我们平常使用的传统IO,他的特点是模式简单使用方便,并发处理能力低

NIO:Non IO同步非阻塞IO,是传统IO的升级,客户端和服务器端通过Channel(通道)通讯,实现多路复用

AIO:Asynchronous IO是NIO的升级,也叫NIO2,实现了异步非阻塞IO,异步IO的操作基于事件和回调机制

集合

1.Collection和Collections有什么区别?Collection是一个结合接口,它提供了对集合对象进行基本操作的通用接口方法,所有集合都是它的子类,比如List,Set等

Collections是一个包装类,包含了很多静态方法,不能被实例化,就像一个工具类,比如提供的排序方法:Collections.sort(list)

2.List\set\map之间的区别:list 元素有序  允许元素重复

set元素无序 TreeSet 有序  不允许元素重复

Map元素无序  TreeMap 是   key值必须唯一,value可以重复

3.HashMap和Hashtable有什么区别?存储:hashmap运行key和value为null,而Hashtable不允许

线程安全:Hashtable是线程安全的,而Hashtable是非线程安全的

推荐使用:在Hashtable的类的注释可以看到,Hashtable是保留类不建议使用,推荐在单线程环境下使用HashMap替代,如果需要多线程使用ConcurrentHashMap替代

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

对于在Map中插入、删除、定位一个元素这类操作,HashMap是最好的选择,因为相对而言HashMap的插入更快,但如果你要对一个key集合进行有序的遍历,那TreeMap是更好的选择。

5.说一下HashMap的实现原理:

hashMap基于Hash算法是实现的,我们通过put(key,value)存储,get(key)来获取。当传入key时,HashMap会根据key.hashcode()计算出hash值,根据hash值将value保存在bucket里。当计算出的hash值相同时,我们称之为Hash冲突,HashMap解决Hash冲突的办法是链表加红黑树。当节点数量超过8时链表转换成红黑树

6.说一下HashSet的实现原理?

HashSet是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,是通过组合基础类,通过调用基础类的方法,来复用基础类的能力。add方法的入参对应是put方法的key value是自定义的一个静态对象

7.ArrayList和Linked的区别是什么?ArrayList是动态数据的数据结构结构实现,而LinkedList是双向链表的数据结构实现。

随机访问速率:ArrayList比LinkedList在随机访问的时候效率要高

增加和删除效率:在非首尾的增加和删除操作,LinkedList要比ArrayList要高,因为Arraylist增加删除要影响数据内的其他数据的下标

8.ArrayList和Vertor区别:线程安全:Vector使用了Synchronized来实现线程同步,是线程安全的,而ArrayList是非线程安全的

性能:ArrayList在性能方面要优于Vector

扩容:ArrayList和Vector都会根据实际的需要动态的调整容量,只不过在Vector扩容每次会增加一倍,而ArrayList之后增加百分之50

9.Array和ArrayList有什么区别:Array可以存储基本数据类型和对象,ArrayList只能存储对象。

Array是指定固定大小的,而ArrayList大小是自动扩展的

Array内置方法没有ArrayList多,比如addAll、removeAll、。。。

10.在Queue中的Poll和remove有什么区别?相同点:都是返回第一个元素,并且在队列中删除返回的对象

不同点:如果没有元素poll会返回null,而remove会直接抛出NoSuchElementException异常

11.哪些集合类是线程安全的?Vector、Hashtable、Stack都是线程安全的,而像HashMap则是非线程安全的,不过JDK1.5之后随着Java.util.concurrent并发包的出现,他们也有了自己对应的线程安全类,比如Hashmap对应的线程安全类就是ConcurrentHashMap

12.迭代器Iterator是什么?

iterator接口提供遍历任何Collection的接口。

13. Iterator 和 ListIterator 有什么区别?

Iterator 可以遍历 Set 和 List 集合,而 ListIterator 只能遍历 List。

Iterator 只能单向遍历,而 ListIterator 可以双向遍历(向前/后遍历)。

ListIterator 从 Iterator 接口继承,然后添加了一些额外的功能,比如添 加一个元素、替换一个元素、获取前面或后面元素的索引位置。

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值