文章目录
- 1.java中++和--的前缀和后缀有什么区别?
- 2.java的基本数据类型有哪些,分别占多少内存?
- 3.java中有哪些循环,有什么区别?
- 4.&&和&,||和|有什么区别
- 5.讲一讲Lambda表达式是什么?有什么应用?
- 6.对集合的stream有了解吗?讲讲有哪些用法?
- 7.抽象类和接口的区别?
- 8.讲一下对面向对象的了解?
- 9.介绍一下Java的集合
- 10.JDK 和 JRE 有什么区别?
- 11.== 和 equals 的区别是什么?
- 12.java中操作字符串都有哪些类,它们之间有什么区别?
- 13.String 类的常用方法都有那些?
- 14.java 中 IO 流分为几种?
- 15.Collection 和 Collections 有什么区别?
- 16.HashMap 和 Hashtable 有什么区别?
- 17.ArrayList 和 LinkedList 的区别是什么?
- 18.ArrayList 和 Vector 的区别是什么?
- 19.ArrayList的扩容机制
- 20.hashmap 是怎么扩容的,为什么是2的幂?
- 21.什么是反射?
- 22.什么是 java 序列化?什么情况下需要序列化?
- 23.为什么要使用克隆?如何实现对象克隆?
- 24.深拷贝和浅拷贝区别是什么?
- 25.重写和重载的区别
1.java中++和–的前缀和后缀有什么区别?
++在前表示先自增后运算,++在后表示先运算后自增
2.java的基本数据类型有哪些,分别占多少内存?
byte 1字节 short 2字节 int 4字节 long 8字节
float 4字节 double 8字节 boolen(本身4字节)运算时2字节 char 1字节
3.java中有哪些循环,有什么区别?
for 循环 :循环次数已知时使用;
while循环:循环次数未知时使用;
dowhile循环 每次都会执行一次do里面的内容
4.&&和&,||和|有什么区别
短路与&& 左边为fasle右边不会执行 逻辑与& 左边为fasle 右边仍执行
短路或|| 左边为ture 右边不执行 ;逻辑或| 左边为true 右边还会执行
5.讲一讲Lambda表达式是什么?有什么应用?
lambda表达式是JAVA8中提供的一种新的特性,它可以简化匿名内部类的写法 应用:函数式接口
6.对集合的stream有了解吗?讲讲有哪些用法?
stream流是对集合的一系列操作过程 用法:遍历foreach ;过滤filter ;一个流中的元素映射到另一个流中 map;取前几个limit ; sort排序
7.抽象类和接口的区别?
接口使用interface关键字 抽象类使用abstract
接口中没有构造方法
接口中的抽象方法只能是public,抽象类可以是其他的
接口可以多实现,抽象类只能单继承
接口中没有普通方法
8.讲一下对面向对象的了解?
面对对象是一种编程思想,一切皆为对象,贴近人的思维,便于大型项目的设计和管理。
1.封装,装,将属性和方法装到类中统一管理;封,信息隐藏,属性的私有化,提供get/set对其访问,提高数据安全性;
2.继承,子类继承父类的属性和方法,作用有:提高代码复用性、维护性,应用:设计系统时,多个类出现重复的属性和方法,考虑定义父类中;
3.多态,对于同一个方法根据对象类型的不同进行不同实现,提高程序灵活性,编写更通用的代码;基于封装、继承,将父类引用指向子类对象;实现:1.子类继承父类 2.子类重写父类方法 3.子类对象赋值给父类引用。应用:将方法的参数定义为父类的类型,运行时传入子类的对象
9.介绍一下Java的集合
list:有序可重复的集合
set无序不可重复
map 键值对形式 键唯一 值不唯一
10.JDK 和 JRE 有什么区别?
jdk是java开发环境
jre是java运行环境
jvm是java虚拟机
jdk>jre>jvm
11.== 和 equals 的区别是什么?
==如果比的是基本数据类型则比的是值,如果比的是引用数据类型则比的是地址。
equals默认比的是地址,String重写了equals方法则比的是值。
12.java中操作字符串都有哪些类,它们之间有什么区别?
string 字符串常量
stringbuffer:线程安全的 字符串变量
stringbuild:线程不安全的 效率高 字符串变量
13.String 类的常用方法都有那些?
indexOf():返回指定字符的索引。
charAt():返回指定索引处的字符。
replace():字符串替换。
trim():去除字符串两端空白。
split():分割字符串,返回一个分割后的字符串数组。
equals(): 比较两个字符串是否相等
14.java 中 IO 流分为几种?
输入流跟输出流
字节流跟字符流 字节流是以字节为单位传输的(8位传输) 字符流是以字符为单位传输的(16位传输)
15.Collection 和 Collections 有什么区别?
集合分为单列集合和双列集合,Collection是单例集合的接口,底下有list跟set集合。
Collections是集合操作的工具类,包括二分查找、反转、排序等
16.HashMap 和 Hashtable 有什么区别?
hashtable 不允许Nul值跟null键 线程安全 效率非常低
HashMap 允许Nul值跟null键 线程不安全 效率高
17.ArrayList 和 LinkedList 的区别是什么?
ArrayList 底层是数组 是有序可重复的 查询快 增删慢
LinkedList 底层是双向链表 是无序不可重复的 查询慢 增删快
18.ArrayList 和 Vector 的区别是什么?
ArrayList 是线程不安全的 效率高一点
Vector 是线程安全的 效率低
ArrayList 默认扩容是1.5倍 Vector 是两倍
19.ArrayList的扩容机制
ArrayList扩容的本质就是计算出新的扩容数组的size后实例化,并将原有的数组内容复制到新数组中,新的容量默认会是原容量的1.5倍
20.hashmap 是怎么扩容的,为什么是2的幂?
hashmap有加载因子 默认是0.75,添加数量达到整个长度的加载因子就发生扩容。
当长度是2的次幂时 计算下标时 hash值按位与(长度-1)的位上是1 可以避免出现相同的值 减少hash碰撞
21.什么是反射?
反射就是可以动态的调用对象的方法跟属性
22.什么是 java 序列化?什么情况下需要序列化?
java 序列化就是将对象转化为二进制流保存在内存或硬盘中
当对象需要被保存在硬盘或需要进行网络传输的时候
23.为什么要使用克隆?如何实现对象克隆?
相对一个对象进行处理 又想保留原有的数据就需要使用克隆
实现Cloneable接口并重写Object类中的clone方法
实现Serializable接口,通过对象的反序列化实现克隆
24.深拷贝和浅拷贝区别是什么?
浅拷贝和深拷贝对于基本数据类型都是值传递
浅拷贝对于引用数据类型还是指向原有数据的地址
深拷贝是重新创建一个新的对象并复制其内容
25.重写和重载的区别
重载是发生在本类中,重写是发生在父子关系中;
重载要求方法名相同,参数列表不同,重写要求方法名相同,参数列表相同,返回值相同或返回值同类型的子类,权限修饰符不能比父类更严格;
重写用@override修饰
== 🤞以上是本人整理的一些java面试基础篇的题目,如有错误欢迎指正~ ==