1、equals和==有什么区别?

==比较两个对象在内存里是不是同一个对象,就是说在内存里的存储位置一致。
如:两个String对象存储的值是一样的,但是可能在内存里存储在不同的地方。 equals 是方法
== 是运算符 Equeals本质就是==,只不过String和Integer等重写了equals方法,把它变成了值比较。 总结:
==比较的是引用;如果比较的是基本数据类型,则比较的是数值是否相等;
如果比较的是引用数据类型,则比较的是对象的地址值是否相等。
equals方法比较的是内容。

即:equals比较的是值是否相等,比较的是值和数据存储位置是否相等;

也就是说equals只比较值是否相等,而比较的是两者是否是同一个东西。

2、两个对象的hashCode()相同,equals()相同吗?

两个对象的hashCode()相同,equals()不一定相同。
因为在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。
两个对象的值相同(x.equals(y)==true),他们的哈希码(hashCode)应当相同。

即:hashCode()相同,equals()不一定相同;

equals()相同,hashCode()一定相同。

3、重载和重写的区别?

都是实现多态的方式

重载:实现的是编译时的多态性
重写:实现的是运行时的多态性 a)重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型、参数个数),视为重载。重载对返回值类型没有特殊要求,不能根据返回值类型进行区分。
b)重写发生在子类与父类中,要求子类与父类方法有相同的参数列表;
有兼容的返回类型,比父类重写方法更好访问,不能比父类重写方法声明更多的一场(里氏代换原则)

解释:重载是子类继承了父类的方法;

重写是自己继承了父类的方法,但觉得不够好,自己又修改了继承的方法。

4、抽象类

抽象类不能使用final修饰,因为抽象类是要被其他类继承的,final修饰的类是不能被继承的。

5、抽象类和接口有什么异同?

相同:
不能被实例化
可以将抽象类和接口类型作为引用类型
一个类如果继承了抽象类或者实现某个接口,都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。
不同:
抽象类:
抽象类中可以定义构造器
可以有抽象方法和具体方法
接口中的成员全都是公共的(public)
抽象类中可以定义成员变量
由抽象方法的类必须被声明为抽象类;而抽象类未必要有抽象方法
抽象类中可以包含静态方法
一个类只能继承一个抽象类 接口:
接口中不能定义构造器
方法全都是抽象方法
抽象类中的成员可以是默认的、public、private、protected
接口定义的成员变量实际上都是常量
接口中不能有静态方法
一个类可以实现多个接口

6、String、StringBuffer、StringBuilder的异同?

a)   可变不可变
String:字符串常量,修改时原来的字符串对象不变,再重新生成新的字符串对象。 StringBuffer:修改时会改变自身对象,每次操作都是对StringBuffer对象本身进行修改,不是生成新的对象。
使用场景:对字符串经常改变情况下,主要方法:append(),insert()等。 StringBuilder: 对象能够被多次的修改
b)  线程是否安全
String:对象定义后不可变,线程安全 StringBuffer:是线程安全的(对调用方法加入同步锁),执行效率较慢,适用于多线程下操作字符串缓冲区大量数据。 StringBuilder:线程不安全,适用于单线程字符串缓冲区大量数据。
c)   共同点
1.StringBuffer、StringBuilder的方法都会调用AbstractStringBuilder 中的公共方法.
如 super.append(...)。 2.只是 StringBuffer 会在方法上加 synchronized 关键字,进行同步。最后,如果程序不是多线程的,那么使用StringBuilder 效率高于 StringBuffer。

7、分布式中的CAP原理

A:可用性         保持服务可用:多节点方式
C:一致性 多节点数据一致
P:分区容忍性 是否可以将数据存到多个地方 一个系统不可能同时满足CAP AC;放弃分区容忍,物理数据库
AP;可以短暂允许数据不一致,NoSql数据库
CP:放弃可用性,zookeeper 项目用得较多的是AP

8、final在Java中的作用是什么?

final修饰的类叫做最终类,该类不能被继承
final修饰的方法不能被重写
final修饰的变量叫做常量,常量必须初始化,初始化之后值就不能被修改

