java面试题中常见名词注解

一.常见名词注解

1.mysql索引,索引数据结构,hash,二叉树,B树,B+树,红黑树,

mysql索引:帮助mysql高效获取数据的数据结构,通俗来说,数据库索引就好比一本书的目录,可以加快数据库查询的速度。

索引数据结构:hash,B+,二叉树。

hash:以键值对存储数据,只要输入key就可以找到相应的Value

二叉树:每个节点最多有两个子树的树结构

B树:每个节点都是按递增排序存放,左小右大,一个子结点可以有多个数据

B+树:改良版的B树,每个就叶子节点,连成一条链表

红黑树:是一种二叉搜索树,红黑树确保没有一条路径是其他路径的两倍,因而接近平衡。

2.进程和线程

进程:程序运行的资源分配的基本单元,一个程序有多个进程,一个进程有多个线程,进程在执行过程中有独立的内存单元

线程:多个线程共享内存资源,线程是进程的一个实体,是cpu调度的基本单元。

3.堆,栈

堆:是一种数据接口,自己控制一段储存空间,叫做堆空间,实在程序运行时申请的动态内存,

栈:又称为堆栈,是操作系统在创建某个进程时或线程,为了这个线程创建的储存区域,在编译时候可以指定需要的栈大小,它是一种运算受限的线性表,先进后出。

4.线程安全,synchronized,lock锁

synchronized:关键字,同步锁,可以修饰静态方法,普通方法,代码块,修饰静态方法时锁住的是类对象,修饰普通方法是锁住的是实例对象,当一个线程获取锁是,其他线程想要访问只能等当前线程释放锁,

lock锁:接口,只能用在代码里,synchronized在代码执行完或出现异常时会自动释放锁,Locl不会自动释放,需要在finally中释放。 synchronized会导致线程拿不到锁一直等待,Lock可以设置获取锁失败的超时时间。 synchronized无法获知是否获取锁成功,Lock则可以通过tryLock判断是否加锁成功

5.redis五种数据结构

string:底层是一个简单的动态字符串。

list:存储先行有序且可重复的元素,底层是双向链表/压缩列表

set:存储不可重复的元素,底层是hash和整数数组

zset:存储有序不可重复的元素,为每个元素添加一个score属性作为排序依据,底层是ziplist和跳表

hash:存储的是键值对,底层是ziplist和hash

6.集合,数组,链表,队列

集合:用于储存无序元素,值不能重复,

数组:数组是内存开辟的一段连续空间,长度固定,元素固定,

链表:是一种线性表,在一个节点上有一个指针指向下一个节点

队列:先进先出。

7.ArrayList和LinkedList

ArrayList:底层是数组实现,数组是一组连续的内存单元,读取快,插入删除慢,

LinkedList:底层基于双向链表,读取慢,插入删除快,链表的每个节点都保存了数据值,和前后节点的指针,占内存。

8.ConcurrentHashMap,HashMap,HashTable

ConcurrentHashMap:底层数据结构也是数组+链表+红黑树,采用锁定头部结点的方式降低锁粒度,在初始化数组时未加锁,但当插入数据就会给槽的头节点上锁,支持多线程

HashMap:数组+链表+红黑树,集合put时,计算key键的哈希值放入元素,若有key值相同的哈希值是就会用链表进行存放,链表长度达到8是就会开辟红黑树进行存放,以此提高查询效率。非线程安全。

HashTable:性能不如hsahmap,但是线程安全,,不允许存入null,内部使用大量的synchronized关键字,所以无论是key还是value为null都会引发异常。

9.String、StringBuffer、Stringbuilder

String:不可变字符序列,效率低,每创建一个string对象,就会分配一个空间,

StringBuffer:可变字符序列,效率高(增删),线程安全,只分配一个空间,改变值而不改变地址。

Stringbulider:可变字符序列,效率最高,线程不安全,只分配一个空间,改变值而不改变地址。

10.==和equals(),hashCode()

