![](https://img-blog.csdnimg.cn/202107132045069.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
面试
文章平均质量分 63
面试资料
宇宙超级无敌程序媛
Talk is cheap, show me the code.
展开
-
面试 —— volatile
volatile 读的内存语义: 当读一个 volatile 变量时, JMM会把该线程对应的本地内存置为无效。线程接下来将从主内存中读取共享变量。禁止指令重排什么是内存屏障?内存屏障,也称内存栅栏,内存栅障,屏障指令等, 是一类同步屏障指令是CPU或编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才可以开始执行此点之后的操作。观察加入volatile关键字和没有加入volatile关键字时所生成的汇编代码发现,加入volatile关键字时,会多出一个原创 2021-09-15 00:06:04 · 119 阅读 · 1 评论 -
Redis —— 基本知识大全,面试看这一篇就够了。
本篇文章中总结了Redis相关基础知识,是我自己准备秋招时的总结笔记。把这篇文章中的知识都掌握,面试不会有问题。原创 2020-10-09 00:37:06 · 396 阅读 · 1 评论 -
八大排序o
1、冒泡排序不管序列是怎样,都是要比较n(n-1)/2 次的,最好、最坏、平均时间复杂度都为O(n²),需要一个临时变量用来交换数组内数据位置,所以空间复杂度为O(1)。有很多人说冒泡排序的最优的时间复杂度为O(n),其实这是在代码中使用一个标志位来判断是否已经排序好的,是冒泡排序的优化版,如果元素已经排序好,那么循环一次就直接退出。2、选择排序是冒泡排序的改进,同样选择排序无论序列是怎样的都是要比较n(n-1)/2次的,最好、最坏、平均时间复杂度也都为O(n²),需要一个临时...原创 2021-09-12 22:48:02 · 220 阅读 · 0 评论 -
数据库 —— Mysql索引
索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构。类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可。1、越小的数据类型通常更好2、简单的数据类型更好3、尽量避免NULLmysql的索引数据结构采取的是B+树。优点:查询速度快缺点:增删改慢,因为数据库要同步去维护索引文件,所以速度慢为什么加索引能优化慢查询?因为索引其实就是一种优化查询的数据结构,比如Mysql中的...原创 2021-09-08 16:28:44 · 109 阅读 · 0 评论 -
Get和Post的区别
(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)(2)post发送的数据更大(get有url长度限制)(3)post能发送更多的数据类型(get只能发送ASCII字符)(4)post比get慢(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据...原创 2021-09-08 14:58:51 · 146 阅读 · 0 评论 -
面试——一文搞懂分布式锁
一、基于数据库实现 1、这把锁强依赖数据库的可用性,数据库是一个单点,一旦数据库挂掉,会导致业务系统不可用。 2、这把锁没有失效时间,一旦解锁操作失败,就会导致锁记录一直在数据库中,其他线程无法再获得到锁。 3、这把锁只能是非阻塞的,因为数据的insert操作,一旦插入失败就会直接报错。没有获得锁的线程并不会进入排队队列,要想再次获得锁就要再次触发获得锁操作。 4、这把锁是非重入的,同一个线程在没有释放锁之前无法再次获得该锁。因为数据中数据已经存在了。4)锁的长时...原创 2021-09-08 14:40:06 · 161 阅读 · 0 评论 -
数据库 —— UUID和自增ID的区别
一、UUID 存储空间大跨服务器数据合并非常方便二、ID存储空间小 不适合跨服务器数据合并 如果数据量较多,后续存储不进数据库可能不是因为数据库容量不够,而是因为id不能再增加...原创 2021-09-07 20:07:41 · 555 阅读 · 0 评论 -
KafKa
Topic:一个队列,Topic将消息分类。Consumer Group:消费者组,逻辑上的一个订阅者,消费者组内的每个消费者负责消费不同分区的数据,以提高消费能力。Partition:原创 2021-09-07 17:30:26 · 122 阅读 · 0 评论 -
url->页面的过程
第一步:进行域名解析,得到IP地址;第二步:找到IP地址对应的服务器通过三次握手建立TCP连接,向服务器发送HTTP Request请求,并得到服务器的Response响应;第三步:浏览器根据响应结果渲染输出页面DNS域名系统:将主机名和域名转换为IP地址的工作DNS解析过程1. 浏览器先检查浏览器缓存中有没有被解析过的这个域名对应的ip地址,2. 如果浏览器缓存中没命中,浏览器会检查hosts3. 如果至此还没有命中域名,才会真正的请求...原创 2021-09-02 22:51:53 · 211 阅读 · 0 评论 -
jvmmm
调优xmx 堆内存的初始大小-Xmx 堆内存的最大大小-Xmn 堆内新生代的大小。配置oom时的日志jstack导出堆栈信息,分析死循环jmap导出内存dump信息用第三方分析cms-标记清除并发收集、低停顿。老年代以获取最短停顿回收时间为目标无法清理浮动垃圾会产生大量碎片g1G1从整体来看是基于标记-整理算法实现的收集器,从局部(两个Region之间)上来看是基于“复制”算法实现的。不会产生内存空间碎片停顿时间可预测的收集模型:用户.原创 2021-09-02 20:47:09 · 116 阅读 · 0 评论 -
面试 —— filter和interceptor的区别
一、 Servlet一个基于Java技术的Web组件,运行在服务器端,它由Servlet容器所管理,用于生成动态的内容。二、Servlet容器Servlet容器,服务器的一部分,用于在发送的请求和响应之上提供网络服务。三、Tomcat是一个免费的开放源代码的Servlet容器。Tomcat服务器接受客户请求并做出响应的过程客户端(通常都是浏览器)访问Web服务器,发送HTTP请求。 Web服务器接收到请求后,传递给Servlet...原创 2021-09-01 23:10:26 · 454 阅读 · 0 评论 -
面试 —— cookie和session的区别
一、CookieCookie是客户端保存用户信息的一种机制,用来记录用户的一些信息。二、Session在服务端保存的用来跟踪用户的状态的数据。在浏览器关闭后这次的Session就消失了,下次打开就不再拥有这个Session。其实并不是Session消失了,而是Session ID变了,服务器端可能还是存着你上次的Session ID及其Session 信息,只是他们是无主状态,也许一段时间后会被删除。三、区别(一)存储位置cookie的...原创 2021-09-01 23:00:38 · 185 阅读 · 0 评论 -
面试 —— 设计模式
选取了面试中常见的设计模式汇总以及demo示例,本文中介绍的设计模式,均在Spring中使用过。一、工厂模式创建对象时不暴露创建逻辑,而是通过使用一个共同的接口来创建新的对象。(一)简单工厂模式没有遵循开闭原则。能够外界给定的信息, 决定创建哪个具体类的对象。// 冰淇淋接口public interface IceCream { public void taste();}// 三种口味的冰淇淋类public class...原创 2021-08-30 20:30:09 · 242 阅读 · 0 评论 -
计算机网络 —— http vs https
一、http与https的对比 1、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。 2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 4、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。二、一次完整的HTTP请求所经历的7个步骤原创 2021-08-24 16:29:33 · 288 阅读 · 0 评论 -
计算机网络 —— TCP vs UDP
一、区别 TCP UDP 是否连接 面向连接 面向非连接 传输可靠性 可靠 不可靠 传输模式 流模式 数据报模式 应用场合 少量数据 传输大量数据 速度 慢 快 二、TCP如何保证可靠传输(校 序 重 流 拥)(一)校验和发送的数据包的二进制相加然后取反,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。...原创 2021-08-24 15:38:04 · 83 阅读 · 0 评论 -
Nginx
一、介绍(一)概念Nginx是一个 轻量级/高性能的反向代理Web服务器。异步非阻塞。(二)应用场景http服务器 虚拟主机 反向代理、负载均衡 解决跨域问题(三)原理nginx接收一个请求后,首先由listen和server_name指令匹配server模块,再匹配server模块里的location,location就是实际地址 server { # 第一个Server区块开始,表示一个独立的虚拟主...原创 2021-08-24 14:51:38 · 77 阅读 · 0 评论 -
计算机网络 —— IO && NIO
一、IO(一)字节流(8bit)InputStream、Outputstream。按字节读写,不会用到缓存。只是读写文件,和文件内容无关的,一般选择字节流。(二)字符流(16 bit)reader、writer按字符读写,用到了缓存。在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。 二、NIO...原创 2021-08-24 11:50:17 · 177 阅读 · 0 评论 -
Spring —— AOP与IOC
一、IoC & DI(一)IoCIoC——控制反转,是一种设计思想,我们要用一个对象时,不需要自己去创建,只需要告诉Spring的容器,由容器为我们创建。IoC的好处是,对象与对象之间是松散耦合的,方便测试,利于功能复用,更重要的是把程序的整体结构变得十分灵活(二)DIDI:依赖注入,即IoC容器可以动态的将一个对象注入到另一个对象中.依赖注入的方法有三种:接口注入(侵入性,不推荐)、构造注入、setter注入...原创 2021-08-21 21:38:14 · 143 阅读 · 0 评论 -
Java —— 线程
一、定义(一)进程进程是程序在一个数据集上的一次动态执行的过程,是系统进行资源分配和调度的一个独立单位。(二)线程是进程的一个实体,是cpu调度和分派的基本单位,他是比进程更小的能够独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源。(三)区别一个线程只能属于一个进程,而一个进程可以拥有多个线程。 线程是进程工作的最新单位。 一个进程会分配一个地址空间,进程与进程之间不共享地址空间。即不共享内存。 同一个进行下的不...原创 2021-08-21 20:21:40 · 287 阅读 · 0 评论 -
Java —— 集合
Map类集合K/V能不能存储null值的情况,如下表格List , Set, Map都是接口,前两个继承至Collection接口,Map不是 List 进入先后有序保存,元素可重复 ArrayList LinkedList Vector(安全) Set 元素不可重复 HashSet TreeSet(红黑树) Map HashMap HashTable(安全) ...原创 2021-08-18 20:09:34 · 93 阅读 · 2 评论 -
面试 —— 大端存储与小端存储
一、大端存储大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放。二、小端存储小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。...原创 2021-08-17 17:46:21 · 113 阅读 · 0 评论 -
面试 —— 进程和线程的区别
一、进程定义进程是程序在一个数据集上的一次动态执行的过程,是系统进行资源分配和调度的一个独立单位。二、线程定义线程:是进程的一个实体,是cpu调度和分派的基本单位,他是比进程更小的能够独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源。三、区别一个线程只能属于一个进程,而一个进程可以拥有多个线程。 线程是进程工作的最新单位。 一个进程会分配一个地址空间,进程与进程之间不共享地址空间。即不共享内存。 同一个进行下...原创 2021-08-17 17:44:05 · 266 阅读 · 0 评论 -
Java —— HashMap
HashMap的底层主要是基于数组和链表来实现的。一、put过程对 Key 求 Hash 值,然后再计算下标 如果没有碰撞,直接放入数组中 如果碰撞了,以链表的方式链接到后面 如果链表长度超过阀值(8),就把链表转成红黑树,链表长度低于6,就把红黑树转回链表 如果节点已经存在就替换旧值 如果数组已满(容量16*加载因子0.75),就需要 resize(扩容2倍后重排)二、get过程当我们调用 get() 方法,HashMap 会使用...原创 2021-08-12 21:11:46 · 161 阅读 · 0 评论 -
面试 —— 各种树对比
一、平衡二叉树平衡二叉搜索树又被称为AVL树,且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。二、红黑树红黑树是一种自平衡的二叉树,在插入和删除的过程中,红黑树会对树的组织形式进行调整,以尽可能的减少树的高度,从而节省查找的时间。一棵n个结点的红黑树的高度始终为:红黑树的操作时间跟二叉查找树的时间复杂度是一样的,执行查找、插入、删除等操作的时间复杂度为:红黑树的特性如下:...原创 2021-08-12 20:44:26 · 426 阅读 · 0 评论 -
分布式 —— 负载均衡算法
算法 简介 优点 缺点 轮询 将请求按顺序轮流地分配到每个节点上 简单,易于水平扩展 没有考虑机器的性能问题,集群性能瓶颈更多的会受性能差的服务器影响。 加权轮询 在轮询的基础上,给配置高、当前负载低的机器配置更高的权重 将不同机器的性能纳入到考量,集群性能最大化 生产环境复杂多变,服务器能力无法精确估算,静态算法导致无法实时动态调整,只能粗糙优化。 随机 将请求随机分配到各个节点。随着客户端调用服务端的次数增多,其实际效果越来越接近于原创 2021-08-11 21:17:10 · 224 阅读 · 0 评论 -
数据库 —— 设计三大范式和五大约束
一、三大范式建立科学的,规范的的数据库是需要满足一些规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。(一)第一范式(1NF)数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性。(二)第二范式(2NF)每一行的数据只能与其中一列相关,即一行数据只做一件事。一条数据做一件事,不掺杂复杂的关系逻辑。同时对表数据的更新维护也更易操作。(三)第三范式(3NF)...原创 2021-08-12 17:37:53 · 130 阅读 · 0 评论 -
面试 —— 异常
一、结构Throwable为基类,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception。Error和RuntimeException及其子类成为未检查异常(unchecked),其它异常成为已检查异常(checked)。二、分类(一)异常与错误1、Exception(异常)是程序本身可以处理的异常。2、Error(错误)是程序无法处理的错误。这...原创 2021-08-03 21:05:49 · 81 阅读 · 0 评论 -
非关系型数据库 —— MongoDB
背景MongoDB 是由C++语言编写的,是一个基于分布式文件存储的面向文档存储的开源数据库系统。连接工具NoSQLBooster for MongoDB概念一个mongodb中可以建立多个数据库。MongoDB的默认数据库为"db"有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的原创 2021-06-17 17:51:16 · 1191 阅读 · 1 评论 -
数据库 —— 优化
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num = 03.应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描。4.应原创 2021-08-02 21:39:40 · 56 阅读 · 0 评论 -
计算机网络 —— TCP协议如何保证可靠传输
校 序 重 流 拥校验和发送的数据包的二进制相加然后取反,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。确认应答+序列号(累计确认+seq):接收方收到报文就会确认(累积确认:对所有按序接收的数据的确认)TCP给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。超时重传当TCP发出一个段后,它启动一个定时器,等待目的端确认...原创 2021-08-02 21:34:57 · 115 阅读 · 0 评论 -
Mysql
数据类型(1)数值类型MYSQL中,FLOAT,DOUBLE,DECIMAL 都可以存储小数,但是FLOAT/DOUBLE 存储的是近似值,对于money等对精度要求高的场合不适用。DECIMAL 类型以字符串形式存储,支持精确的小数运算。(2)日期和时间类型(3)字符串类型引擎:InnoDB,支持事务(ACID),行锁定和外键。只有在你增删改查时匹配的条件字段带有索引时,innodb才会使用行级锁,在你增删改查时匹配的...原创 2021-08-02 21:17:38 · 190 阅读 · 0 评论 -
计算机网络 —— TCP的三次握手四次挥手
TCP的6个标志位 SYN —— synchronous :建立联机。 ACK —— acknowledgement :确认。 PSH ——push :传输。 FIN —— finish :结束。 RST —— reset :重置。 URG —— urgent :紧急。 建立tcp连接进行三次握手:第一次握手:建立连接时,客户端发送syn包到服务器,并进入SYN_SENT状态,等待服务器确认第二次握手:服务器收.原创 2021-07-13 22:14:38 · 228 阅读 · 0 评论