Java⾯试题,常见⾯试题及答案汇总,附答案
2021刚开始,很多朋友问题,有没有⼀些Java基础⾯试题及答案⾯试题,最近抽时间整理了⼀份Java⾯试题。或许这份⾯试题还不⾜以囊括所有 Java 问题,但有了它,我相信⾜以应对⽬前市⾯上绝⼤部分的 最新Java ⾯试了,因为这篇⽂章不论是从深度还是⼴度上来讲,都已经囊括了⾮常多的⾯试题及答案知识点了。
fifo结构Java常见⾯试题及答案汇总,2021年最新版
全部答案,整理好了,直接下载吧
其实,博主还整理了,更多⼤⼚⾯试题,直接下载吧
下载链接:
css一共有多少个属性1、抽象⼯⼚模式和原型模式之间的区别?
抽象⼯⼚模式:通常由⼯⼚⽅法模式来实现。但⼀个⼯⼚中往往含有多个⼯⼚⽅法⽣成⼀系列的产品。这个模式强调的是客户代码⼀次保证只使⽤⼀个系列的产品。当要切换为另⼀个系列的产品,换⼀个⼯⼚类即可。
原型模式:⼯⼚⽅法的最⼤缺点就是,对应⼀个继承体系的产品类,要有⼀个同样复杂的⼯⼚类的继承体系。我们可以把⼯⼚类中的⼯⼚⽅法放到产品类⾃⾝之中吗?如果这样的话,就可以将两个继承体系为⼀个。这也就是原型模式的思想,原型模式中的⼯⼚⽅法为clone,它会返回⼀个拷贝(可以是浅拷贝,也可以是深拷贝,由设计者决定)。为了保证⽤户代码中到时可以通过指针调⽤clone来动态绑定地⽣成所需的具体的类。这些原型对象必须事先构造好。
switch 是什么意思原型模式想对⼯⼚⽅法模式的另⼀个好处是,拷贝的效率⼀般对构造的效率要⾼。
2、在 Java 程序中怎么保证多线程的运⾏安全?
出现线程安全问题的原因⼀般都是三个原因:
1、 线程切换带来的原⼦性问题 解决办法:使⽤多线程之间同步synchronized或使⽤锁(lock)。
2、 缓存导致的可见性问题 解决办法:synchronized、volatile、LOCK,可以解决可见性问题
3、 编译优化带来的有序性问题 解决办法:Happens-Before 规则可以解决有序性问题
3、volatile 修饰符的有过什么实践?
⼀种实践是⽤ volatile 修饰 long 和 double 变量,使其能按原⼦类型来读写。double 和 long 都是64位宽,因此对这两种类型的读是分为两部分的,第⼀次读取第⼀个 32 位,然后再读剩下的 32 位,这个过程不是原⼦的,但 Java 中 volatile 型的 long 或 double 变量的读写是原⼦的。volatile 修复符的另⼀个作⽤是提供内存屏障(memory barrier),例如在分布式框架中的应⽤。简单的说,就是当你写⼀个 volatile 变量之前,Java 内存模型会插⼊⼀个写屏障(write barrier),读⼀个 volatile 变量之前,会插⼊⼀个读屏障(read barrier)。意思就是说,在你写⼀个 volatile 域时,能保证任何线程都能看到你写的值,同时,在写之前,也能保证任何数值的更新对所有线程是可见的,因为内存屏障会将其他所有写的值更新到缓存。
4、Java中各种数据默认值
1、 Byte,short,int,long默认是都是0
2、 Boolean默认值是false
3、 Char类型的默认值是’’
4、 Float与double类型的默认是0.0
5、 对象类型的默认值是null
5、说说Java 垃圾回收机制
在 Java 中,程序员是不需要显⽰的去释放⼀个对象的内存的,⽽是由虚拟机⾃⾏执⾏。在 JVM 中,有⼀个垃圾回收线程,它是低优先级的,在正常情况下是不会执⾏的,只有在虚拟机空闲或者当前堆内存不⾜时,才会触发执⾏,扫⾯那些没有被任何引⽤的对象,并将它们添加到要回收的集合中,进⾏回收。
6、有没有可能两个不相等的对象有有相同的 hashcode?
有可能,两个不相等的对象可能会有相同的 hashcode 值,这就是为什么在 hashmap 中会有冲突。相等 hashcode 值的规定只是说如果两个对象相等,必须有相同的hashcode 值,但是没有关于不相等对象的任何规定。
7、synchronized 和 Lock 有什么区别?
1、 ⾸先synchronized是Java内置关键字,在JVM层⾯,Lock是个Java类;
2、 synchronized 可以给类、⽅法、代码块加锁;⽽ lock 只能给代码块加锁。
3、 synchronized 不需要⼿动获取锁和释放锁,使⽤简单,发⽣异常会⾃动释放锁,不会造成死锁;⽽ lock 需要⾃⼰加锁和释放锁,如果使⽤不当没有 unLock()去释放锁就会造成死锁。
4、 通过 Lock 可以知道有没有成功获取锁,⽽ synchronized 却⽆法办到。
8、什么是Vector
Vector与ArrayList⼀样,也是通过数组实现的,不同的是它⽀持线程的同步,即某⼀时刻只有⼀个线程能够写Vector,避免多线程同时写⽽引起的不⼀致性,但实现同步需要很⾼的花费,访问它⽐访问ArrayList慢很多
ArrayList是最常⽤的List实现类,内部是通过数组实现的,它允许对元素进⾏快速随机访问。当从ArrayList的中间位置插⼊或者删除元素时,需要对数组进⾏复制、移动、代价⽐较⾼。因此,它适合随机查和遍历,不适合插⼊和删除。ArrayList的缺点是每个元素之间不能有间隔。
9、对象的访问定位有哪⼏种⽅式?
建⽴对象就是为了使⽤对象,我们的Java程序通过栈上的 reference 数据来操作堆上的具体对象。对象的访问⽅式有虚拟机实现⽽定,⽬前主流的访问⽅式有使⽤句柄和直接指针2种:
句柄:如果使⽤句柄的话,那么Java堆中将会划分出⼀块内存来作为句柄池,reference 中存储的就是对象的句柄地址,⽽句柄中包含了对象实例数据与类型数据各⾃的具体地址信息。
直接指针:如果使⽤直接指针访问,那么 Java 堆对象的布局中就必须考虑如何放置访问类型数据的相关信息,⽽reference 中存储的直接就是对象的地址。
这两种对象访问⽅式各有优势。使⽤句柄来访问的最⼤好处是 reference 中存储的是稳定的句柄地址,在对象被移动时只会改变句柄中的实例数据指针,⽽ reference 本⾝不需要修改。使⽤直接指针访问⽅式最⼤的好处就是速度快,它节省了⼀次指针定位的时间开销。
10、equals 和 == 的区别?#
通俗点讲:是看看左右是不是⼀个东西。equals是看看左右是不是长得⼀样。如何记住嘛。如果单纯是想记住,:等于。equals:相同。两个长得⼀样的⼈,只能说长的相同(equals),但是不等于他们俩是⼀个⼈。你只要记住equals,==就不⽤记了。
术语来讲的区别:
1、 ==是判断两个变量或实例是不是指向同⼀个内存空间 equals是判断两个变量或实例所指向的内存空间的值是不是相同
2、 ==是指对内存地址进⾏⽐较 equals()是对字符串的内容进⾏⽐较3.==指引⽤是否相同 equals()指的是值是否相同
11、Servlet中如何获取⽤户提交的查询参数或表单数据?
12、堆溢出的原因?
13、Java 中,怎么获取⼀个⽂件中单词出现的最⾼频率?
14、你知道哪些JVM性能调优
15、抽象类必须要有抽象⽅法吗?that是什么意思中文
16、串⾏(serial)收集器和吞吐量(throughput)收集器的区别是什么?
17、React的请求应该放在哪个⽣命周期中?
18、volatile关键字的作⽤
19、我们能将 int 强制转换为 byte 类型的变量吗?如果该值⼤于 byte 类型的范围,将会出现什么现象?
20、什么是Java虚拟机
21、CMS 收集器(多线程标记清除算法)
22、接⼝和抽象类的区别是什么?
23、如何合理分配线程池⼤⼩?
24、什么是线程组,为什么在Java中不推荐使⽤?
25、类加载器
java常见笔试题26、JVM 如何确定垃圾对象?
27、字符型常量和字符串常量的区别
28、G1 收集器
29、Java 中,直接缓冲区与⾮直接缓冲器有什么区别?
30、如何决定使⽤ HashMap 还是 TreeMap?
31、说⼀下 ArrayList 的优缺点
ascii怎么读英文32、构造⽅法能不能重写?能不能重载?
33、什么是红⿊树
34、什么是逃逸分析?
35、栈帧⾥⾯包含哪些东西?
36、Tomcat是怎么打破双亲委派机制的呢?
37、WeakHashMap 是怎么⼯作的?
38、java 中操作字符串都有哪些类?它们之间有什么区别?
39、什么是JVM?java虚拟机包括什么?
40、Java 的引⽤有哪些类型?
全部答案,整理好了,直接下载吧
下载链接:
其实,博主还整理了,更多⼤⼚⾯试题,直接下载吧
下载链接:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论