==:比较基本数据类型时,比较的是两个数值是否相等; 比较引用类型是,比较的是对象的内存地址是否相等。equals():equals() 没有重写时,Object默认以==来实现,即比较两个对象的内存地址是否相等; 重写以后,按照对象的内容进行比较

hashCode():主要用途是获取哈希码

两个对象相等,他们必须有相同的哈希码,有相同的哈希码;哈希码相同的话,他们不一定相等

11:static,final

static:修饰符,static修饰变量:属于静态变量也叫类变量,直属于类对象而不是实例,可以通过类名访问,它一般会在类加载过程中被初始化。生命周期贯穿整个程序。存储在方法区中。 static修饰方法:即静态方法,一个类中的静态方法不能访问该类的实例变量,只能访问静态变量。同时还存在一个静态初始化块,他在类加载过程中被调用用于对该类中的静态变量进行操作。 static修饰类:即静态内部类,他只能以内部类的形式存在,可通过外部类的类名调用。它是他也只能访问到外部的的静态成员。

final:关键字,final可以修饰类,方法,变量。 final修饰类,该类不可被继承。 final修饰方法,该方法不能被重写。 final修饰变量,如果是基本变量则值不能再改变,如果是引用变量则引用地址不能改变,但值可以改变。可以修饰成员变量,修饰后可重写,不能重新赋值。

12.SpringBoot注解,springBootApplication,EnableAutoConfiguration,Service,responsebody、requestMapping、Bean、Autowired

springBootApplication:springboot的核心注解,用在springboot的主类上,用来开启springboot的各项能力,

EnableAutoConfiguration:允许springboot自动配置注解,开启后,springboot就根据当前类路径包或者类来配置springbean

Service:用来修饰Service层的组件

responsebody:表示该方法返回的结果直接写在HTTPresponsebody中,跳转页面直接返回json数据

requestMapping:用来处理请求地址映射,提供路由信息,负责URL到Controller中的具体函数映射,可用在类或方法上,用在类上表示类中的所有相应请求的方法都是以该地址为父路径。

Bean:相当于XML中的放在方法的上面,而不是类,意思是产生一个beam交给spring管理

Autowired:bytype方法,把配置好的bean拿来用,完成属性,方法的组装,它可以对类对象变量,方法及构造函数进行标注,完成自动装配的工作

13.@Autowired和@Resource

@Autowired:Spring提供的注解,@Autowired只能按照类型装配,默认情况下必须按照依赖对象存在,如果允许null值,可以设置他的required属性为false,如果想使用名称装配可以结合@Qualifier注解使用,

@Resource:JDK提供的注解,默认按照名称装配,名称可以通过name属性进行指定,如过没有指定name属性,当注解写在字段上是,默认取字段名进行名称查找。

14.java基本数据类型和引用数据类型

基本数据类型:byte(8), short(16), int(32), long(64), float(32), double(64), char(16), boolean

这基本数据类型在声明之后就会立刻在栈上被分配内存空间

引用数据类型:类,接口,数组,String等,这些变量在声明时不会被分配内存空间,只是存储了一个内存地址

15.mysql常用命令

获取当前日期和时间:now()

获取当前日期:curdate()

获取当前时间:curtime()

返回date年份,time小时,分钟: year(date),hour(time),minute(time)

返回两个时间相隔天数:datediff(date1,date2)

返回指定多少i行:limit 数字

平均数:AVG

返回字段行数:COUNT

16.重载和重写

重载:重载发生在用一个类中,方法名相同,参数列表,返回类型,权限修饰符不同。

重写:重写发生在子类中,方法名相同,参数列表,返回类型相同,权限修饰符大于父类方法,声明范围小于父类方法。

17.接口,抽象类

接口:不能被实例化,实现接口必须实现抽象方法,有抽象方法,静态和默认方法,没有构造方法,成员变量只能是final类型,必须赋值。

抽象类:不能被实例化,继承抽象类的普通子类必须实现抽象方法,有普通方法和代码块和构造方法,成员变量可以是各种类型。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小...羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值