面试总结
文章平均质量分 70
小土狗一只
厚德载物
展开
-
MySQL优化方案
适当使用前缀索引,MySQL 是支持前缀索引的,也就是说我们可以定义字符串的一部分来作为索引。我们知道索引越长占用的磁盘空间就越大,那么在相同数据页中能放下的索引值也就越少,这就意味着搜索索引需要的查询时间也就越长,进而查询的效率就会降低,所以我们可以适当的选择使用前缀索引,以减少空间的占用和提高查询效率。假如我们没有添加索引,那么在查询时就会触发全表扫描,因此查询的数据就会很多,并且查询效率会很低,为了提高查询的性能,我们就需要给最常使用的查询字段上,添加相应的索引,这样才能提高查询的性能。原创 2023-01-31 20:17:01 · 919 阅读 · 0 评论 -
之字遍历二叉树并填充next指针
//蚂蚁一面 评测题目: 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点,//填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。//初始状态下,所有next 指针都被设置为 NULL。public class Test { public static void main(String[] args) { // pointToNext(root); } publi...原创 2022-02-07 18:25:12 · 749 阅读 · 0 评论 -
编程:获取子部门列表(包括隔代子部门)
题:根据id,获取所有子部门列表(包括隔代子部门,一直到叶子节点)public static List<Department> getSub(int id, List<Department> allDepartment)package com.juwenzhe.test.ms;import cn.hutool.core.collection.CollectionUtil;import java.util.ArrayList;import java.util.Li原创 2021-12-15 22:05:02 · 570 阅读 · 0 评论 -
LinkedList与ArrayList区别
一般知道的区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 详细的区别:1.时间复杂度:转载 2017-08-25 10:10:01 · 374 阅读 · 0 评论 -
JVM堆内存释放不及时问题
线上问题:1.线上每天定时读取文件(大文件)成MAP,并加载入库,当执行完最后一批 批量提交sql 时,JVM堆内存没释放;2.因为加了以下堆内存检测,所以,下一次处理文件时,发起不了新的线程处理新任务;public boolean exceedSize() { MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean(); LOGGER.info("堆内存信息: " + memoryBean.getHeapMemoryUs...原创 2020-12-11 14:53:28 · 3035 阅读 · 0 评论 -
Java 并发、并行、异步 应用场景、区别的简单总结
Java 并发、并行、异步 应用场景、区别的理解总结一、并发 多任务无事务性约束,线程池中各线程处理速度不一,同一时刻只有一个任务在执行 示例代码:package com.dubbo.rest.bingfa;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQue...原创 2019-01-07 14:46:50 · 1577 阅读 · 0 评论 -
并发编程学习笔记01 - 基础
并发编程学习笔记01 - 基础一、前言 1.看源码有必要吗? 2.如何看源码?二、并发编程基础 1.什么是线程? 2.线程的创建与运行 3.线程的等待与通知 4.等待线程执行中止的join方法 5.让线程睡眠的sleep方法 6.让出CPU执行权的yield方法 7.线程中断 8.线程上下文切换 9.线程死锁 10.守护线程和用户线程 11.ThreadLocal实现原理一、前言 1.看...原创 2021-05-31 00:50:12 · 106 阅读 · 0 评论 -
JVM基础总结02 - JVM进阶之强软弱虚引用
JVM基础总结02 - JVM进阶之强软弱虚引用 一、强软弱虚引用位于java.lang.ref包1.强引用代码示例public class StrongReferenceDemo { public static void main(String[] args) { Object o1 = new Object(); Object o2 = o1; o1 = null; System.gc(); S...原创 2021-02-27 20:13:44 · 146 阅读 · 0 评论 -
乐观锁与悲观锁深入学习理解
乐观锁与悲观锁深入学习理解一、乐观锁和悲观锁悲观锁乐观锁二、两种锁的使用场景悲观锁乐观锁三、乐观锁实现方式四、乐观锁的缺点五、总结参考文献一、乐观锁和悲观锁乐观锁和悲观锁并不是真实存在的锁,而是一种设计思想,乐观锁和悲观锁对于理解 Java 多线程和数据库来说至关重要。悲观锁悲观锁是一种悲观思想,总认为最坏的情况可能会出现悲观锁认为数据很可能会被其他人修改,所以悲观锁在持有数据时,会把...原创 2020-03-29 13:45:31 · 257 阅读 · 0 评论 -
linux知识基础总结
linux知识基础总结一、生产环境服务器变慢,诊断思路和性能评估以下逐个排查:1.整机:top load average,系统的1分钟、5分钟、10分钟平均负载,如果相加/3*100% > 60%,表示系统的压力重 top调出来,可以在按1,调出哪个CPU的负担重 uptime,是top命令的精简版 2.CPU:vmstat 2.1查看CPU 2.2查看额外 - 查看所有cpu核信息:mpstat -P ALL 2 ...原创 2021-02-27 22:17:33 · 168 阅读 · 0 评论 -
JUC基础总结05 - 阻塞队列与线程
JUC基础总结05 - 阻塞队列与线程一、线程通信之生产者消费者传统版二、Synchronized和Lock有什么区别三、锁绑定多个条件Condition四、线程通信之生产者消费者阻塞队列版一、线程通信之生产者消费者传统版class ShareData{ private int number = 0; private Lock lock = new ReentrantLock(); private Condition condition = lock.newCon...原创 2021-02-27 18:10:13 · 164 阅读 · 0 评论 -
JUC基础总结06 -线程、线程池
JUC基础总结06 -线程、线程池一、Callable接口二、线程池 1.7大参数 2.4种拒绝策略 3.底层原理 4.使用配置 5.死锁编码定位分析 一、Callable接口class MyThread implements Callable<Integer> { @Override public Integer call() throws Exception { System.out.print...原创 2021-02-27 18:21:02 · 166 阅读 · 0 评论 -
JUC基础总结04 - 阻塞队列
JUC基础总结04 - 阻塞队列 一、阻塞队列接口结构和实现类 二、阻塞队列api 三、阻塞队列之同步SynchronousQueue队列 一、阻塞队列接口结构和实现类1.什么是阻塞队列?当阻塞队列是空的,向队列中取元素的线程会被阻塞当阻塞队列是满的,向队列中放元素的线程会被阻塞2.为什么需要阻塞队列?不需要关心什么时候阻塞线程,什么时候唤醒线程,由阻塞队列BlockingQueue实现3.队列种类BlockingQueue 接口继承自 Collec...原创 2021-02-27 17:30:21 · 108 阅读 · 0 评论 -
JVM基础总结03 - JVM进阶之OOM
JVM基础总结03 - JVM进阶之OOM一、谈谈对OOM的认识1.java.lang.StackOverflowError一个深度的加载或者递归调用可能会导致StackOverFlowErrorpublic class StackOverflowDemo { public static void main(String[] args) { stackOverflow(); } private static void stackOverflow() {...原创 2021-02-27 21:08:58 · 120 阅读 · 0 评论 -
JVM基础总结04 - JVM进阶之垃圾回收
JVM基础总结04 - JVM进阶之垃圾回收一、GC垃圾回收算法和垃圾收集器的关系?分别是什么1.GC算法(引用计数/复制/标记清楚/标记整理)是内存回收的方法论,垃圾收集器是算法的落地实现2.目前为止还没有完美的收集器出现,更没有万能的收集器,只有针对具体应用最合适的收集器,进行分代收集二、4种主要的垃圾收集器串行 并行 并发 G11.串行垃圾回收器 它为单线程环境设计,且只使用一个线程进行垃圾回收,会暂停所有的用户线程,所以不适合服务器环境2.并行垃圾回收器 多个垃圾收集线...原创 2021-02-27 21:33:47 · 137 阅读 · 0 评论 -
JVM基础总结01 - 配置参数
JVM基础总结01 - 配置参数 〇、JVM体系结构及垃圾回收算法 一、GCRoots 二、JVM的标配参数和X参数 三、JVM的XX参数 1.布尔类型 2.KV设值类型 3.查看参数设置 4.XmsXmx 四、参数修改 五、常用基础参数 1.示例 2.PrintGCDetails回收前后对比 3.SurvivorRatio 4.Ne...原创 2021-02-27 18:57:46 · 165 阅读 · 0 评论 -
Redisson注解式分布式锁
一、说明1.测试环境:springboot 2.0.9.RELEASE版本+jdk1.8+redis集群2.安装redis的教程:REDIS学习总结(一)单机集群搭建3.需要注意的是,在线程复用的情况下对redisson使用的影响:场景->一个人频繁刷接口,当这个人每次访问服务时,线程ID可能相同,redisson类似于可重入锁,最终会出现拦不住刷接口的行为。正式考虑到这点,我在切面中使用了以下逻辑,真正控制在锁自动释放前,用户刷接口频率。boolean excute = !rateLi.原创 2020-06-09 22:52:57 · 828 阅读 · 0 评论 -
JAVA基础笔试面试总结(JVM与GC)
一、 JVM1. JVM原理 1 > JVM是 Java程序运行的环境,也是一个操作系统的一个应用程序,一个进程,也有自己的生命周期,也有自己的代码和数据空间。 2 > JVM 在整个JDK中处于底层,负责与操作系统的交互,用来屏蔽操作系统环境,提供一个完整的JAVA运行环境。 3 > 操作系统装入JVM是通过JDK中java.exe来完成的,其中,四...转载 2018-08-20 22:35:08 · 273 阅读 · 0 评论 -
GitHub知识基础总结
GitHub知识基础总结 〇、前言 一、in限制搜索 二、star和fork范围搜索 三、awesome搜索 四、#L 五、T搜索 六、其他〇、前言1.常用词含义 watch:会持续收到该项目的动态 fork:复制某个项目到自己的GitHub仓库 star:点赞 clone:将项目下载至本地 follow:关注作者 一、in限制搜索1.in关键词限制搜索范围公式:xxx关键词 in:name或d...原创 2021-02-27 22:20:56 · 161 阅读 · 0 评论 -
JUC基础总结01 - volatile & cas
JUC基础总结01 - volatile & cas 一、可见性的代码验证说明 二、volatile指令重排案例 三、CAS及ABA问题 一、可见性的代码验证说明1.JMM,Java内存模型,本身是一种抽象概念并不真实存在。它描述的是一组规范,通过这个规范定义了程序中各变量的访问方式,是为了解决多核CPU缓存数据不一致问题提出的。2.JMM关于同步的规定: 1) 线程解锁前,必须把共享变量的值刷新回主内存 2) 线程加锁前,必须读取主内存中最新值到...原创 2021-01-31 16:57:09 · 157 阅读 · 0 评论 -
JUC基础总结03 - 并发包常用类
JUC基础总结03 - 并发包常用类 1.CountDownLatch 2.CyclicBarrier 3.Semaphore 一、CountDownLatch(递减计数器)使用之前: 主线程发起线程,无法知道子线程是否执行完使用之后: 主线程发起线程,并使用await等待,每个子线程完成操作,CountDownLatch 计数器-1,直到0,主线程被唤起继续工作主要两个方法: 1) 子线程(组)调 countDown 方法 2) 主线程...原创 2021-01-31 17:14:15 · 422 阅读 · 0 评论 -
JUC基础总结02 - 集合类 & Java锁
JUC基础总结02 - 集合类 & Java锁 一、集合类 1.ArrayList 2.线程不安全示例代码 二、Java锁 1.公平锁和非公平锁 2.可重入锁和递归锁 3.自旋锁 4.读写锁 一、集合类 1.ArrayList// 构造方法 new ArrayList<>();// private static final Object[] D...原创 2021-01-31 17:05:25 · 163 阅读 · 0 评论 -
剑指03 - 从尾到头打印链表
剑指03 - 从尾到头打印链表输入一个链表,按链表从尾到头的顺序返回一个ArrayList。输入{67,0,24,58}返回值[58,24,0,67]解法一:import java.util.ArrayList;import java.util.Collections;public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ...原创 2021-03-01 23:04:39 · 70 阅读 · 0 评论 -
剑指01 - 二维数组中的查找
剑指01 - 二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解法一:public boolean Find(int target, int [][] array) { int tempJend = array[0].length-1; for(int i=0; i<=array.length-1; i++){...原创 2021-03-01 23:02:31 · 88 阅读 · 0 评论 -
算法题:在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使计算结果为100,写出所有可能性。
算法题:在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100,写出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100。JAVA写的程序如下,附结果。public class Test{ //先写一个计算器 public static int cal(String str) { List<...原创 2018-09-06 19:57:30 · 1660 阅读 · 0 评论 -
【美图-选择题考点整理-第二篇】
这篇文章是在总结ConcurrentHashMap时,发现了volatile,之前就想总结的。于是,就先从volatile说起吧,再浅谈ConcurrentHashMap。一、细说volatile:(参考 volatile关键字: http://blog.csdn.net/u010887744/article/details/50275517) 1. 内存模型的相关概念原创 2017-09-07 16:00:33 · 533 阅读 · 0 评论 -
滴滴面试总结之MySQL存储引擎以及索引原理
一、MySQL存储引擎:MySQL将数据用各种不同的技术存储在文件中,这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。这些不同的技术以及配套的相关功能在 mysql中被称作存储引擎(也称作表类型)。建表时,选择合适的存储引擎很重要,如果到后期再更换将会很麻烦。存储引擎是基于表的,而非数据库。 个人理解:存储引擎是某张表存储数据、如原创 2017-08-30 11:06:21 · 1389 阅读 · 0 评论 -
JAVA基础笔试面试总结(一)
1. IO/NIO的区别:(参考文献:并发编程网 – ifeve.com:Java NIO系列教程(十二) Java NIO与IO)①.Java NIO和IO 的主要区别: IO 面向流 阻塞IO 无 NIO 面向缓冲 非阻塞IO 选择器②.面向流与面向缓冲:Java NIO和IO 最大的区别是,IO是面向流的,NIO是面向缓冲的。 Java...转载 2018-08-20 22:34:20 · 245 阅读 · 0 评论 -
滴滴面试总结之写出你常用的linux命令及详解
常用的linux命令及详解cd -- 最常用,参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径cd /root/Docements # 切换到目录/root/Docements cd ./path # 切换到当前目录下的path目录中,“.”表示当前目录 cd ../path # 切换到上层目录中的path目录中,“..”表示上原创 2017-08-28 11:17:59 · 621 阅读 · 0 评论 -
滴滴面试总结之HashMap的put是怎么实现的?
1. HashMap的put是怎么实现的1 - HashMap继承AbstractMap类,实现Map接口。它的数据结构实际上是一个链表数组,最外层是数组,数组的元素是链表。在HashMap中,key-value总是会被当作一个整体来处理,系统会根据hash算法来计算key-value的存储位置,以便通过key快速地存、取value。HashMap的无参构造函数可以构造一个具有默认初识容量(1原创 2017-08-26 15:38:49 · 1001 阅读 · 0 评论 -
2018届秋季校招Java面试题总结(二)
2018届秋季校招考试题总结系列是在 本菜 面挂一万场后记下的面试题。记下以供闲暇学习之。1. 关于网络协议(趋势科技、联想、58到家面试) 答:TPC/IP 协议是传输层协议,主要解决数据如何在网络中传输,而HTTP 是应用层协议,主要解决如何包装数据。关于TCP/IP 和HTTP 协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP原创 2017-10-31 09:26:55 · 1311 阅读 · 0 评论 -
2018届秋季校招Java面试题总结(一)
2018届秋季校招考试题总结系列是在 本菜 面挂一万场后记下的面试题。记下以供闲暇学习之。1. 简单描述一下Zookeeper答:Zookeeper是一种为分布式应用所设计的高可用性、高性能且一致的开源协调服务,它提供一项基本服务:分布式锁服务。由于Zookeeper的开元特性,后来我们的开发者在分布式锁的基础上,摸索了出了其他的使用方法:配置维护、组服务、分布式消息队列、分布式通知/协调原创 2017-10-25 09:02:05 · 8594 阅读 · 2 评论 -
【美图-选择题考点整理-第一篇】
1. String / StringBuffer / StringBuilder 三个类 String -- 首先,String是线程安全的吗?答案:是的。String是不可变类,所有不可变类都是线程安全的(但,线程安全的类不一定是不可变类,如StringBuffer类,靠锁实现线程安全)。String是字符串‘常量’ ==>String a = "abcd"; a = a + 1;原创 2017-09-06 10:34:18 · 441 阅读 · 0 评论