9、如何开启多线程?

1.继承Thread类,重写run方法
2.实现Runnable接口,重写run方法

10、并行和并发

并行:两个任务同时进行,就是甲任务执行的同时,乙任务也在执行(需要多核)

并发:两个任务都请求运行,而处理器只能接受一个任务,就把这两个任务安排轮流执行。由于时间间隔很短,使人感觉两个任务都在运行

11、启动jvm是单线程的么?

不是,是多线程的。至少会启动垃圾回收线程和主线程

12、sleep和wait的区别?(未完)

sleep是Thread的静态方法,wait是Object的方法,任何对象实例都能调用。

sleep不会释放锁,它也不需要占用锁。wait会释放锁,但调用它的前提是当前线程占有锁(即代码要在synchronized中)。

它们都可以被interrupted方法中断。

13、开启多线程的方式

a.继承Thread类,重写run方法。
b.实现Runnable接口,重写run方法。
c.实现Callable接口:如果想要在线程执行完毕之后得到带有返回值的线程则实现Callable接口。

14、Java语言的三大特性?

封装、继承、多态

15、几个方法

notify:唤醒在该对象上等待的某个线程
notifyAll:唤醒在该对象上等待的所有线程
toString:转换成字符串

16、while循环和do...while循环的区别?

while循环是先判断再执行。
do...while循环是先执行一次,再判断下一次要不要执行。

17、&和&&的区别?

例:
a==b&b==c
即使a==b为false,程序还是会继续判断b是否等于c。 a==b&&b==c
如果a==b为false,程序不会继续判断b是否等于c。 判断某对象中的属性是否等于某值,则必须使用&&,否则会出现空指针异常。

18、String str="a"与String str=new String("a")一样吗?

不一样,因为分配内存方式不同。
String str="a",是常量池方式。
String str=new String("a"),是堆内存方式。

19、抽象类能使用final修饰吗?

不能,定义抽象类就是要让其他方法继承的,final就是最终的,不能被继承。

20、重载与重写的区别?重载的方法能否根据返回类型进行区分?

重载与重写都是实现多态的方式。

重载:编译时的多态性。
重写:运行时的多态性。 重载:发生在一个类中,同名的方法,参数类型不同、参数个数不同、或者类型和个数都不同。
重写:发生在子类与父类之间,要求同名的被重写的方法有相同的参数列表(参数类型、参数个数),有兼容的返回类型。 重载对返回类型没有特殊要求,不能根据返回类型进行区分。

21、什么是序列化和反序列化?

序列化:将对象转为字节序列的过程
反序列化:将字节序列转为目标对象的过程。

22、什么时候需要序列化?

当Java对象需要在网络上传输或者持久化存储到文件中时。

23、序列化怎么实现?

让类实现Serializable接口,注入该类对象是可被序列。

24、某些数据不想序列化,如何处理?

在字段前面加上transient关键字。
例:transien privat String name;

25、List、Set、Map是否继承自Collection接口?

List:是一个有序集合,可包含重复元素。List的长度可动态变换。
Set:元素不可重复的集合,无序。
Map:有key和value,Map是一个将key映射到value的对象。一个Map不能包含重复的key,每个key只能映射一个value。 List、Set继承自Collection接口。
Map是键值对映射容器,不是继承自Collection接口。

26、HashMap和HashTable的区别是什么?

1.HashMap允许key和value为空,HashTable不允许。
2.HashTable是同步的,而HashMap不是。HashMap适合单线程环境,HashTable适合多线程环境。
3.在Java1.4之后引入了LinkedHashMap,HashMap的一个子类。
假如想要遍历顺序,很容易从HashMap转向LinkedHashMap,但是HashTable不是这样的,它的顺序是不可预知的。
4.HashMap提供对key的Set进行遍历,因此它是fail-fast的,但HashTable提供对Enumeration进行遍历,它不支持fail-fast。
5.HashTable被认为是个遗留的类,如果你寻求在迭代的时候修改Map,你应该使用CocurrenHashMAP。

