
面试准备
文章平均质量分 85
No_Game_No_Life_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
面试准备:海量数据的处理方式
文章目录背景数据排序分治字典树数据去重哈希压缩存储空间面试题汇总1. TopK2. 查找中位数3. 随机选择K个数4. 找出出现次数最多的IP背景海量数据的处理主要包括三个方面:数据排序数据统计数据计算我们可以简单的来算算 5亿个数在内存中的占用:(64bit)*5*1e8 约为(按1000换算) 4Gbyte,所以内存一次一般装不下。对于这类大数的处理,本文会总结一些方法。数据排序分治根据数据存在文件中的位置分裂文件到批量小文件中这里我们的做法是每次读取待排序文件的1e4个原创 2021-08-26 16:10:23 · 880 阅读 · 0 评论 -
面试准备:分布式事务协议汇总
文章目录基本概念ACIDBASECAP强一致性协议2PC3PCTCCSagaATZABPAXOSRaftPoW最终一致性协议基于MQ基于BinlogRefer:BASE介绍、CAP介绍2PC介绍、3PC介绍、 TCC介绍Saga模式介绍、AT模式介绍ZAB介绍、 PAXOS介绍、Raft共识算法BlockChain学习——奖励机制与共识机制MQ 生产端可靠性投递和消费端幂等性保障方案、Mysql Binlog不止是主从同步基本概念ACID原子性(Atomic):一个事务中的所有操作原创 2021-08-15 16:01:16 · 778 阅读 · 0 评论 -
面试准备:MySQL建立索引的原则
文章目录1. =和in可以乱序2. 最左前缀匹配原则3. 尽量选择区分度高的列作为索引4. 索引列不能参与计算5. 尽量的扩展索引,不要新建索引6. 为经常需要排序、分组和联合操作的字段建立索引7. 为常作为查询条件的字段建立索引8. 限制索引的数目9. 尽量使用数据量少的索引10. 尽量使用前缀来索引11. 删除不再使用或者很少使用的索引1. =和in可以乱序比如:a = 1 and b = 2 and c = 3建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的原创 2021-08-15 11:28:45 · 1553 阅读 · 3 评论 -
LevelDB——Compaction操作理解
文章目录LevelDBLevelDB组件LevelDB读/写操作读写LevelDB压缩操作(Compaction)Minor CompactionMajor CompactionLevelDBLevelDB的数据是存储在磁盘上的,采用LSM-Tree的结构实现。LSM-Tree将磁盘的随机写转化为顺序写,从而大大提高了写速度。为了做到这一点LSM-Tree的思路是将索引树结构拆成一大一小两颗树,较小的一个常驻内存,较大的一个持久化到磁盘,他们共同维护一个有序的key空间。写入操作会首先操作内存中的树原创 2021-08-07 17:46:43 · 1011 阅读 · 0 评论 -
面试总结:测试常见面试题汇总
文章目录理论测试流程测试用例设计方法App测试和Web测试的区别典型测试场景聊天功能测试用例怎么设计?怎么测试微信朋友圈?【TODO】怎么测试微信红包?问题分析网页很卡是为什么?APP闪退的原因总结理论测试流程测试需求分析:理解需求,学习业务点制定测试计划:根据测试需求确定测试计划,安排测试人力、进度安排;制定风险评估与规避措施方案测试设计阶段:设计测试用例并做评审测试执行阶段:搭建环境,执行冒烟测试(预测试)-然后进入正式测试,bug管理(推进bug修改并做回归测试)直到测试结束测试评估阶原创 2021-08-03 21:13:29 · 4517 阅读 · 0 评论 -
面试总结:Golang常见面试题汇总
文章目录1. golang协程为什么比线程轻量?2. Golang中数组与切片比较?3. make和new的区别? go语言中的引用类型包含哪些?4. uint,int?5. 说说go语言的channel特性?6. 线程模型有哪些?为什么 Go Scheduler 需要实现 M:N 的方案?Go Scheduler 由哪些元素构成呢?7. context包的用途?8. 简述一下你对Go垃圾回收机制的理解?9. 混合写屏障?1. golang协程为什么比线程轻量?go协程调用跟切换比线程效率高。线程原创 2021-06-28 21:04:56 · 12924 阅读 · 3 评论 -
零拷贝的实现原理
文章目录引入DMAPageCache零拷贝mmapsendfileSG-DMA使用零拷贝技术的项目引入在Java架构直通车——Kafka介绍和高性能原因一节中,介绍了Kafka的Zero Copy技术。本文将深入探究一下Zero Copy的缘起和原理。零拷贝,其实说的不是真的没有拷贝,文件传输必然经历从磁盘到网卡的过程,这个过程无论如何也会有拷贝的。零拷贝说的是CPU不参与到拷贝过程。在了解零拷贝之前,需要知道什么是DMA、什么是PageCache。DMA在没有 DMA 技术前,I/O 的过程是原创 2021-05-25 15:52:21 · 569 阅读 · 0 评论 -
Java并发编程实战——AQS详解和ReentrantLock实现
文章目录总览:concurrent包的结构层次Lock简介Lock接口API初识AQSAQS的模板方法设计模式同步组件通过AQS实现的一个例子总览:concurrent包的结构层次下图为concurrent包的目录结构图。其中包含了两个子包:atomic以及lock,另外在concurrent下的阻塞队列以及executors,这些就是concurrent包中的精华,之后会一一进行学习。而...原创 2020-03-05 15:44:49 · 480 阅读 · 0 评论 -
Java并发编程实战——彻底理解volatile
文章目录volatile实现原理volatile的happens-before关系volatile的内存语义volatile重排序与JMM内存屏障volatile的使用误区volatile的适用场景volatile实现原理在学习本文之前我们知道,被volatile修饰的变量能够保证每个线程能够获取该变量的最新值,从而避免出现数据脏读的现象。那么volatile是怎样实现的?比如一个很简单的J...原创 2020-03-04 15:13:02 · 553 阅读 · 0 评论 -
Java并发编程实战——彻底理解synchronized
文章目录synchronized实现原理对象锁(monitor)机制happens-before关系及内存抽象模型synchronized优化CASJava对象头synchronized实现原理在java代码中使用synchronized可是使用在代码块和方法中,根据Synchronized用的位置可以有这些使用场景:synchronized可以用在方法上也可以使用在代码块中,其中方法是实...原创 2020-03-03 16:54:57 · 475 阅读 · 0 评论 -
Java架构直通车——以Tomcat为例谈双亲委派模型的破坏
文章目录引入Tomcat类加载器是怎么样的?引入之前文章Java架构直通车——以JDBC为例谈双亲委派模型的破坏谈到了对于双亲委派模型的破坏,原因是启动类、拓展类加载器并不能加载jdbc Driver,而只有应用类加载器可以;所以需要在启动类加载器中获取到应用类加载器并加载这个类。而在Tomcat中,也是由于同样的原因:在Java核心类里面有SPI(Service Provider Interface),它由Sun编写规范,第三方来负责实现。SPI需要用到第三方实现类。如果使用双亲委派模型,那么第原创 2021-05-11 14:55:52 · 366 阅读 · 0 评论 -
HTTP详解,HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
文章目录引入:HTTP的历史HTTP1.0和HTTP1.1的一些区别HTTP2.0和HTTP1.X相比的新特性HTTPS与HTTP的一些区别引入:HTTP的历史早在 HTTP 建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。也是说对于前端来说,我们所写的HTML页面将要放在我们的 web 服务器上,用户端通过浏览器访问url地址来获取网页的显示内容,但是到了 WEB2.0 以来,我们的页面变得复杂,不仅仅单纯的是一些简单的文字和图片,同时我们的 HTML 页面有原创 2021-04-18 18:02:00 · 618 阅读 · 0 评论 -
Linux内核内存管理算法Buddy和Slab
文章目录Buddy分配器CMASlab分配器总结Buddy分配器假设这是一段连续的页框,阴影部分表示已经被使用的页框,现在需要申请一个连续的5个页框。这个时候,在这段内存上不能找到连续的5个空闲的页框,就会去另一段内存上去寻找5个连续的页框,这样子,久而久之就形成了页框的浪费。为了避免出现这种情况,Linux内核中引入了伙伴系统算法(Buddy system)。把所有的空闲页框分组为11个块链表,每个块链表分别包含大小为1,2,4,8,16,32,64,128,256,512和1024个连续页框的页原创 2021-04-08 17:36:37 · 996 阅读 · 0 评论 -
处理器对原子操作的实现
文章目录引入单核多核引入原子操作对于我们来说,是非常熟悉的概念。从用户角度,可以用原子操作来替换重量级的锁同步,从而提高程序性能。底层实现角度,原子操作可以用于构建各种更重量级的同步操作,比如锁或屏障之类的。对于原子操作的实现来说,需要分开考虑单处理器单核系统,和多处理器系统多核系统。单核对于单处理器单核系统来说,只要保证操作指令序列不被打断即可实现原子操作(当然,对于内存的读写操作,需要地址对齐,否则就不是一次的内存读写了,当然也就不是原子操作)。对于简单的原子操作,cpu实现上会提供单条指令原创 2021-04-08 14:50:49 · 681 阅读 · 0 评论 -
解决哈希冲突的三种方式
文章目录开发地址法再散列法拉链法开发地址法开放地址法有个非常关键的特征,就是所有输入的元素全部存放在哈希表里,也就是说,位桶的实现是不需要任何的链表来实现的,换句话说,也就是这个哈希表的装载因子不会超过1。它的实现是在插入一个元素的时候,先通过哈希函数进行判断,若是发生哈希冲突,就以当前地址为基准,根据再寻址的方法(探查序列),去寻找下一个地址,若发生冲突再去寻找,直至找到一个为空的地址为止。有几种常用的探查序列的方法:线性探查di=1,2,3,…,m-1;这种方法的特点是:冲突发生时,顺序查看原创 2020-08-20 12:12:55 · 603 阅读 · 0 评论 -
面试准备:常用的基础排序算法
文章目录排序冒泡排序选择排序插入排序希尔排序归并排序快速排序堆排序排序冒泡排序冒泡排序很简单,如果遇到前面的元素比后面的元素大,那么就交换他们的位置;每次遍历完成后,会确定最后k个元素一定是升序的,k是遍历的次数。public class Solution { public void bubbleSort(int[] arr) { for (int i = 0; i < arr.length; i++) { for (int j = 0; j原创 2020-08-20 11:58:05 · 512 阅读 · 0 评论 -
Java架构直通车——Dubbo总结
文章目录什么是 Dubbo?RPC的原理是什么?既有 HTTP ,为啥用 RPC 进行服务调用?为什么要用Dubbo?Dubbo 的架构使用Registry好处Dubbo 提供的负载均衡策略之前对于Dubbo只做了点初步的了解,具体参考:Dubbo。主要是关于用法的,没有怎么去深究。今天由于面试的需要,做一份总结吧。什么是 Dubbo?Apache Dubbo是一款高性能、轻量级的开源Java RPC 框架,它提供了三大核心能力: 面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现原创 2020-07-01 17:16:10 · 784 阅读 · 1 评论 -
Linux文件系统概要
文章目录Linux文件系统简介文件分类Linux目录树Linux文件系统简介在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。也就是说在LINUX系统中有一个重要的概念:一切都是文件(其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来)。文件存储方式:要弄清楚文件系统,首先必须得掌握inode是什么?文件存储在硬盘上,硬盘的最小存储单位是扇区(Sector),每个扇区存储512字节(0.5kb)。原创 2020-06-27 16:39:10 · 563 阅读 · 0 评论 -
面试准备:Java常见面试题汇总(三)
文章目录83. Java泛型了解么?什么是类型擦除?介绍一下常用的通配符?84. 包装类的常量池技术有了解过吗?85. 在 Java 中定义一个不做事且没有参数的构造方法的作用?86. 成员变量与局部变量的区别有哪些?87. 构造方法作用?有哪些特性?88. 在调用子类构造方法之前会先调用父类无参构造方法,其目的是?89. Object类提供了哪些方法?90. 获取用键盘输入常用的两种方法?91. 使用 try-with-resources?92. 既然有了字节流,为什么还要有字符流?93. 浮点数怎么比较原创 2020-06-24 15:40:02 · 789 阅读 · 0 评论 -
面试准备:Spring/Spring MVC常见面试题汇总
文章目录1.Spring框架有什么优点?2.什么是AOP?3. 实现AOP的方式?Spring AOP是怎么实现的?4.动态代理实现方式?5.PageHelper实现方式?1.Spring框架有什么优点?spring 是一个开源的轻量级 JavaBean 容器框架。使用 JavaBean 代替 EJB ,并提供了丰富的企业应用功能,降低应用开发的复杂性。轻量:非入侵性的、所依赖的东西少、资...原创 2020-04-09 15:07:36 · 725 阅读 · 0 评论 -
Java架构直通车——以JDBC为例谈双亲委派模型的破坏
文章目录引入JDBC4.0之前JDBC4.0之后引入java给数据库操作提供了一个Driver接口:public interface Driver { Connection connect(String url, java.util.Properties info) throws SQLException; boolean acceptsURL(String url) throws SQLException; DriverPropertyInfo[] getPr原创 2020-06-04 12:28:30 · 481 阅读 · 2 评论 -
Java架构直通车——ArrayList和LinkedList底层原理解析
文章目录ArrayList实现原理初始化扩容方式add()方法实现接口线程安全与否LinkedList实现原理初始化add()方法实现接口线程安全与否总结:面试如何介绍ArrayList和LinkedListArrayList实现原理初始化ArrayList的底层是一个动态数组,初始化时,ArrayList首先会对传进来的初始化参数initalCapacity进行判断:如果参数等于0,则将数组初始化为一个空数组,如果不等于0,将数组初始化为一个容量为10的数组。不过,与HashMap一样,A原创 2020-06-02 17:00:27 · 826 阅读 · 0 评论 -
Java架构直通车——Redis持久化和宕机恢复机制
文章目录Redis持久化机制RDBAOFRedis宕机恢复机制Redis持久化机制我们都知道Redis是基于内存的,那么当Redis节点宕机后,要保证宕机恢复,Redis必须要有一个持久化的机制,持久化的话是Redis高可用中比较重要的一个环节。Redis持久化有两种方式:RDB:RDB 持久化机制,是对 Redis 中的数据执行周期性的持久化。AOF:AOF 机制对每条写入命令作为日志,以 append-only 的模式写入一个日志文件中,因为这个模式是只追加的方式,所以没有任何磁盘寻址的开销原创 2020-05-29 17:57:23 · 477 阅读 · 0 评论 -
Java架构直通车——Redis主从数据同步机制
文章目录同步机制全量复制增量复制同步故障处理拷贝超时积压缓冲区拷贝溢出slave全量同步的响应问题同步机制Redis的主从同步机制可以确保redis的master和slave之间的数据同步。Redis在2.8及以上版本使用psync命令完成主从数据同步。同步方式包括:全量复制增量复制全量复制slave第一次启动时,连接Master,发送PSYNC命令,格式为psync {runId} {offset}{runId} 为master的运行id;{offset}为slave自己的复制偏原创 2020-05-29 16:51:54 · 571 阅读 · 0 评论 -
Java架构直通车——BIO、NIO、AIO
文章目录同/异、阻/非堵塞同/异、阻/非堵塞 组合IO的理解BIO/NIO/AIOBIONIO 多路复用NIO三个核心对象:通道(Channel)、缓冲区(Buffer)和选择器(Selector)AIOselect、poll、epoll之间的区别同/异、阻/非堵塞虽然我在之前的文章中提到过同步异步、阻塞与非阻塞,但是我认为当时的解释不是很到位,对此,我再次补充解释。同步就是一个任务的完成需...原创 2020-04-27 16:49:52 · 734 阅读 · 0 评论 -
Java架构直通车——为什么线程切换会导致用户态与内核态的切换?
文章目录什么是上下文切换?上下文切换的时机?上下文切换的开销互斥锁与自旋锁为什么线程切换会导致用户态与内核台的切换?什么是上下文切换?上下文切换的时机?CPU通过分配时间片来执行任务,当一个任务的时间片用完,就会切换到另一个任务。在切换之前会保存上一个任务的状态,当下次再切换到该任务,就会加载这个状态。——任务从保存到再加载的过程就是一次上下文切换。按导致上下文切换的因素划分,可将上下文切换分为两点:自发性上下文切换非自发性上下文切换自发性上下文切换指线程由于自身因素导致的切出。通过调原创 2020-05-13 16:26:20 · 6080 阅读 · 4 评论 -
面试准备:逻辑智力题
文章目录1.小车走最远问题2.1.小车走最远问题一个车队有5辆同样的汽车,每辆车上装满的油能使汽车前进480千米,车子之间可以互相加油,现在5辆车同时出发,怎样安排能使其中一辆车走的最远,最远走多远?如果只有两辆车:假设行驶x里,首先x里必定要大于480km的一半才行,否则多余的油就浪费了。行驶里程:(480−x)∗2+x=960−x,x>=240(480-x)*2+x=960-x...原创 2020-04-30 10:39:13 · 3803 阅读 · 5 评论 -
面试准备:操作系统常见面试题汇总
文章目录1.为什么要有用户态和内核态?内核态和用户态的区别?2.进程间通信方式介绍3.1.为什么要有用户态和内核态?内核态和用户态的区别?由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级。系统态(也称为管态或核心态),操作系统在系统态运行——运行操作系统程序用户态(也称为目态),应用程序只能在用户态...原创 2020-04-27 17:01:34 · 1289 阅读 · 0 评论 -
Java架构直通车——深入理解B+树
文章目录引入:AVL树和B树AVL树红黑树B树(B-树)数据库为什么不使用二叉树?为什么使用B+树(与B树的区别)引入:AVL树和B树AVL树平衡二叉搜索树是基于二分法的策略提高数据的查找速度的二叉树的数据结构;平衡二叉搜索树的数据结构组装过程有以下规则:(1)非叶子节点只能允许最多两个子节点存在。(2)每一个非叶子节点数据分布规则为左边的子节点小当前节点的值,右边的子节点大于当前节点的...原创 2020-04-26 16:26:26 · 649 阅读 · 0 评论 -
Java架构直通车——Java8 HashMap详解
文章目录1. HashMap 初始大小为何是 16?2. 懒加载3. 树化4. 扩容resize()5. get(Object key)方法之前了解过Java并发编程实战——并发容器之ConcurrentHashMap(JDK 1.8版本),其实已经对HashMap做了一个大致的了解,这里我们来解释一下HashMap一些相关的问题。Java8 ConcurrentHashMap结构基本上和Ja...原创 2020-04-20 11:58:44 · 559 阅读 · 0 评论 -
面试准备:MQ消息队列常见面试题汇总
文章目录1.为什么要使用消息队列?2.消息队列推、拉模式区别?3.消息队列有什么缺点?4.消息如何保证幂等性?5.消息队列为什么会出现重复消费?6.消息如何保证可靠性?7.如何保证消息顺序?8.消息队列积压怎么办9.Kafka架构?10.RabbitMQ架构?1.为什么要使用消息队列?简单来说就是:解耦、异步、削峰。消息队列可以对系统异步功能进行剥离,减少功能耦合,提供开发效率;消息队列可...原创 2020-04-19 22:03:47 · 3645 阅读 · 0 评论 -
面试准备:Mybatis常见面试题汇总
文章目录1.#{}和${}的区别是什么?2.当实体类中的属性名和表中的字段名不一样 ,怎么办 ?3.一对一、一对多的关联查询 ?1.#{}和${}的区别是什么?#{}是预编译处理,${}是字符串替换。Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;Mybatis在处理时,就是把{}时,就是把时,就是把{}替换成变量的值...原创 2020-04-18 16:18:28 · 815 阅读 · 0 评论 -
面试准备:Redis常见面试题汇总
文章目录1.介绍一下Redis2.Redis为什么这么快?3.Redis支持哪些数据类型?4.Redis与Memcached的区别?5.Redis跳表是什么?6.什么是冷热数据分离?什么是VM机制?7.Redis过期键的删除策略有哪些?8.说说Redis的同步机制?9.Pipeline有什么好处?10.Redis实现分布式锁?11.Redis实现幂等性?12. 接触过哪些Redis客户端?13.R...原创 2020-04-14 16:49:05 · 1362 阅读 · 1 评论 -
面试准备:数据库常见面试题汇总
文章目录1.简单解释数据库三范式?2.不满足数据库三范式可能会出现什么情况?3.解释脏读、不可重复读,幻读,更新丢失4. Mysql提供了哪几种事务隔离级别?5.1.简单解释数据库三范式?第一范式就是数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值。第二范式要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这...原创 2020-04-10 16:46:33 · 2199 阅读 · 0 评论 -
面试准备:计算机网络常见面试题
文章目录1. jsp 和 servlet 有什么区别?2.session 和 cookie 有什么区别?3.如果客户端禁止 cookie 能实现 session 还能用吗?4.struts2和springmvc的区别?5.什么是SQL注入?如何避免 ?6.什么是XSS攻击?如何避免?什么是 CSRF 攻击?如何避免?1. jsp 和 servlet 有什么区别?JSP全名为Java Serve...原创 2020-04-08 14:55:48 · 1699 阅读 · 0 评论 -
面试准备:Java常见面试题汇总(二)
文章目录43.java 中的 Math.round(-1.5) 等于多少?44.String str="i"与 String str=new String(“i”)一样吗?45.如何将字符串反转?46.String 类的常用方法都有那些?47.抽象类必须要有抽象方法吗?48.普通类和抽象类有哪些区别?49.java 中 IO 流分为几种?50.BIO、NIO、AIO 有什么区别?51.Files的...原创 2020-04-02 11:43:02 · 451 阅读 · 0 评论 -
面试准备:Java新特性详解
文章目录Java语言新特性1.Lambda表达式和函数式接口2.接口的默认方法和静态方法3.方法引用4.重复注解5.更好的类型推断6.拓宽注解的应用场景Java编译器新特性参数名称JVM的新特性更多资料,参考java8 新特性精心整理(全)。Java语言新特性1.Lambda表达式和函数式接口比如:@FunctionalInterfacepublic interface Compara...原创 2020-03-27 14:42:15 · 374 阅读 · 0 评论 -
面试准备:Java常见面试题汇总(一)
JDK 和 JRE 有什么区别?JRE是Java Runtime Environment(Java运行时环境),包含了JVM和类库。JDK是Java Development Kit(Java开发工具包),原创 2020-03-27 11:24:02 · 2031 阅读 · 0 评论 -
Java架构直通车——Java基础面试考点清单
文章目录基础J.U.Cjvm虚拟机数据结构&算法SpringRPC通信框架网络通信MQ缓存其他技术基础强引用、弱引用、虚引用、软引用final关键字的作用 (方法、变量、类)泛型、泛型继承、泛型擦除jdk ServiceLoaderLinkedList、LinkedHashMap、LRU装饰者模式、代理模式、责任链模式、工厂模式、适配器模式、建造者模式、单例模式、模板模式、...原创 2020-01-15 14:54:08 · 571 阅读 · 0 评论 -
从头开始学Java——Java类型和类
文章目录原创 2019-10-18 14:22:19 · 671 阅读 · 0 评论