1. short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型
而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换
2. &和&&的区别?
&运算符有两种用法:(1)按位与;(2)逻辑与。&&运算符是短路与运算。
逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。
&&之所以称为短路运算是因为,如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。
3. swtich 是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr)中,expr支持byte、short、char、int、enum、string(1.7)
4. 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
答:不对,如果两个对象x和y满足x.equals(y) == true,它们的哈希码(hash code)应当相同。Java对于eqauls方法和hashCode方法是这样规定的:(1)如果两个对象相同(equals方法返回true),那么它们的hashCode值一定要相同;(2)如果两个对象的hashCode相同,它们并不一定相同。
5. 关于equals和hashCode方法,
equals方法必须满足
自反性(x.equals(x)必须返回true)、
对称性(x.equals(y)返回true时,y.equals(x)也必须返回true)、
传递性(x.equals(y)和y.equals(z)都返回true时,x.equals(z)也必须返回true)
一致性(当x和y引用的对象信息没有被修改时,多次调用x.equals(y)应该得到同样的返回值)
6. 重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?
重载:一个类中同一方法参数数量或者类型不同,对返回值无要求
重写:要求子类被重写方法有相同的返回类型、比父类重写的方法更好访问,不能比父类重写方法有更多的异常。
7. 如何实现对象克隆?
1). 实现Cloneable接口并重写Object类中的clone()方法;
2). 实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆
public static <T> T clone(T obj) throws Exception {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bout);
oos.writeObject(obj);
ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bin);
return (T) ois.readObject();
}
基于序列化和反序列化实现的克隆不仅仅是深度克隆,更重要的是通过泛型限定,可以检查出要克隆的对象是否支持序列化,这项检查是编译器完成的,不是在运行时抛出异常,这种是方案明显优于使用Object类的clone方法克隆对象。让问题在编译的时候暴露出来总是优于把问题留到运行时。
8. 创建对象时构造器的调用顺序
为对象分配存储空间
开始构造对象
从超类到子类对static成员进行初始化
超类成员变量按顺序初始化,递归调用超类的构造方法
子类成员变量按顺序初始化,子类构造方法调用
9. ArrayList和linkedList
ArrayList基于动态数组实现,查询快、插入删除慢
LinkedList基于链表实现,插入删除快,查询慢
10. hashSet、、LinkedHashSet、TreeSet
hashSet:基于hashMap实现的,无序,不能包含重复元素,非线程安全的
LinkedHashSet:HashSet的子类,使用链表维护元素的次序。有序,非线程安全
TreeSet:使用红黑树结构实现,是sortedSet接口的唯一实现类,可以确保集合内元素处于有序状态
11. HashMap、LinkedHashMap、TreeMap
HashMap:在底层将key-value封装成一个Entry【】进行处理,根据键值的hashcode值存储数据
LinkedHashMap:继承自HashMap,其内部增加了一个链表,用以存放元素的顺序,基于元素的进入顺序排序
TreeMap:实现SortMap接口,能够把它保存的记录根据键排序
12. concurrentHashMap
ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力,但同时大量的利用了volatile,final,CAS等lock-free技术来减少锁竞争对于性能的影响,降低了对读一致性的要求;
Jdk1.7中,concurrenthashMap的核心是分段锁技术,减少锁竞争同时牺牲了对一致性的要求
Jdk1.8中,concurrentHashMap的核心是volatile变量+CAS,比较并交换,乐观锁的实现机制。
分享到:
相关推荐
java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理
Java面试题以及答案整理
java面试过程中遇到的问题及回答整理,包括Java基础,算法与数据结构,jvm,集合源码,JavaEE,海量数据处理,并发与多线程。希望可以帮助到你
这份资源是一份包含1000+道Java面试题的整理版,旨在帮助广大Java开发者更好地准备面试,提升面试成功率。内容涵盖了Java的基础知识、高级特性、常见问题等多个方面,每个问题都附带了详细的答案解析,有助于读者...
JAVA面试题资料汇总及答案整理
JAVA面试题整理 JAVA面试时,面试官常问的题目JAVA面试题整理 JAVA面试时,面试官常问的题目
JAVA核心面试知识点整理
java面试宝典2016整理版,最新java面试宝典整理版,内容很全
java面试题整理必看java面试题整理必看java面试题整理必看java面试题整理必看java面试题整理必看java面试题整理必看java面试题整理必看java面试题整理必看java面试题整理必看java面试题整理必看
JAVA面试题整理 JAVA面试题整理
Java面试整理(二).ppt
mind整理的Java面试资料,里面包括java基础、OOP、Web基础、数据库、常用的SQL语句、java的开发框架:Struts、Hibernate、Spring和Mybatis等
Dubbo服务框架面试专题及答案整理文档 java筑基面试专题系列(二):并发+Netty+JVM+Linux java筑基面试专题系列(一):Tomcat+Mysql+设计模式 分布式数据库面试专题系列:Redis+MongoDB 分布式通讯面试专题系列:...
java面试整理,最全…
Java面试基础知识整理 1、 面向对象的特征有哪些方面? 2、访问修饰符public,private,protected,以及不写(默认)时的区别? 3、String 是最基本的数据类型吗? 等等...
Java面试 看这一片就够了 ,硬怼面试管再也不怂
这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试。由于这套面试题涉及的范围很泛,很广,很杂,至少需要一个月的时间才能消化和...
Java经典高级2023面试题大全带答案.pdf 发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题,0积分直接下载
2020年多家大型互联网公司整理的Java面试题 性能优化面试专栏 1.1、tomcat性能优化整理 1.2、JVM性能优化整理 1.3、Mysq|性能优化整理 二、微服务架构面试专栏 2.1、SpringCloud面试整理 2.2、SpringBoot面试整理 ...
根据收集到的各个大厂(阿里、腾讯、百度等)的Java面试题进行整理,包含答案