Java面试常见基础问题的更多相关文章

  1. Java面试-常见基础笔试题目

    1. Vector, ArrayList, LinkedList的区别 Vector:①长度可变,以类似数组的形式存储于内存中,线程安全(同步),因为其大部分方法都有synchronized 关键字, ...

  2. 【Java面试】基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...

  3. java面试| 精选基础题(3)

    每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 系列文章 java面试| 精选基础题(1) java面试|精选基础题(2) 1.float f=3.4;是否正确? 答:不正确,编译无法通过 ...

  4. java面试| 精选基础题(2)

    关注微信公众号"java从心",置顶公众号 每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 继续挖掘一些有趣的基础面试题,有错望指出来哈,请赐教~ 1.包装类的装箱与拆 ...

  5. Java面试常见知识点总结(三)

    21.volatile关键字: 一旦一个共享变量(类的成员变量.类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:   (1) 保证了不同线程对这个变量进行操作时的可见性,即一个线程 ...

  6. java面试常见题目

    JAVA相关基础知识面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用 ...

  7. java面试|精选基础(1)

    以下题目是从面试经历和常考面试题中选出有点儿意思的题目,参考答案如有错误,请联系小编指正,感谢! 1.反射 1.1定义 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法 ...

  8. Java面试专题-基础篇(1)

  9. Java面试准备基础篇_11.24

    Java类加载机制 Java内存模型JMM 为什么 Redis 单线程能支撑高并发? 高并发下的接口幂等性解决方案! 面试官问:平常你是怎么对 Java 服务进行调优的? JAVA虚拟机(JVM)六: ...

随机推荐

  1. 资源:Hadoop安装包下载路径

    下载路径 Hadoop所有版本:http://archive.apache.org/dist/hadoop/common/

  2. 长按短按控制LED灯-ESP32中断处理

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include "freertos ...

  3. Python单元测试框架unittest之单用例管理(一)

    一.概述 本文介绍python的单元测试框架unittest,unittest原名为PyUnit,是由java的JUnit衍生而来,这是Python自带的标准模块unittest.unittest是基 ...

  4. C++ 标准模板库(STL)——算法(Algorithms)的用法及理解

    C++ STL中的算法(Algorithms)作用于容器.它们提供了执行各种操作的方式,包括对容器内容执行初始化.排序.搜索和转换等操作.按照对容器内容的操作可将STL 中的算法大致分为四类: (1) ...

  5. C语言typedef的用法详解

    C语言允许为一个数据类型起一个新的别名,就像给人起"绰号"一样. 起别名的目的不是为了提高程序运行效率,而是为了编码方便.例如有一个结构体的名字是 stu,要想定义一个结构体变量就 ...

  6. Java基础00-函数式接口33

    1. 函数式接口 1.1 函数式接口概述 代码示例: 定义一个接口: //次注解表示该接口为函数式接口,只能有一个抽象方法,如果有第二个就会报错. @FunctionalInterface publi ...

  7. ORB-SLAM3论文阅读:ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

    简介 ORB-SLAM3是第一个能在单目.双目.RGBD鱼眼相机和针孔相机模型下运行视觉.视觉-惯导以及多地图SLAM的系统.其贡献主要包括两方面:提出了完全依赖于最大后验估计的紧耦合视觉-惯导SLA ...

  8. Requests方法 -- Blog流程类进行关联

    1.接口封装关联 1.有些接口经常会用到比如登录的接口,这时候我们可以每个接口都封装成一个方法,如:登录.保存草稿.发帖.删帖,这四个接口就可以写成四个方法2.接口封装好了后,后面我们写用例那就直接调 ...

  9. Solon 1.5.16 发布,多项细节优化

    Solon 是一个轻量的Java基础开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Job.Micro service.WebS ...

  10. NestJS WebSocket 开始使用

    使用NestJs提供WebSocket服务. 本文会在新建项目的基础上增加2个类 Gateway 实现业务逻辑的地方 WebSocketAdapter WebSocket适配器 新建项目 新建一个项目 ...