07 2022 档案
摘要:美团 java后端 二面 聊聊实习经历,项目经历 Spring框架相关,有哪些设计模式? 工厂模式 代理模式 模板方法模式 单例模式 ioc aop redisteample 唯一bean AOP的代理是怎么实现的? jdk动态代理和cglib。 怎么实现的?有什么区别? 是否需要实现接口 有用过消
阅读全文
摘要:Redis详解 Redis介绍 官方解释:Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。同时支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和g
阅读全文
摘要:队列 介绍 队列与优先队列的区别 队列是一种FIFO(First-In-First-Out)先进先出的数据结构,对应于生活中的排队的场景,排在前面的人总是先通过,依次进行。 优先队列是特殊的队列,从“优先”一词,可看出有“插队现象”。比如在火车站排队进站时,就会有些比较急的人来插队,他们就在前面先通
阅读全文
摘要:恒生复试 9.14 Java开发 25min 自我介绍(不需要讲简历上有的) 项目,如何保证不超卖超卖,如何实现同一用户不重复下单,如果Redis崩了会怎么样,对于分布式的学习到哪种程度了 悲观锁、唯一索引、redis锁、存储过程、消息队列 接下去有什么学习计划或者打算吗? 你会怎么去学习一个新的东
阅读全文
摘要:栈 介绍 栈是一种线性结构,它只能从一端添加元素,也只能从一端取出元素(这一端称之为栈顶)。 Stack这种数据结构用途很广泛,在计算机的使用中,大量的运用了栈,比如编译器中的词法分析器、Java虚拟机、软件中的撤销操作(Undo)、浏览器中的回退操作,编译器中的函数调用实现等等。 | 接口 | 说
阅读全文
摘要:Spring串讲 Spring IOC & AOP Spring IoC 和 AOP 的理解 AOP实现原理、动态代理和静态代理、Spring IOC的初始化过程、IOC原理、自己实现怎么实现一个IOC容器?这些东西都是经常会被问到的。 推荐阅读: IOC简单理解【先理解这个就行,下面的不写代码可以
阅读全文
摘要:maven打包与项目部署 maven打包 多环境打包 在SpringBoot项目中,一般会有多个环境(开发环境、测试环境、上线生成环境等,每个环境的数据库、Redis等地址都不一样),用到profile属性(profile指具体是哪个环境),可以快速切换环境。 增加profile 我们项目默认的配置
阅读全文
摘要:华为 Java开发 HashMap及其底层结构 链表散列+红黑树 (n-1)&hash 2倍扩容1.7 头插法(循环引用) 1.8 尾插法 快速失败 单线程 当在用迭代器(Iterator)或者增强for循环(增强for循环的底层也是迭代器)对一个集合进行遍历操作时,如果遍历的过程中集合的结构发生了
阅读全文
摘要:转转 2021.8.31日 技术一面(约50min) 自我介绍 介绍一下项目? Spring的两个核心。说一下 ioc 控制反转,将创建对象权利交给ioc容器 aop 面向切面编程 扩展性高 常见于日志 AOP主要用到的Java的哪些技术呢? 动态代理,jdk动态代理/cglib MySQL的索引有
阅读全文
摘要:分布式唯一主键 全局唯一 :ID 的全局唯一性肯定是首先要满足的! 高性能 : 分布式 ID 的生成速度要快,对本地资源消耗要小。 高可用 :生成分布式 ID 的服务要保证可用性无限接近于 100%。 方便易用 :拿来即用,使用方便,快速接入! 安全 :ID 中不包含敏感信息。 有序递增 :如果要把
阅读全文
摘要:第三方接口 实际项目中经常会与第三方网站交互,例如提交支付宝请求支付,或者获取合作方的各类信息(比如行政码、气象股票信息,或者模拟登录获取信息等等),这个时候一般都是基于http协议提供接口,这时候就需要能与第三方的http接口交互数据,httpclient就是实际项目干这个的(也可以直接使用Res
阅读全文
摘要:CMS垃圾回收器 CMS垃圾回收器 如果用Seria和Parallel系列的垃圾收集器:在垃圾回收的时,用户线程都会完全停止,直至垃圾回收结束! CMS的全称:Concurrent Mark Sweep,翻译过来是并发标记清除 用CMS对比上面的垃圾收集器(Seria和Parallel和parNew
阅读全文
摘要:G1垃圾回收器 G1垃圾收集器 CMS垃圾收集器的弊端:会产生内存碎片&&空间需要预留; 这俩个问题在处理的时候,很有可能会导致停顿时间过长,说白了就是CMS的停顿时间是不可预知的 而G1又可以理解为在CMS垃圾收集器上进行”升级”; G1 垃圾收集器可以给你设定一个你希望Stop The Word
阅读全文
摘要:后台定时任务 后台定时作业是实际项目中经常要用到的,例如每5分钟跑一次新下的订单并发送邮件等等,实际使用非常多。 后台作业类 @Component public class ScheduledExample { // @Scheduled(fixedRate = 5000) // 上一次开始执行时间
阅读全文
摘要:垃圾回收机制 判断对象不再被使用 常用 的算法有两个引用计数法和可达性分析法 引用计数法 引用计数法思路很简单:当对象被引用则+1,但对象引用失败则-1。当计数器为0时,说明对象不再被引用,可以被可回收 引用计数法最明显的缺点就是:如果对象存在循环依赖,那就无法定位该对象是否应该被回收(A依赖B,B
阅读全文
摘要:慢SQL 慢SQL优化 发现慢SQL show processlist查询当前慢sql的语句 优化慢SQL 步骤 explain sql语句的方式查看慢sql的执行计划 分析该SQL语句索引使用情况,全表扫描情况 常见信息 列名 含义 id 选择标识符 select_type 表示查询的类型 tab
阅读全文
摘要:链表 介绍 数组 首先我们来看一下数组。 我们先来看一下它的特点:首先数组是一种线性表数据结构,用一组连续的内存空间来存储一组具有相同类型的数据,左边的示意图,最左边0到8是它的下标,也就是数组从0开始,按照它的下标,可以随机的访问这个数组中的任何一个元素,那右边的话,8位的一串的数字是什么意思呢?
阅读全文
摘要:幂等性 一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。 场景 购买某些视频网站的会员后,给会员送成长值和送电影券 清理或者迁移数据,数据库表仅
阅读全文
摘要:中兴 equals和==的区别 ==是一个比较运算符,基本数据类型比较的是值,引用数据类型比较的是地址值。 equals()是一个方法,只能比较引用数据类型。 hashcode的作用,不重写会怎样 未重写hashCode方法时,它的作用主要是根据当前对象返回一个整型的hash值,不同对象调用hash
阅读全文
摘要:算法之大数据 参考链接 思想 哈希函数可以把数据按照种类均匀分流 布隆过滤器用于集合的建立与查询,并可以节省大量空间 一致性hash解决数据服务器的负载管理问题 利用并查集结构做岛问题的并行计算、 位图解决某一范围上数字的出现情况,并可以节省大量空间 利用分段统计思想、并进一步节省空间 利用堆、外排
阅读全文
摘要:排行榜 参考链接 数据库实现 order by关键字 最简单的实现方式,通常性能不会很好 ORDER BY 关键字可以使查询返回的「结果集」按照指定的列进行排序,可以按照某「一列」排序或者同时按照「多列」进行排序,排序的顺序可以是「升序」或者「降序」。 SELECT column_name,colu
阅读全文
摘要:京东 谈一谈你对集合的了解,从什么角度切入都可以。 arraylist linkedlist hashset treeset hashmap treemap hashmap 数组链表 数组扩容(数组元素大于0.75*数组长度) 链表扩容(数组大于64,链表大于8) put 扰动函数 (n-1)&ha
阅读全文
摘要:Redis基础 Redis介绍 Redis是一个开源(BSD许可)的使用ANSI C语言编写的,支持网络,可以基于内存亦可持久化的日志型,key-value数据库(也叫NoSql数据库),并提供多种语言的API。 基本数据结构: 字符串(strings) 散列(hashes) 列表(lists) 集
阅读全文
摘要:权限管理 如果是在service层或者dao层,直接使用spring的AOP切面编程 如果是在controller层,因为需要request或response,因此一般采用filter功率器或者spring的Interceptor拦截器。 前置知识 DispatchServlet流程 Filter、
阅读全文
摘要:快手 自我介绍 实习项目、背景、需求介绍 InnoDB优点 外键 行锁 事务 聚簇索引 mvcc 使用场景 MyISAM索引底层是什么结构 b+树,遍历层级短,io次数少 B树和B+树区别 非叶子节点是否存数据 为什么选择B+树不选择B树 单位时间查找效率高,io次数更少 MySQL如何支持事务 使
阅读全文
摘要:美团优选 ArrayList和LinkedList区别 底层数据结构不同,链表和数据 对随机读的支持不同 容量不同 使用场景不同,ArrayList多读少写,LinkedList少读多写 HashMap八股(数据结构,扩容,链表和红黑树转换) 死循环 链表散列 扩容 链表引发 链表长度大于8,判断是
阅读全文
摘要:高并发新增数据唯一 悲观锁 在插入前先判断数据是否存在,不存在再进行插入操作,存在返回id RR事务隔离级别加悲观锁,此事务隔离级别下悲观锁会加临键锁,会阻止其他线程的其他操作(防止幻读),以此实现并发的新增数据唯一 线程并发时,会阻塞其他线程的读写操作,并发事务只会有一个执行成功 思路 //悲观锁
阅读全文
摘要:算法之排序 八大排序 插入排序 插入排序是选择未排序部分首个元素,然后遍历已排过序的部分,插入对应的位置上。 直接插入排序 思想 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止
阅读全文
摘要:BIGO 实习做了什么 介绍实习的项目 有哪些数据结构 数组 arraylist 栈 stack 队列 blockqueue 链表 linkedlist 树 TreeSet 散列表 HashSet 链表和数组的区别 arraylist 底层为数组,判断add扩容1.5倍,设置初始大小。 多读少写 l
阅读全文
摘要:字节跳动 自我介绍 项目相关 Java中常用的集合类 有一组数据,需要按照顺序对它进行加密,如果用集合做的话你会选哪个集合?比如一个数组,其元素本身无序,每个元素是字母或者数字都行,对它从小到大进行排序,你会选哪个集合去存储? linkedhashmap treemap Java中线程同步的方案有哪
阅读全文
摘要:接口设计 整体思路 接口设计大致分为四个部分组成:接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响应数据(response) 接口地址 请求地址一般项目都类似,就是需求上的单个实体相关的方法都在一个类中,这样也方便后续维护。 接口请求方式 主要的参数提交方式是p
阅读全文
摘要:分页设计 普通分页 内存分页 内存分页,也叫做逻辑分页。就是从数据库中寻找出所有符合条件的数据记录,然后在逻辑层进行分页操作。 分页请求类 @Data public class PageReq implements Serializable { @NotNull(message = "page 不能
阅读全文
摘要:阿里菜鸟 二叉搜索树遍历思路? 前中后 根左右 左根右 左右根 数据库索引原理? b+树,遍历层级低,io次数少 非自增id,维护索引代价很大(页分裂);空间占用大; 有什么类型索引?各有什么特点? 对比hash索引、数组索引、b+树 hash索引 无法范围查询 数组查询 维护成本高 inner j
阅读全文
摘要:携程网 问了实习项目,承担什么职位?有什么困难? 为什么选用这个技术? 聊了下Nacos的源码,主要说了服务端注册和客户端注册的源码 项目怎么解决Redis和MySQL数据库不一致问题? 先删除缓存,再更新数据库 问题 请求1先把cache中的A数据删除;请求2从DB中读取数据将将数据A写入cach
阅读全文
摘要:AQS&管程模型 MESA模型 管程模型 public void method() { synchronized (this) { // do something } } AQS模型 Reentrantlock示例 简单示例 public class LockDemo { static Lock l
阅读全文
摘要:BIO 相关API Java流操作有关的类或接口: 详见如下图: Java流类图结构: 【备注:】IO中大量使用了装饰模式(装饰模式详解详见流中的说明) 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输
阅读全文
摘要:IO 模型 BIO (Blocking I/O) BIO 属于同步阻塞 IO 模型 。 同步阻塞 IO 模型中,应用程序发起 read 调用后,会一直阻塞,直到内核把数据拷贝到用户空间。 在客户端连接数量不高的情况下,是没问题的。但是,当面对十万甚至百万级连接的时候,传统的 BIO 模型是无能为力的
阅读全文
摘要:JAVA基础串讲 知识整体梳理 八种基本类型,byte的范围 基本类型、对象、数组 引用传递和值传递 equals和==的区别 equals()和hashcode()方法 String不可变的理解,String, StringBuilder和StringBuffer String.intern()方
阅读全文
摘要:Java内存模型详解 硬件内存架构 理解内存模型架构以及Java内存模型如何与它协同工作也是非常重要的。 现代计算机硬件架构的简单图示: 多CPU:一个现代计算机通常由两个或者多个CPU。其中一些CPU还有多核。从这一点可以看出,在一个有两个或者多个CPU的现代计算机上同时运行多个线程是可能的。每个
阅读全文
摘要:数组类创建过程 【结论】数组类本身并不是由类加载器负责创建的,而是由JVM直接在内存中动态构造出来的 理解: String[] Student[] Integer[] int[] 【结论】数组不是类加载器创建的而是java虚拟机直接创建的,知道这个结论就可以了,因为数组不属于类 核心就是: 创建数组
阅读全文
摘要:Mysql串讲 知识总结 【索引相关】 索引的本质,什么情况下添加索引呢 索引实现的数据结构:哈希表,有序数组,搜索树(即使B树) mysql中索引的实现,为什么最后是B+树呢,带有顺序访问指针的B+Tree mysql中myisam和Innodb的区别,mysql的存储引擎有那些呢 联合索引,即索
阅读全文
摘要:NIO NIO详解 NIO 是non-blocking的简称,从JDK1.4提出,可以替代标准的Java IO API。 Java NIO 由以下几个核心部分组成: Channels(通道) Buffers(缓存区) Selectors(选择器) NIO主要有三大核心部分:Channel(通道),B
阅读全文
摘要:lambda表达式 lambda表达式说明 Lambda表达式是Java8引入的,使用它设计的代码会更加简洁。当开发者在编写Lambda表达式时,也会随之被编译成一个函数式接口。Lambda表达式其实核心是函数式编程,而Java本身是面向对象的编程。 不采用Lambda的老方法 ,创建线程: Run
阅读全文
摘要:Synchronized详解 简单介绍 synchronized中文意思是同步,也称之为同步锁。 synchronized的作用是保证在同一时刻, 被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的效果。 synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种
阅读全文
摘要:多线程高级类 concurrent包的结构层次 在针对并发编程中,Doug Lea大师为我们提供了大量实用,高性能的工具类,针对这些代码进行研究会让我们队并发编程的掌握更加透彻也会大大提升我们队并发编程技术的热爱。这些代码在java.util.concurrent包下。 其中包含了两个子包:atom
阅读全文
摘要:多线程基础 多线程相关概念 线程和进程的概念 从一定意义上讲,进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程是进程中的一部分,进程包含多个线程在运行。 相对使用多进程来说,多线程的优势: 进程之间不能共享内存,但线程之间共享内存非常容易。 系统创建线程所分配的资源相对创建进
阅读全文
摘要:泛型与反射 泛型 泛型说明 泛型,即“参数化类型”。简单的说 泛型就是函数的参数类型可以变化 接口、类和方法也都可以使用泛型去定义,以及相应的使用。在具体使用时,可以分为泛型接口、泛型类和泛型方法, 由于接收来自外部使用时候传入的类型实参。那么对于不同传入的类型实参,生成的相应对象实例的类型是不是一
阅读全文
摘要:synchronized有什么作用,底层是如何实现的呢 【答案解析】 方法或代码块的互斥性来完成实际上的一个原子操作。(方法或代码块在被一个线程调用时,其他线程处于等待状态) 所有的Java对象都有一个与synchronzied关联的监视器对象(monitor),允许线程在该监视器对象上进行加锁和解
阅读全文
摘要:多线程同步 synchronized synchronized关键字 synchronized, wait, notify 是任何对象都具有的同步工具。wait/notify必须存在于synchronized块中。详情如下: 方法或代码块的互斥性来完成实际上的一个原子操作。(方法或代码块在被一个线程
阅读全文
摘要:汉德信息 自我介绍 原始jdbc使用流程 //首先加载驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //提供JDBC连接的URL String url="jdbc:mysql://0.0.0.0:3306/xxxx"; String username="
阅读全文
摘要:任拓数据科技 自我介绍 聊我的项目 项目中的网页有没有安全机制?防sql注入等等 {} 权限认证,shiro、springsecurity,认证授权 json数据裸奔 对数据加密,MD5加密 权限认证,shiro 项目中遇到的问题?跨域 为什么跨域?解决方法? 几个算法(括号匹配、排序高考分数、身份
阅读全文
摘要:招银网络 自我介绍 实习项目的具体情况 ES的具体操作 Redis的常用数据结构 string 缓存 session共享 分布式锁 int embstr简单动态字符串 简单动态字符串 list 消息队列 ziplist linkedlist hash 存储对象 ziplist hashtable s
阅读全文
摘要:腾讯 自我介绍 实习项目 java里面的线程和操作系统的线程一样吗? java线程 虚拟机 用户态 os线程 os 核心态 说说java里面的gc机制、垃圾回收算法、如何判断一个对象是无用对象? 复制、压缩、清除、分代 根可达算法、循环计数法 HashMap的底层原理 链表散列 (n-1)&hash
阅读全文
摘要:网络命令和实战 网络知识引导 HTTP协议的运作过程,Get和Post的区别有哪些? 这道题考核的是对HTTP协议的理解,HTTP协议是网络的基础协议,目前网络相关程序绝大部分都是基于HTTP协议的,深刻理解HTTP协议才能明白很多高级特性。 此题主要是了解HTTP协议运作的过程,加深理解。 HTT
阅读全文
摘要:序列化 简而言之:序列化的作用就是为了不同jvm之间共享实例对象的一种解决方案 什么是Java对象序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JV
阅读全文
摘要:线程池 为什么要用线程池? 池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。 线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数
阅读全文
摘要:哔哩哔哩uwp客户端测试 为了看视频使用更小的硬件消耗,使用uwp的b站版本。 网上对各个版本其评价褒贬不一,决定自己测试。 测试硬件:联想小新air14 2019 测试视频 低成本口碑佳作《毛骗》正式登陆B站,S1E01 梦开始的地方!(防骗!反诈!) 结论 先说结论,对比下来云之幻大佬的2.0版
阅读全文