目录
7.String、StringBuilder、StringBuffer的区别
21. hashCode()有什么用?与equals有什么关系?
一、Java语言基础
1.Java的八大基本类型
- 数值型:整数类型(byte、short、int、long)和浮点类型(double、float)
- 字符型:字符类型(char)
- 布尔型:布尔类型(boolean)
数据类型 | 内存空间(8位等于1字节) |
byte | 8位 |
short | 16位 |
int | 32位 |
long | 64位 |
float | 32位 |
double | 64位 |
char | 16位 |
boolean | 1位 |
2.标识符和关键字
- 标识符:标识符可以理解为一个名字,用来标识类名、变量名、方法名、数组名、文件名的有效字符序列。由任意顺序的字母、下划线(_)、$和数字组成,第一个字符不能是数字和关键字。
- 关键字:是Java语言中被赋予特定意义的单词,如public、finally、基本数据类型、return等。
3.访问修饰符
- public:可以被该项目中的所有包的所有类访问。
- protect:可以被同一个包的类以及其它包的子类访问。
- default:没有修饰符修饰(即默认),只有同一个包的类能访问。
- private:表示私有,只有自己的类能访问。——子类能继承,但是不能调用。
4.String类的常用方法
- length():获取字符串的长度。
- indexOf()和lastIndexOf():字符串查找。
- charAt():获取指定索引位置的字符串。
- substring():获取子字符串。
- trim():去除空格。
- replace():字符串替换。
- starsWith()和endsWith():用于判断字符串是否以指定的内容开始或结束。
- equals():判断字符串是否相等。
- compareTo():按字典顺序比较两个字符串。
- toLowerCase():将字符串中的所有字符从大写字母改写为小写字母。
- toUpperCase():将字符串中的所有字符从小写字母改写为大写字母。
- split():字符串分割。
- format():格式化字符串。
5.重载和重写的区别
- 重载(overload):发生在同一类中,方法名必须相同,参数类型、参数个数、参数顺序、方法返回值、访问修饰符可以不一样。
- 重写(override): 发生在父子类中,方法名、参数必须相同,访问修饰符范围必须大于等于父类,异常范围要小于等于父类,父类方法是private不能重写。
6.Java的三大特性
- 封装、继承、多态
7.String、StringBuilder、StringBuffer的区别
- String:是不可变对象,每次对String类型的改变时都会生成一个新的对象。
- StringBuilder:线程不安全,效率高,多用于单线程。
- StringBuffer:线程安全,由于加锁(synchronized)的原因,效率不如StringBuilder,多用于多线程。
8.final、finally、finalize 的区别
- final:可以修饰类,变量,方法(修饰的类不能被继承,修饰的变量不能重新赋值,修饰的方法不能被重写)。
- finally:用于抛异常,与try和catch一起使用,finally代码块内语句无论是否发生异常,都会在执行finally,常用于一些流的关闭。
- finalize:是Object类的一个方法,在对象被回收之前调用的方法,给对象自己最后一个复活的机会,进行资源回收,例如关闭文件等。
9.throw 和 throws 的区别
- throw:在方法体内使用,表示抛出具体异常,由方法体内的语句处理;一定抛出了异常;
- throws:在方法声明上使用,表示抛出异常,由调用者来进行异常处理;可能出现异常,不一定会发生异常;
10.ArrayList 和 LinkedList 的区别
- ArrayList:是动态数组的数据结构,连续的内存存储,适合下标访问,查找和遍历的效率较高;
- LinkedList :是双向链表的数据结构,可以存储在分散的内存中,不适合查询,需要逐一遍历,增加和删除的效率较高,;
11.Error和Exception有什么区别
- Error: 程序无法处理,比较严重的问题,程序会立即崩溃,jvm停止运行。
- Exception: 程序本身可以处理(向上抛出或者捕获)。编译时异常和运行时异常
12.实例化对象有哪几种方式
- new
- clone()
- 反射
- 先序列化在反序列化
13.java中的数据结构
- 数组、链表、哈希表、栈、堆、队列、树、图
14.List、Set、Map的区别
- List集合有序、可重复的单例集合,按对象进入的顺序保存对象,允许多个null元素对象,可以使用iterator(迭代器)取出所有元素,在逐一遍历,还可以使用get(int index)获取指定下标的元素。
- Set集合无序、不可重复的单例集合。最对允许一个null元素对象,取元素只能用iterator取得所有元素,再逐一遍历各个元素。
- Map集合有序、k不可重复,v可重复的双例集合。
集合类型 | 是否可以重复 | 元素是否有序 |
List(单例集合) | 是 | 有序 |
Set(单例集合) | 否 | 无序 |
Map(双例集合) | key不可以重复,value可以重复 | 有序 |
15.http中重定向和转发的区别
- 重定向发送两次请求,转发发送一次请求
- 重定向地址栏会变化,转发地址栏不会变化
- 重定向是浏览器跳转,转发是服务器跳转
- 重定向可以跳转任意网址,转发只能跳转当前项目
- 重定向会有数据丢失,转发不会数据丢失
16.get和post请求的区别
- get相对不安全,数据放在url中(请求行),post放在body中(请求体),相对安全。
- get传送的数据量小,post传送的数据量大。
- get效率比post高,是form的默认提交方法。
17.cookie和session的区别
- 数据存储位置不同:cookie存储在客户端,session存储在服务器端
- 存储数据大小不同:一个cookie存储的数据不超过3K,session可以存储任意数据;当 session存储数据太多时,服务器可选择进行清理。
- 生命周期不同:cookie的生命周期当浏览器关闭的时候就消亡了,cookie的生命周期是累计的,从创建时就开始计时,30min后cookie生命周期结束;ession的生命周期是间隔的,从创建时开 始计时如在30min内没有访问session,那么session生命周期就被销毁。
- 数据类型不同:两者都是key-value结构,但针对value的类型是有差异的。(cookie:value只能是字符串类型。 session:value是object类型)。
- 安全性不同:cookie不是很安全,session相对安全
18.接口和抽象类的区别
- 抽象类只能继承一个,接口可以实现多个。
- 抽象类可以存在普通成员函数,而接口中只能存在public abstract方法。
- 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的。
-
接口 抽象类 都可以被继承 都不能被实例化 都可以包含方法的声明 不能包含成员变量 可包含成员变量 不能包含构造函数 可包含构造函数 可以多继承 只能单继承 方法声明默认public 可以由其他访问修饰符修饰 子类必须实现所有声明的方法 子类必须实现所有的抽象方法(必须是公有的)
19.HashMap和HashTable的区别
- hashmap是非线程安全,hashtable是线程安全。hashmap的性能会高于hashtable,无特殊需求建议使用hashmap,多线程环境下使用hashtable。
- hashmap允许使用null作为key,hashtable不允许。
- hashmap的初始容量为16,hashtable初始容量为11。
20.Collection和 Collections的区别
- Collection是一个接口,它是Set、List等容器的父接口。
- Collections是一个工具类,提供了一系列的静态方法来辅助容器操作,这些方法包括对容器的搜索、排序、线程安全化等。
21. hashCode()有什么用?与equals有什么关系?
- 当两个对象的hashcode一样,两个对象可能一样,如果hashcode不一样,那么肯定不是同一个对象,相当于先确定一个大的范围,再用equals去比较,减少equals比较的次数,提高运算效率,hashcode的存在主要是查找的快捷性。如hashmap,hashtable等。
22.==和equals的区别
- ==: 基础类型比较的值,引用类型比较的是地址值。
- equals: 没有重写比较地址值是否相等,重写比较的内容是否相对。比如String类重写equals,源码首先比较是否都是String对象,然后再向下比较。
23.int和integer的区别
- Integer是int的包装类;int是基本数据类型。
- Integer的默认值是null;int的默认值是0
- Integer变量必须实例化后才能使用;int变量不需要。
- Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值。
- Integer一定要使用 equals 来比较两个变量是否相等,int 可以使用 == 来对比两个变量是否相等。
24.JDK1.8新特性
- Lambda表达式
- 函数式接口
- 接口中的默认方法和静态方法
- 方法引用和构造器调用
- Stream API
- 新时间日期API
- HashMap优化
- Optional类
25.什么是MySQL事物
- 事务是对数据库中一系列操作进行统一的回滚或者提交的操作,主要用来保证数据的完整性和一致性。
- 往通俗的讲就是,事务就是一个整体,里面的内容要么都执行成功,要么都不成功。不可能存在部分执行成功而部分执行不成功的情况。
26.事物的四大特性
- 原子性(Atomicity): 指事务是一个不可分割的最小工作单位,要么全部成功要么全部失败。
- 一致性(Consistency): 事务执行前和事务执行后,原本和数据库一致的数据仍然一致。
- 隔离性(Isolation): 一个事务的执行不能被其他事务干扰,事务与事务之间互不干扰。
- 持久性(Durability): 事务一旦被提交了,那么对数据库中的数据的改变就是永久的。