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类型,必须赋值。
抽象类:不能被实例化,继承抽象类的普通子类必须实现抽象方法,有普通方法和代码块和构造方法,成员变量可以是各种类型。
相关文章:
java面试题中常见名词注解
一.常见名词注解 1.mysql索引,索引数据结构,hash,二叉树,B树,B树,红黑树, mysql索引:帮助mysql高效获取数据的数据结构,通俗来说,数据库索引就好比一本书的…...
SpringAOP从入门到源码分析大全,学好AOP这一篇就够了(二)
文章目录系列文档索引四、Spring AOP的使用入门1、激活AspectJ模块(1)注解激活(2)XML激活2、创建 AspectJ 代理(了解)(1)编程方式创建 AspectJ 代理实例(2)XM…...
华为OD机试 - 斗地主(C++) | 附带编码思路 【2023】
刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12199283.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 华为OD机试题…...
【存储】etcd的存储是如何实现的(3)-blotdb
前两篇分别介绍了etcd的存储模块以及mvcc模块。在存储模块中,提到了etcd kv存储backend是基于boltdb实现的,其在boltdb的基础上封装了读写事务,通过内存缓存批量将事务刷盘,提升整体的写入性能。botldb是etcd的真正的底层存储。本…...
基于MATLAB开发AUTOSAR软件应用层模块-part21.SR interface通信介绍(包括isupdated判断通信)
这篇文章我们介绍最后一种interface,即Sender-Receiver Interface,这种通信方式是autosar架构中最常用的的通信方式,即一个SWC发送数据,另一个SWC接收数据,实现数据交互。下边我们介绍下这篇文章主要介绍的内容: 目录如下: 如何配置SR interface,实现SR 通信介绍含有…...
Kotlin新手教程八(泛型)
一、泛型 1.泛型类的创建与实例化 kotlin中泛型类的创建与实例化与Java中相似: class A<T>(t:T){var valuet }fun main() {var a:A<Int> A<Int>(11) }Kotlin中存在类型推断,所以创建实例可以写成: var aA(11)2.泛型约束…...
性能测试知多少?怎样开展性能测试
看到好多新手,在性能需求模糊的情况下,随便找一个性能测试工具,然后就开始进行性能测试了,在这种情况下得到的性能测试结果很难体现系统真实的能力,或者可能与系统真实的性能相距甚远。 与功能测试相比,性能…...
code-breaking之javacon
JAVACON 题目 此题 来自P神 的code-breaking中的一道Java题,名为javacon,题目知识点为SpEL注入 题目下载地址:https://www.leavesongs.com/media/attachment/2018/11/23/challenge-0.0.1-SNAPSHOT.jar 运行环境 java -jar challenge-0.…...
Android 字符串替换,去除空格等操作
今天在写代码的时候,需要对String进行一些操作,例如变小写,去除所有空格 于是熟练的使用String的replaceAll,却发现没这个方法。 后面才发现Kotlin使用的是自己的String,有自己的方法,用String的replace(…...
因“AI”而“深” 第四届OpenI/O 启智开发者大会高校开源专场25日开启!
中国算力网资源不断开发,开源社区治理及AI开源生态引来众多有才之士参与建设,国家级开放创新应用平台、NLP大模型等高新技术内容逐渐走向科研舞台上聚光灯的中心,新时代的大门缓缓打开。在启智社区,有一群人,他们年纪轻…...
CATCTF wife原型链污染
CATCTF wife原型链污染 原型链污染原理:https://drun1baby.github.io/2022/12/29/JavaScript-%E5%8E%9F%E5%9E%8B%E9%93%BE%E6%B1%A1%E6%9F%93/ 如下代码,prototype是newClass类的一个属性。newClass 实例化的对象 newObj 的 .__proto__ 指向 newClass…...
浅谈Java线程池中的ThreadPoolExecutor工具类
目录 ThreadPoolExecutor的构造函数 关于线程池的一些补充 线程池运行原理分析 概念原理解释 整个流程图如下: 一点补充 创建线程池主要有两种方式: 通过Executor工厂类创建,创建方式比较简单,但是定制能力有限通过ThreadPoo…...
分析过程:服务器被黑安装Linux RootKit木马
前言 疫情还没有结束,放假只能猫家里继续分析和研究最新的攻击技术和样本了,正好前段时间群里有人说服务器被黑,然后扔了个样本在群里,今天咱就拿这个样本开刀, 给大家研究一下这个样本究竟是个啥,顺便也给…...
运动型蓝牙耳机推荐哪款、最新运动蓝牙耳机推荐
提起运动耳机,如今很多运动爱好者和职业教练员们,都会向萌新推荐骨传导运动耳机。骨传导耳机解决了入耳式蓝牙耳机掉落的问题,佩戴相当舒服。骨传导耳机在佩戴过程中解放了双耳,不会因为耳机堵住耳朵,听不到环境音&…...
Python爬虫(9)selenium爬虫后数据,存入mongodb实现增删改查
之前的文章有关于更多操作方式详细解答,本篇基于前面的知识点进行操作,如果不了解可以先看之前的文章 Python爬虫(1)一次性搞定Selenium(新版)8种find_element元素定位方式 Python爬虫(2)-Selenium控制浏览…...
gulimall技术栈笔记
文章目录1.项目背景1.1电商模式1.2谷粒商城2.项目架构图3.项目技术&特色4.项目前置要求5.分布式基础概念5.1微服务5.2集群&分布式&节点5.3远程调用5.4负载均衡5.5服务注册/发现&注册中心5.6配置中心5.7服务熔断&服务降级5.7.1服务熔断5.7.2服务降级5.8API网…...
vue3生命周期钩子以及使用方式
按照生命周期的顺序来排列: onBeforeMount() DOM挂载前调用 注册一个钩子,在组件被挂载之前被调用。 当这个钩子被调用时,组件已经完成了其响应式状态的设置,但还没有创建 DOM 节点。它即将首次执行 DOM 渲染过程。 onMount(…...
以假乱真的手写模拟器?
前些时候给大家推荐了一款word插件叫做“不坑盒子”,这款盒子不仅方便了word的操作,还附带了手写模拟器这样的效果只是在使用的时候不仅需要手动下载字体,而且效果也并不是太理想。 今天小编找到了一款软件--手写模拟器,不仅一键生…...
每日一题——L1-069 胎压监测(15)
L1-069 胎压监测 分数 15 小轿车中有一个系统随时监测四个车轮的胎压,如果四轮胎压不是很平衡,则可能对行车造成严重的影响。 让我们把四个车轮 —— 左前轮、右前轮、右后轮、左后轮 —— 顺次编号为 1、2、3、4。本题就请你编写一个监测程序&#…...
17_FreeRTOS事件标志组
目录 事件标志组 事件标志组与队列、信号量的区别 事件标志组相关API函数介绍 实验源码 事件标志组 事件标志位:用一个位,来表示事件是否发生 事件标志组是一组事件标志位的集合,可以简单的理解事件标志组,就是一个整数。 事件标志组的特点: 它的每一个位表示一个事件(…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
