java面试常见问题<跟随自己记录中...>【基础、集合、框架、一点前端、一点Linux】

1.java中代码遇到过什么问题

maven版本号有问题

Spring的各种不知道是不是bug的问题

vue、javaweb路径不匹配

npm运行bug问题各种各样

vue中命名大小写格式、驼峰命名问题

java Date类型默认的接收时间格式与前端的日期插件和数据库中默认时间格式不一样,需要使用@DateTimeFormat注解

2.linux基本命令

pwd命令用于显示用户当前所处的目录

cd命令用来在不同的目录中进行切换

ls命令用来列出文件或目录信息

mkdir命令用于创建一个目录

rmdir命令用于删除空目录

cp命令主要用于文件或目录的复制

mv命令主要用于文件或目录的移动或改名

3.javaScrip中var、let、const的区别

let 声明的范围是块作用域,而 var 声明的范围是函数作用域。而且let 、const不可以重复声明变量,var 可以重复声明变量。

const 的行为和 let 基本相同,唯一一个重要的区别就是它在声明变量的同时必须初始化变量

4.java中抽象类和接口的区别

1、接口要被类实现,抽象类要被子类继承。
2、接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。
3、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
4、接口是设计的结果,抽象类是重构的结果。
5、抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高。
6、抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变常量。
7、抽象类主要用来抽象类别,接口主要用来抽象功能。

5.tcp三次握手 四次挥手

三次握手原理:

第1次握手:客户端发送一个带有SYN(synchronize)标志的数据包给服务端;

第2次握手:服务端接收成功后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了;

第3次握手:客户端再回传一个带有ACK标志的数据包,表示我知道了,握手结束。

其中:SYN标志位数置1,表示建立TCP连接;ACK标志表示验证字段。

请添加图片描述

四次挥手原理:

第1次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1状态;

第2次挥手:服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态;

第3次挥手:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态;

第4次挥手:客户端收到FIN后,客户端t进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,服务端进入CLOSED状态,完成四次挥手。

其中:FIN标志位数置1,表示断开TCP连接。
请添加图片描述

图片为搬运

6.java有哪些基本数据类型

1、整型:byte、short、int、long

2、字符型:char

3、浮点型:float、double

4、布尔型:boolean

7.float int string这几种类型运行一行语句最后出来的是哪种数据类型呢

float

自动类型转换顺序:

byte(1字节) – > short(2字节)-- > int(4字节) – > long(8字节) --> float(4字节) – > double(8字节)

char (2字节)-- > int(4字节) – > long(8字节) --> float(4字节) – > double(8字节)

8.排序方法有哪些

冒泡排序 快速排序 堆排序 选择排序 插入排序

请添加图片描述

9.增删查改的四个关键字是什么

CRUD

增(Create)、查(Retrieve)、改(Update)、删(Delete)

insert delete select update【但实际用到的】

10.数据库想要根据学生的姓名和年龄在学生表里查找的语句(常考,感觉每个面试官都会问)

select name(字段) from student(表名) where age = 15;

11.数组和集合有什么区别

**存储的数据类型不同。**数组可以储存基本数据类型和对象,而集合中只能储存对象(可以以包装类形式存储基本数据类型)。
**长度是否可变不同。**数组的长度是固定的,集合长度是可以改变的。
**定义时是否指定元素类型不同。**定义数组时必须指定数组元素类型,集合默认其中所有元素都是Object。
**获取元素个数的方式不同。**无法直接获取数组实际存储的元素个数,length用来获取数组的长度,但可以通过size()直接获取集合实际存储的元素个数。
**实现方式不同。**集合有多种实现方式和不同的适用场合,而不像数组仅采用分配连续的空间方式。
**特性不同。**集合以接口和类的形式存在,具有封装、继承和多态等类的特性,通过简单的方法和属性调用即可实现各种复杂的操作,大大提高软件的开发效率。而数组没有这些特性。

12.数组和链表的优劣

数组的优点:

  • 内存连续:数组在内存中占据连续的空间,这使得访问数组中的某个元素非常快速,因为可以通过下标直接计算地址。
  • 空间利用率高:由于数组元素紧密排列,没有额外的空间浪费,所以空间利用率很高。

数组的缺点:

  • 插入和删除操作效率低:在数组的中间位置插入或删除元素时,需要移动大量的元素以保持内存的连续性,因此效率较低。
  • 大小固定:数组在创建时大小是固定的,如果需要存储更多的元素,可能需要重新分配更大的内存空间并进行数据复制,这会导致额外的开销。

链表的优点:

  • 动态调整大小:链表的大小可以根据需要动态地增长或缩小,无需预先分配固定大小的内存空间。
  • 插入和删除操作高效:在链表中插入或删除元素时,只需要调整相关节点的指针即可,无需移动大量元素,因此效率较高。

链表的缺点:

  • 访问元素效率低:链表中访问某个元素需要从头节点开始遍历,直到找到目标元素,因此访问效率较低。
  • 需要额外的空间存储指针:链表中的每个节点都需要存储指向下一个节点的指针,这会导致一定的空间开销。

13.hashmap是什么

底层逻辑结构是数组和链表结合在一起使用也就是链表散列,键值对

HashMap的底层在JDK1.8之前采用数组+链表组成,用(n - 1) & hash找到数组索引位置,如果冲突则使用拉链法解决。

请添加图片描述

在JDK1.8之后的HashMap初始数据结构仍采用数组+链表,当某个桶链表的长度大于8时,会先调用treeifyBin()方法,这个方法会判断数组长度是否小于64,如果大于或等于则执行转换红黑树操作,以减少搜索时间;反之则调用resize()进行扩容。

请添加图片描述

14.hashmap中键队值中key value哪个是不能重复的

key不允许重复

15.集合体系结构

请添加图片描述

有序性(List Map)和无序性(set)
map和collection
map是双列 collection是单列

15.Java中Map和Collection的区别如下:

  • 存储内容不同 。Map是双列集合,存储的是键值对;Collection是单列集合,存储的是单个对象。
  • 解决问题方式不同 。Map集合是通过键找到值;Collection集合是通过元素本身的特性进行操作。
  • 方法不同 。Map没有继承Collection接口,方法跟Collection不同,如size()、isEmpty()、clear()、containsKey(Object key)、containsValue(Object value)、get(Object key)等。

(明日继续更新ing…)

16.Redis淘汰机制

17.Redis持久化策略

18.用到的框架springboot是? 介绍一下springboot,springboot的最大特点

19.冒泡排序的思想,简述一下

20.vue插入图片时需要用什么来限制上传的图片格式和大小

21.图片的宽度和高度在哪里设置

22.vue的最大特点

23.aop和Ioc

24.vue的生命周期

25.数据库的事务隔离类型

26.get和post的区别

  • 20
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值