java面试题—基础篇(一)

发布于:2023-01-24 ⋅ 阅读:(18) ⋅ 点赞:(0) ⋅ 评论:(0)

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面试基础篇的题目,如有错误欢迎指正~ ==


网站公告

欢迎关注微信公众号

今日签到

点亮在社区的每一天
签到