ToB企服应用市场:ToB评测及商务社交产业平台
标题:
25届实习/秋招-java面试-JavaSe面试题整理-牛客网近一年
[打印本页]
作者:
尚未崩坏
时间:
2023-12-3 23:47
标题:
25届实习/秋招-java面试-JavaSe面试题整理-牛客网近一年
JavaSe
面向对象
Java对象创建的流程步骤,和方法
new初始化过程,和反射相比谁更快?
怎样唯一确定一个类?如果两个类的全限定名相同怎么办?
为什么要有封装类
static和final区别。
static表示属于类,只有一个
static修饰的字段什么时候初始化,放在哪
对于static变量的理解,有什么用
static变量分配内存的时候发生在哪个环节?
static加在类上和不加区别,除了修饰类、属性、方法还有吗? 代码块
使用static需要注意什么
写一个static main方法,能调用非静态方法吗?如果要调用要怎么调用?为什么不能不创建对象调用?
静态方法和非静态方法的区别
实例化:
class B {
static B t1 = new B();
static B t2 = new B();
{
System.out.println("代码块");
}
static {
System.out.println("静态块");
}
}
public class Main {
public static void main(String[] args) throws Exception {
B b = new B();
}
}
//输出什么
复制代码
重载的重写的区别
构造方法的重载
多态用在哪里,有什么用处。
多态的原理
final
final修饰变量和静态变量在哪里可以赋值
final修饰类、方法(重写)、字段、对象的作用,fin al修饰一个对象是什么不变。
final可以修饰接口吗。不可
final修饰变量 不能改写 修饰list集合,可以加数据吗
继承:Java支持多继承吗?从开发的角度说一下为什么不支持多继承
接口和抽象类的区别?应用场景?
普通类和抽象类区别,可以被new吗
抽象类可以实现接口吗 -- 可以
两者是否可以实例化
set接口可以定义私有成员变量吗
接口:多继承
Java权限修饰符
四个的区别
面向对象的三个特性
和面向过程编程有什么区别?
什么是结构化编程、面向对象编程以及函数式编程?
Object 类有什么方法--举出常用方法
== 和equals的区别
equals是判断引用是否一样。看是否重写。
默认使用 ==
String类里面的equals方法实现看过吗,
源码解析
自己实现equals要注意什么
finalize方法
JVM中自救
hashcode方法
什么时候要重写hashcode
java底层集合框架中使用hashCode方法来确定元素的保存位置。
浅拷贝和深拷贝的区别,深拷贝怎么实现,引用拷贝。
深拷贝会在堆上创建一个新的对象。
基本类型浅克隆可以,引用类型
引用类型在浅克隆后,要对引用的变量再进行嵌套克隆。
可以看javaguide,引用/浅拷贝/深拷贝的区别
浅拷贝
Object[] o, 可以存放各种类型的数据,底层怎么存放的
Object o = 1L 是怎么存储的
内部类--了解即可:
匿名内部类是局部内部类
匿名内部类访问外部成员变量时编译器会提示需要final修饰为什么
常用工具类String-Arrays
java原生类中用的最多的类
Arrays类(工具类),常用方法
特性,扩容
Java的sort是怎么实现的?数据量阈值具体是多少?
String类
常用方法和构造,valueOf
java7 String 存储结构和API 变更
string为什么设计成不可变,好处
private且final无法继承。
java的string类的设计思想,jdk1.9前后区别。
底层char / byte,在 Java 9 之后,String 类的实现改用 byte 数组存储字符串
解释
换成不定长的存储数组会有什么问题, "12我是"12占用两个字节,我是占用应该是6个字节,这样存在什么问题。
string为什么不能是基本数据类型
String直接赋值 stringpoll 和 new一个对象的区别。
String str = new String("abc") 创建字符串对象 --这里涉及两个对象
new String("a") + new String("b") 涉及几个对象
String a = "a", String b = new String(a + "b"); 创建了几个对象
String str = "i"; String str2 = new String("i")
一样吗
字符串常量池
字面量,字面量是对象吗,能调用方法吗
如何设置大小
intern( )方法
, 见JVM
内存位置在哪
方法区-元空间- 本地内存
探秘位置在哪
-- 真正意义上字符串常量池在堆中存储,元空间可能有引用堆中字符串常量,运行时常量池在方法区中
优化常量池的方法
StringBuffer(synchronized)和StringBuilder的区别和String的区别
StringBuilder的方法
StringBuffer和StringBuilder是如何实现可变的呢?底层原理是什么?如何优化
如果让你来实现StringBuffer和StringBuilder,你会怎么实现?
复制代码
String的+=和stringBuilder哪个性能高?面试官答其实差不多,+=在一行的时候会隐性转换为stringbuilder
基本数据类型和包装类
String是什么类型
基本数据类型介绍
基本类型几种,分别占用空间
成员变量没有手动赋值,系统会默认赋值(局部变量不会)
除了基本数据类型,数组存放的都是对象的引用地址
包装类,为什么要包装类
Number抽象类
非自动装箱和自动装箱拆箱
自动拆装箱会有什么问题
传输对象如RPC/Http要用包装类吗
包装类常量池
Integer的范围,哪些有常量池
常量池是放在哪里的
new Integer()与Integer.valueOf()的区别,谁块
判断相等的为什么不用 == ?
int和Integer区别,int有几个字节
Integer的构造方法。
Int i =1 和 integer i=1存储区别
如何声明一个int的List(不能,只能声明Integer的List)
Integer是线程安全的吗,哪些类是线程安全的
给Integer最大值+1结果
String int Integer直接相互转换 : 静态方法
类都是valueOf,到int不一样。
Long 缓存池,包装类
switch可以放哪些类型
String / int, 但byte,short,char自动转成int
方法参数传递:JAVA中值传递还是引用传递
DateFormat
正则表达式略。
java中浮点数精度怎么解决,有了解过实现吗,为什么有精度问题
判断BigDecimal是否相等
如何进行计算、怎么四舍五入
常量池和包装类的缓存
为什么有常量池,思想
分类,两类。
符号引用和字面值的关系
包装类和常量池的区别
同样思考,为什么是安全的,为什么要安全
异常:
基本介绍
exception和error区别
异常继承的根类
根类有哪些方法,处理错误
Exception有哪些,从上往下说说看
编译期异常和非编译期异常区别
编译时异常是在编译阶段发生的吗
是否必须处理
异常的本质是什么,发生在什么时候
编译异常:
运行时异常:
遇到过哪些异常,(空指针在哪遇到了、SQL 异常、类型转换异常)
谈谈 Java 异常处理机制,异常处理的两种方式:
throws的作用
throw和throws
的区别
try/catch机制
try finally不用catch行吗
finally一种情况下不会执行
为什么有些异常需要捕获try catch,有些直接往上抛就可以,面试官提示了一下编译那一块
final/finally/finalize
如何自定义异常
集合框架:
介绍Java集合(容器),什么是集合存什么
几个常用的
数据结构的底层原理
特点,存储结构,红黑树。
介绍Java里面常见的集合、
整体框架,父接口
如何升级成线程安全的容器--Collections
两个大的父类
Collection接口
继承了哪个接口:
Iterator怎么用
本质是什么,remove的使用。ediary
哪些继承了Collection,特点和函数
常用方法方法:add clear remove toArray()
Collection集合的输出方式
简单讲讲List和Set的区别(都是接口),都继承了哪个接口,Map继承了上述接口吗
List, Set, Queue, Map 四者的区别
List 和 map的实现类 和各自的底层结构
Collections 和 Collection
Collections.sort和Arrays.sort
怎么确保一个集合不可修改
集合的选用,是否排序
如何选
collections有什么实现
List:
List集合的特有方法(List是接口)
ArrayList和LinkedList
区别,底层结构,优缺点和使用场景
为什么都用arraylist
无需同步,大部分尾插
arraylist对大片的连续内存有很高要求,linkedlist只需要碎片空间
ArrayList和LinkedList哪个快
知道容量,还要看位置
ArrayList:
惰性初始化,构造方法
arraylist扩容机制(初始容量,为啥扩容是1.5),底层arraycopy函数,删除和加入代价都很大
一个关于ArrayList扩容的场景题优化扩容,让自己设计增强类去实现。
为什么可以随机读取,
底层Object[]数组,为什么限制只能存一类
应用:
ArrayList中删除偶数,不能用remove
多线程往ArrayList中写10万条数据,会出现什么问题
ArrayList一边遍历一边删除的时候怎么做,remove
写时复制并发安全CopyOnWriteArrayList
写入操作的实现,不适用于哪种场景。
参考
Collections/vector
LinkedList
LinkedList为什么是双端链表
便于查找和修改
个链表没有被引用,会被立马删除吗
分别分析一下插入、删除、查找的时间复杂度
可以通过什么数据结构来加快LinkedList的访问
ArrayList和linkedlist的多线程问题如何解决
数组和List的转换方法有哪些
Vector ,扩容
Map:
集合关系(Collection和Map)
Map集合的体系特点。
键的特点,键和值都是什么类型
map集合下常用的子类有哪些/实现类
map接口,HashMap是实现
常用的api
如何获取键值对
.values( ),
参考
Map集合的遍历方式:有几种,效率
第一种获取key
keySet,用什么承接
第二种,全部转成Set
Map.Entry 是什么
怎么写
HashMap集合
源码
key如何保证唯一
是否可为null,有几个,对并发的影响
是有序还是无序的
底层结构-哈希表优点
Node是什么,里面存了什么东西,hashMap底层是什么数组
contains方法底层用的什么,原理
hashCode()和equals()有什么作用、区别。
key通过hashCode得到hash值(怎么算的,为什么要扰动),怎么到下标-长度,
hashMap数组长为什么是2的整数幂
hash值与数组下标的关系
equals的作用,不重复equals
比对象的key
,什么时候调用。
如果key指向的对象一样不用比较
什么时候要重写hashcode和equals
不重写hashcode的后果,以hashSet/hashMap为例。重写equals必须重写hashcode
map中的key如果是对象并且是我们自己声明需要注意什么
注意
hash碰撞的解决方法,分为开放地址(线性-平方)和链地址法,各自的场景,
一致性hash
1.8之前为什么这么设置,解决hash冲突有别的办法吗
数组初始容量,为什么负载因子是0.75 ,怎么扩容
成员属性:
1.8之后:为什么引入红黑树(为什么不用avl树,而不是BST、B+、堆等等)? 红黑树自旋条件,平衡自旋怎么做的复杂度多少? 红黑树的性质、红黑树如何调节平衡
什么时候转红黑树,为什么红黑树阈值是8,不是6或者10
红黑树会退化成链表吗,什么时候
转红黑树的数组最小长度(64)见源码,先扩展数组,resize()为短链表
成员方法:
1.8的三个优化:红黑树,尾插,插入扩容逻辑还有位置
Put操作流程,源码
Key冲突的是怎么处理的,如何判断是覆盖还是加数据
插入还要看是链表还是红黑树
JDK1.7 冲突的时候为什么采用头插法,有什么缺点(循环链表),头插法和尾插法的区别,扩容
连环提问
扩容死链-死循环
-- 头插法链表位置会翻转
1.7和1.8都存在数据丢失问题
扩容机制的区别,前扩容和后扩容
并发异常
java的hashmap的fastfail机制。
为什么不是线程安全的。
它在什么情况下会出现线程不安全的问题,不安全情况下会出现什么现象
?说一下场景
jdk7/8有都什么问题?问题有什么区别?
平时使用hashmap要关注那些方面的东西
有措施能让Hashmap变得线程安全吗?
ConcrrentHashmap,Hashtable,Collections.synchronizedMap
hashmap和treemap有什么区别,什么时候用?
treemap底层数据结构是什么?
怎么实现有序
concurrentHashmap
见JUC
Set:
HashSet: hashset是怎么基于hashmap实现的。
如果自己什么设计
如何去重:
hashcode比较和equals比较
一个自定义的对象的话,那我这个对象应该是有什么动作吗
LinkedHashSet为什么有序:
多一个顺序存储的链占据空间。
HashSet和TreeSet有什么区别?
集合是如何排序的
如果传入TreeMap的key值是对象,那么对象应该满足什么条件
为对象的类//用的集合设置比较器,实现Comparable接口,重写compareTo方法。
比较器底层原理Comparator,比较器类
compare和compareTO
左>右,返回正。
怎么区分交换
。 一般升序就写左右即可。
代码如何写
treeSet和treeMap的关系
Queue
常用的方法。
泛型
<ul>什么时候起作用
使用泛型有什么好处 ,理解和应用场景
类方法接口
通配符
<ul>泛型中如何确定上下限(
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4