
面试笔试
文章平均质量分 86
面试题、笔试题
TPH-BETTER
不要低估时间
展开
-
equals和==
1、==用来比较两个变量的值是否相等,一般用于比较基本数据类型,如果比较的变量为引用类型(对象)的时候,比如:Object a = new Object(),a占用一块内存,new Object()占用另一块内存,a中存储的值就是new Object()内存的首地址。2、equals方法比较的是两个独立对象的内容是否相等。这时a==b为false,a.equals(b)为true。.........原创 2022-08-08 14:59:28 · 2944 阅读 · 0 评论 -
JAVA基本数据类型及转化
转自。转载 2022-08-04 16:44:38 · 1952 阅读 · 0 评论 -
Spark Sql 函数
Spark Sql 函数字符串函数字符串截取字符串截取之substring_index函数substring_index(str,delim,count)其中:str:要处理的字符串;delim:分隔符;count:计数①count为正数的情况下,从左往右数,第count个分隔符的左边的全部内容例子:str=www.baidu.comsubstring_index(str,’.’,1) 结果是:wwwsubstring_index(str,’.’,2) 结果是:www.ba原创 2021-11-29 17:48:29 · 8502 阅读 · 0 评论 -
SQL函数
ROW_NUMBER() over(partitioned by xxx order by xxx) select * from (select ROW_NUMBER()over(partition by Aid order by BidTime desc) rowId,* from auto_AuctionRecords where Uid=353) as AuctionRecords where rowId=1先按aid分组,在按时间降序排列然后给每组设置编号,在查原创 2022-03-02 17:57:09 · 300 阅读 · 0 评论 -
Java异常try{}catch{}中的return机制
在探索try{}catch{}finally{}中return的时机之前,我们先根据return的位置,定义一下return的类型。转载 2022-08-02 10:56:07 · 309 阅读 · 0 评论 -
JAVA面试集锦(二)
多个线程同时访问一个共享资源并有至少一个线程对其进行修改时,导致数据出现读写不一致的现象。转载 2022-07-22 15:54:36 · 122 阅读 · 0 评论 -
JUC包下的常见类
可重入锁;信号量;计数器;循环屏障。转载 2022-07-19 18:26:01 · 3277 阅读 · 0 评论 -
HTTP、HTTPS详解及相关面试题
对称加密算法双方持有相同的密钥,进行加密速度快,典型对称加密算法DES、AES。非对称加密算法密钥成对出现(私钥、公钥),私钥只有自己知道,不在网络中传输;而公钥可以公开。相比对称加密速度较慢,典型的非对称加密算法有RSA、DSA。.........转载 2022-07-19 17:45:47 · 1151 阅读 · 0 评论 -
ThreadPoolExecutor 线程池的七个参数
转自https://blog.youkuaiyun.com/FUTEROX/article/details/122893521现在点进去看 newFixedThreadPool 的实现创建线程池的方法实现了 ThreadPoolExecutor 方法。从源码中可以看出,线程池的构造函数有7个参数,分别是 corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler。那么接下来分别说说这七个参数。线程池核心线程大小线程转载 2022-07-12 17:22:55 · 208 阅读 · 0 评论 -
线程池的创建方式
转自https://blog.youkuaiyun.com/weixin_39771749/article/details/123576797在 Java 语言中,并发编程都是通过创建线程池来实现的,而线程池的创建方式也有很多种,每种线程池的创建方式都对应了不同的使用场景,总体来说线程池的创建可以分为以下两类:而以上两类创建线程池的方式,又有 7 种具体实现方法,这 7 种实现方法分别是:Executors.newFixedThreadPool:创建一个固定大小的线程池,可控制并发的线程数,超出的线程会在队列中等转载 2022-07-12 17:01:40 · 1915 阅读 · 0 评论 -
面试集锦——集合
1、⾸先CopyOnWriteArrayList内部也是⽤过数组来实现的,在向CopyOnWriteArrayList添加元素时,会复制⼀个新的数组,写操作在新数组上进行,读操作在原数组上进⾏2、并且,写操作会加锁,防止出现并发写入丢失数据的问题3、写操作结束之后会把原数组指向新数组CopyOnWriteArrayList允许在写操作时来读取数据,大大提高了读的性能,因此适合读多写少的应用场景,但是CopyOnWriteArrayList会比较占内存,同时可能读到的数据不是实时最新的数据,所以不适合实原创 2022-07-12 12:11:01 · 194 阅读 · 0 评论 -
面试集锦——MySQL
索引覆盖就是⼀个SQL在执行时,可以利用索引来快速查找,并且此SQL所要查询的字段在当前索引对应的字段中都包含了,那么就表示此SQL走完索引后不用回表了,所需要的字段都在当前索引的叶子节点上存在,可以直接作为结果返回了。当⼀个SQL想要利用索引是,就⼀定要提供该索引所对应的字段中最左边的字段,也就是排在最前面的字段,比如针对a,b,c三个字段建立了⼀个联合索引,那么在写⼀个sql时就⼀定要提供a字段的条件,这样才能用到联合索引,这是由于在建立a,b,c三个字段的联合索引时,底层的B+树是按照a,b,c三个字原创 2022-07-09 10:23:26 · 230 阅读 · 0 评论 -
Redis相关面试题
Redis的数据结构有:Redis的主从复制是提高Redis的可靠性的有效措施,主从复制的流程如下:缓存中存放的大多都是热点数据,目的就是请求可以直接从缓存中获取到数据,而不用访问 Mysql。原创 2022-07-09 09:17:07 · 169 阅读 · 0 评论 -
SpringBoot自动装配原理及自定义starter开发
springboot自动装配原理及自定义starter开发starter解决的问题思考的问题解析自动装配加载yml、properties、yaml文件自动装配原理如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入starter解决的问题 当我们定义一个公共的组件时,如果原创 2021-05-01 22:34:24 · 952 阅读 · 0 评论 -
MVC设计模式
转自https://blog.youkuaiyun.com/lj15559275886/article/details/121803156MVC设计模式一般是指MVC框架,Model数据模型层,View视图层,Controller控制层。1、web项目中,用户请求网页上一个URL路径,web服务器获取请求后如何解析用户输入并执行相关逻辑处理,最终跳转至正确的页面反馈结果,这些工作是在Controller控制层完成的。2、在请求过程中,用户信息被封装在实体类中,实体类在web项目中属于数据模型层model。3、在请求显示转载 2022-07-06 09:27:51 · 256 阅读 · 0 评论 -
LeetCode算法—排序算法(以升序为例)
执行流程参考视频https://www.bilibili.com/video/BV1PT4y13767?p=19&vd_source=3558fd85254f40ca0361146cc92d2cce快速排序原理是首先要找到一个中枢,把小于中枢的值放到他前面,大于中枢的值放到他的右边,然后再以此方法对这两部分数据分别进行快速排序。这里是先用待排数组的第一个作为中枢,把数组划分两部分,小于他的往前挪,那大于他的自然就在后面了,然后再把中枢值放到大于和小于他之间的位置。三、冒泡排序1. 冒泡排序原理将第原创 2022-06-30 17:49:44 · 488 阅读 · 0 评论 -
Leetcode算法—反转链表(迭代、递归、栈、双链表求解)
反转一个单链表。输入: 1->2->3->4->5 输出: 5->4->3->2->1反转单链表这里用两种方式实现:递归和迭代先了解一下递归和迭代的区别递归和迭代的区别含义不同:递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。递归循环中,遇到满足终止条件的情况时逐层返回来结束。迭代则使用计数器结束循环。结构不同:递归与迭代都是基于控制原创 2022-03-27 22:17:39 · 523 阅读 · 0 评论 -
Spring全家桶面试题(四)之SpringCloud
SpringBoot是用来快速开发Spring应用的一个脚手架、其设计目的是用来简化Spring应用的初始搭建以及开发过程。SpringBoot是Spring生态的产品。Spring Framework是一个容器框架。SpringBoot 它不是一个框架、它是一个可以快速构建基于Spring的脚手架(里面包含了Spring和各种框架),为开发Spring生态其他框架铺平道路,2个不是一个层面的东西, 没有可比性。1.通过@SpringBootApplication引入了@EnableAutoConfigu原创 2022-06-19 13:46:11 · 388 阅读 · 0 评论 -
Spring全家桶面试题(二)之SpringMVC
(1)解决post请求乱码问题:在web.xml中配置一个CharacterEncodingFilter过滤器,设置成utf8;(2)get请求中文参数出现乱码解决方法有两个:①修改tomcat配置文件添加编码与工程编码一致,如下:②另外一种方法对参数进行重新编码:(3)确保前端请求的数据不是乱码,确保开发工具和文件本身的编码为utf-81、控制器也是一个bean,默认是单例。2、单例的Bean如果有状态则线程不安全,如果无状态则线程安全(有状态指有成员变量声明在类中)(1)用户发送请求至前端控制器原创 2022-06-18 14:29:15 · 121 阅读 · 0 评论 -
Spring全家桶面试题(一)之Spring Framework(九)
事件事件发布监听了对应事件的监听器当监听器监听的事件发布之后,对应的监听器就会执行。事件(ApplicationEvent) :负责对应相应监听器,事件源发生某事件是特定事件监听器被触发的原因。监听器(ApplicationListener): 对应于观察者模式中的观察者。监听器监听特定事件,并在内部定义了事件发生后的响应逻辑。事件发布器(ApplicationEventMulticaster ):对应于观察者模式中的被观察者/主题, 负责通知观察者对外提供发布事件和增删事件监听器的接口,原创 2022-06-16 16:37:07 · 145 阅读 · 0 评论 -
Spring全家桶面试题(一)之Spring Framework(八)
⑴ 原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚, 因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性原创 2022-06-16 14:00:13 · 161 阅读 · 0 评论 -
Spring全家桶面试题(一)之Spring Framework(七)
设置暴露当前代理对象到本地线程, 可以通过AopContext.currentProxy() 拿到当前正在调用的动态代理对象54.Spring的AOP是在哪里创建的动态代理?正常的Bean会在Bean的生命周期的初始化后, 通过BeanPostProcessor.postProcessAfterInitialization创建aop的动态代理还有一种特殊情况: 循环依赖的Bean会在Bean的生命周期属性注入时存在的循环依赖的情况下, 也会为循环依赖的Bean通过MergedBeanDefi原创 2022-06-15 21:00:23 · 148 阅读 · 0 评论 -
Spring全家桶面试题(一)之Spring Framework(六)
AOP(Aspect-Oriented Programming),一般称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。可用于权限认证、日志、事务处理等。AOP、OOP在字面上虽然非常类似,但却是面向不同领域的两种设计思想。**OOP(面向对象编程)**针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。原创 2022-06-15 15:17:57 · 125 阅读 · 0 评论 -
Spring全家桶面试题(一)之Spring Framework(五)
1.因为BeanDefinition会在ioc容器加载的先注册, 而BeanFactoryPostProcess就是在所有的BeanDefinition注册完后做扩展的,所以要先加载BeanFactoryPostProcess2. 解析配置类的组件 它就实现BeanFactoryPostProcess, 所以要先去加载BeanFactoryPostProcessBean的创建顺序是由BeanDefinition的注册顺序来决定的, 当然依赖关系也会影响Bean创建顺序 (A-B)。主要是由注解(原创 2022-06-14 20:27:39 · 225 阅读 · 0 评论 -
Set系列集合
转自https://blog.youkuaiyun.com/weixin_43521028/article/details/1080599581.3 面试热点1)Set集合添加的元素是不重复的,是如何去重复的?2)Set集合元素无序的原因是什么?是HashSet的子类,元素是“有序” 不重复,无索引.LinkedHashSet底层依然是使用哈希表存储元素的,但是每个元素都额外带一个链来维护添加顺序!!不光增删查快,还有序。缺点是多了一个存储顺序的链会占内存空间!!而且不允许重复,无索引。3. TreeSet集转载 2022-06-04 21:50:51 · 100 阅读 · 0 评论 -
Spring全家桶面试题(一)之Spring Framework(四)
Bean生命周期:指定的就是Bean从创建到销毁的整个过程: 分4大步:如何解决:采用三级缓存解决,也就是3个map。一级缓存:存储完整的Bean三级缓存:a. 缓存的是函数接口:通过lambda 把方法传进去( 把Bean的实例(纯净态的实例)和Bean名字传进去(aop创建) )b. 不会立即调:(如果在实例化后立即调用的话:所有的aop 不管bean是否循环依赖都会在 实例化后创建proxy, 正常Bean 其实spring还是希望遵循生命周期在初始化创建动态代理, 只能循环依赖原创 2022-06-13 20:39:03 · 396 阅读 · 1 评论 -
Spring全家桶面试题(一)之Spring Framework(三)
在 Spring 中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean是一个由Spring IoC容器实例化、组装和管理的对象。概念简单明了,我们提取处关键的信息:Spring框架支持以下五种bean的作用域:注意: 缺省的Spring bean 的作用域是Singleton。使用 prototype 作用域需要慎重的思考,因为频繁创建和销毁 bean会带来很大的性能开销。指定作用域的方式:由于不会每次都新创建新对象,所以有一下几个性能上的优势:不是,Spring框架中的单例原创 2022-06-11 16:11:26 · 140 阅读 · 0 评论 -
Spring全家桶面试题(一)之Spring Framework(二)
总的来说:概念态 ==》定义态 ==》纯净态 ==》成熟态从概念态 ==》定义态的过程1、实例化一个ApplicationContext的对象;2:调用bean工厂后置处理器(new一个ApplicationContext对象的时候,调用了refresh方法,refresh就是IOC的整个加载过程,它调用的invokeBeanFactoryPostProcessors方法)解析配置类;3:扫描配置的扫描包(component-scan base-package)下的所有类信息,看是否配置了@Compo原创 2022-06-09 13:22:57 · 145 阅读 · 0 评论 -
Spring全家桶面试题(一)之Spring Framework(一)
搭配视频地址https://www.bilibili.com/video/BV1vS4y1h7Kn?p=1什么是spring核心解释spring是一个轻量级的开源容器框架。spring是为了解决企业级应用开发的业务逻辑层和其他各层对象和对象直接的耦合问题spring是一个IOC和AOP的容器框架。特点:方便解耦,简化开发通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等原创 2022-06-08 20:47:35 · 444 阅读 · 0 评论 -
MySQL索引专项(一)
B树和B+树之间的区别是什么?B树特点:节点排序(节点的左边都比节点小,节点的右边都比节点大)⼀个节点了可以存多个元素,多个元素也排序了插入8个元素时的B树:B+树B+树是B树的加强版特点:拥有B树的特点叶⼦节点之间有指针(双向指针,图中有误)⾮叶⼦节点上的元素在叶⼦节点上都冗余了,也就是叶⼦节点中存储了所有的元素,并且排好顺序插入8个元素时的B+树:Innodb中的B+树是怎么产生的?查询得到一页的大小为16KB,Innodb每次都是以页为单位从磁盘里读数据或者存数原创 2022-05-01 17:59:01 · 763 阅读 · 0 评论 -
JAVA面试集锦(一)
CopyOnWriteArrayList的底层原理是怎样的⾸先CopyOnWriteArrayList内部也是⽤过数组来实现的,在向CopyOnWriteArrayList添加元素 时,会复制⼀个新的数组,写操作在新数组上进⾏,读操作在原数组上进⾏并且,写操作会加锁,防⽌出现并发写⼊丢失数据的问题写操作结束之后会把原数组指向新数组CopyOnWriteArrayList允许在写操作时来读取数据,⼤⼤提⾼了读的性能,因此适合读多写少的应 ⽤场景,但是CopyOnWriteArrayList会⽐较占内原创 2022-04-23 22:50:27 · 836 阅读 · 0 评论 -
数据结构—散列表及HashMap的put方法和扩容机制
定义散列表:散列表(也叫哈希表),就是把任意长度值(key)通过散列算法变换成固定长度的key(地址)通过这个地址进行访问的一种数据结构也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找记录的速度。而这个映射函数叫做散列函数,存放记录的数组叫做散列表。哈希函数哈希碰撞通过哈希算法之后映射到散列表的位置上但已经有值的时候,就称为哈希碰撞。哈希碰撞解决办法JDK1.7:采用链表引用 JDK1.8:链表引用+红黑树红黑树查询的原理:红黑树又原创 2022-03-28 20:34:24 · 1140 阅读 · 0 评论 -
JVM内存结构分析(通俗易懂)
转自https://baijiahao.baidu.com/s?id=1722629637623477825&wfr=spider&for=pcJVM(Java虚拟机)主要包括五块区域,分别是程序计数器、虚拟机栈、本地方法栈、堆、方法区。在JVM当中堆和方法区各有一个,一条线程有一个栈和一个程序计数器。五块区域中当中变化最频繁是栈,最先有数据的是方法区,垃圾回收器主要针对的是堆。由于在JVM中多线程是通过线程轮流切换来换取CPU执行时间的,在任何一个确定的时刻,一个CPU只会执行一条线程的指令。因此,为了转载 2022-06-06 13:33:22 · 111 阅读 · 0 评论 -
JVM内存结构剖析
配套视频:https://www.bilibili.com/video/BV18J41187Nj?spm_id_from=333.337.search-card.all.click1. 什么是JVMJava Virtual Machine:Java虚拟机,用来保证Java语言跨平台。Java虚拟机可以看做是一台抽象的计算机,如同真实的计算机那样,它有自己的指令集以及各种运行时内存区域Java虚拟机与Java语言并没有必然的联系,它只与特定的二进制文件格式(class文件格式所关联)Java虚拟机原创 2022-06-05 21:05:39 · 185 阅读 · 0 评论 -
笔试真题(笔记)—数据结构与算法
1、下面协议中属于应用层协议的是( )解析:常见的8个应用层协议:1、DNS(Domain Name System)域名系统;2、FTP(File Transfer Protocol)文件传输协议;3、Telnet远程终端协议;4、HTTP超文本传送协议;5、SMTP(Simple Mail Transfer Protocol)电子邮件协议;6、POP3(Post Office Protocol - Version 3)邮件读取协议;7、SNMP(Simple Network Management P原创 2022-04-15 19:28:06 · 1742 阅读 · 0 评论 -
笔试真题(笔记)—JAVA基础
1、在java中,要使某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以(A)A.让该类不使用任何关键字B.使用private关键字C.使用protected关键字D.使用public关键字解析:public > protected > default > private1、包访问权限(default):默认访问权限没有任何关键字,但通常指包访问权限。这意味着当前包中所有类对这个成员都有访问权限,但对于这个包之外的所有类,这个成员却是private。2、p原创 2022-04-15 17:18:48 · 1215 阅读 · 0 评论 -
笔试真题(笔记)—操作系统和Linux
1、同一个进程的不同线程,以下不能被共享的是? (C)A.全局变量B.堆C.栈D.文件句柄解析:jvm的内存模型,主要是5部分在这里插入图片描述线程共享:1、方法区:存放常量、静态变量、全局变量、每个类的信息(包括类的名称、方法信息、字段信息)、编译器编译后的代码等2、堆:java程序最主要的内存工作区域。几乎所有的java对象实例都存放在java堆中。线程私有:1、java栈:保存着局部变量、方法参数2、本地方法栈3、程序计数器2、分页存储管理将进程的逻辑地址空间分成若干个页,原创 2022-05-01 15:44:01 · 1662 阅读 · 0 评论 -
笔试真题(笔记)—计算机网络
计算机网络1、下面协议中属于应用层协议的是( )解析:常见的8个应用层协议:1、DNS(Domain Name System)域名系统;2、FTP(File Transfer Protocol)文件传输协议;3、Telnet远程终端协议;4、HTTP超文本传送协议;5、SMTP(Simple Mail Transfer Protocol)电子邮件协议;6、POP3(Post Office Protocol - Version 3)邮件读取协议;7、SNMP(Simple Network Manage原创 2022-03-29 22:46:15 · 1628 阅读 · 0 评论 -
笔试真题(笔记)—数据库
1、同一个进程的不同线程,以下不能被共享的是? (C)A.全局变量B.堆C.栈D.文件句柄解析:jvm的内存模型,主要是5部分线程共享:1、方法区:存放常量、静态变量、全局变量、每个类的信息(包括类的名称、方法信息、字段信息)、编译器编译后的代码等2、堆:java程序最主要的内存工作区域。几乎所有的java对象实例都存放在java堆中。线程私有:1、java栈:保存着局部变量、方法参数2、本地方法栈3、程序计数器2、分页存储管理将进程的逻辑地址空间分成若干个页,并为各页加以编号,原创 2022-04-15 19:19:33 · 1018 阅读 · 0 评论