Java面试必备

目录

一、Java语言基础

1.Java的八大基本类型

2.标识符和关键字

3.访问修饰符

4.String类的常用方法

5.重载和重写的区别

6.Java的三大特性

7.String、StringBuilder、StringBuffer的区别

8.final、finally、finalize 的区别

9.throw 和 throws 的区别

10.ArrayList 和 LinkedList 的区别

11.Error和Exception有什么区别

12.实例化对象有哪几种方式

13.java中的数据结构

14.List、Set、Map的区别

15.http中重定向和转发的区别

16.get和post请求的区别

17.cookie和session的区别

18.接口和抽象类的区别

19.HashMap和HashTable的区别 

20.Collection和 Collections的区别

21. hashCode()有什么用?与equals有什么关系?

22.==和equals的区别

23.int和integer的区别

24.JDK1.8新特性 

25.什么是MySQL事物

26.事物的四大特性



一、Java语言基础

1.Java的八大基本类型

  • 数值型:整数类型(byte、short、int、long)和浮点类型(double、float)
  • 字符型:字符类型(char)
  • 布尔型:布尔类型(boolean)

数据类型内存空间(8位等于1字节)
byte8位
short16位
int32位
long64位
float32位
double64位
char16位
boolean1位

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): 事务一旦被提交了,那么对数据库中的数据的改变就是永久的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值