![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试文
不务正业的程序汪
这个作者很懒,什么都没留下…
展开
-
8种单例模式写法助你搞定面试
1. 单例模式常见问题为什么要有单例模式单例模式是一种设计模式,它限制了实例化一个对象的行为,始终至多只有一个实例。当只需要一个对象来协调整个系统的操作时,这种模式就非常有用.它描述了如何解决重复出现的设计问题,比如我们项目中的配置工具类,日志工具类等等。如何设计单例模式 ?单例类如何控制其实例化如何确保只有一个实例通过一下措施解决这些问题:private构造函数,类的实例话不对外开放,由自己内部来完成这个操作,确保永远不会从类外部实例化类,避免外部随意new出来新的实例。该实例通常存原创 2020-11-29 19:12:18 · 205 阅读 · 0 评论 -
面试时说Redis是单线程的,被喷惨了!
Redis是单线程的,这话搁以前,是横着走的,谁都知道的真理。现在不一样,Redis 变了。再说这句话,多少得有质疑的语气来跟你辩驳一番。意志不坚定的,可能就缴械投降,顺着别人走了。到底是什么样的,各位看官请跟小莱一起往下:图注:思维导图Reactor模式反应器模式,你可能不太认识,如果看过上篇文章的话应该会有点印象。涉及到 Redis 线程它是一个绕不过去的话题。1、传统阻塞IO模型在讲反应器模式前,这里有必要提一下传统阻塞IO模型的处理方式。在传统阻塞IO模型中,由一个独立的 Accep原创 2020-11-29 13:54:34 · 221 阅读 · 0 评论 -
疯了吧!一口气问我18个JVM问题?有没有搞错
前言GC 对于Java 来说重要性不言而喻,不论是平日里对 JVM 的调优还是面试中的无情轰炸。这篇文章我会以一问一答的方式来展开有关 GC 的内容。这篇文章解释了很多有关垃圾回收的基本知识,能从源头上理解垃圾回收和日益发展的垃圾收集器演进的方向,这很重要。本文章所说的 GC 实现没有特殊说明的话,默认指的是 HotSpot 的。我先将十八个问题都列出来,如果都清楚的话那就可以关闭这篇文章了。好了,开始表演。young gc、old gc、full gc、mixed gc 傻傻分不清?这个原创 2020-11-28 20:11:27 · 302 阅读 · 0 评论 -
程序员须知:面试中最容易被问到的18个算法题(附答案!)
算法是比较复杂又基础的学科,每个学编程的人都会学习大量的算法。而根据统计,以下这18个问题是面试中最容易遇到的,本文给出了一些基本答案,供算法方向工程师或对此感兴趣的程序员参考。1)请简单解释算法是什么?算法是一个定义良好的计算过程,它将一些值作为输入并产生相应的输出值。简单来说,它是将输入转换为输出的一系列计算步骤。2)解释什么是快速排序算法?快速排序算法能够快速排序列表或查询。它基于分割交换排序的原则,这种类型的算法占用空间较小,它将待排序列表分为三个主要部分:小于Pivot的元素枢轴元素原创 2020-11-27 19:13:08 · 209 阅读 · 0 评论 -
京东面试官:说说你对MySQL索引的理解?
开门见山,直接上图,下面的思维导图即是现在要讲的内容,可以先有个印象~常见索引类型(实现层面)索引种类(应用层面)聚簇索引与非聚簇索引覆盖索引最佳索引使用策略1.常见索引类型(实现层面)首先不谈Mysql怎么实现索引的,先马后炮一下,如果让我们来设计数据库的索引,该怎么设计?我们首先思考一下索引到底想达到什么效果?其实就是想能够实现快速查找数据的策略,所以索引的实现本质上就是一个查找算法。但是跟普通的查找有所不同,因为我们的数据有一下特征:存储的数据是非常非常多的并且还不断的动原创 2020-11-26 19:11:28 · 114 阅读 · 0 评论 -
读者让我总结一波 redis 面试题,现在肝出来了!
Redis 持久化机制Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。实现:单独创建fork()一个子进程,将当前父进程的数据库数据复制到子进程的内存中,然后由子进程写入到临时文件中,持久化的过程结束了,再用这个临时文件替换上次的快照文件,然后子进程退出,内存释放。RDB是Redis默认的持久化方式。按照一定的时间周期策略把内存的数据以快照的形式保存到硬盘的二进制文件。即Snap原创 2020-11-25 19:45:38 · 112 阅读 · 0 评论 -
让面试官心服口服:Thread.sleep、synchronized、LockSupport.park的线程阻塞有何区别?
前言在日常编码的过程中,我们经常会使用Thread.sleep、LockSupport.park()主动阻塞线程,或者使用synchronized和Object.wait来阻塞线程保证并发安全。此时我们会发现,对于Thread.sleep和Object.wait方法是会抛出InterruptedException,而LockSupport.park()和synchronized则不会。而当我们调用Thread.interrupt方法时,除了synchronized,其他线程阻塞的方式都会被唤醒。于是本文原创 2020-11-24 20:37:26 · 506 阅读 · 0 评论 -
面试问烂了的Java线程池执行流程,具体的执行细节你还会吗?
对于Java中的线程池,面试问的最多的就是线程池中各个参数的含义,又或者是线程池执行的流程,彷佛这已成为了固定的模式与套路。但是假如我是面试官,现在我想问一些更细致的问题,你还能答得上来吗?比如:线程池是如何实现线程复用的?如果一个线程执行任务的时候抛出异常,那么这个任务是否会被丢弃?当前线程池中有十个线程,其中一个线程正在执行任务,那么剩下的九个线程正在处于一种什么状态呢?相信如果没有看过线程池的相关源码实现,这些问题是很难回答得完美的。同时这些问题往深了问还会引出Java中阻塞队列以及AQS原创 2020-11-24 15:49:10 · 527 阅读 · 0 评论 -
为什么 Java 中“1000==1000”为false,而”100==100“为true?
如果你运行下面的代码:Integer a = 1000, b = 1000;System.out.println(a == b);//1Integer c = 100, d = 100;System.out.println(c == d);//2你会得到falsetrue基本知识:我们知道,如果两个引用指向同一个对象,用== 表示它们是相等的。如果两个引用指向不同的对象,用==表示它们是不相等的,即使它们的内容相同。因此,后面一条语句也应该是false 。这就是它有趣的地方了。如果原创 2020-11-23 20:52:12 · 105 阅读 · 0 评论 -
Spring@Autowired注解自动注入流程是怎么样?
面试中碰到面试官问:”Spring 注解是如果工作的?“,当前我一惊,完了这不触及到我的知识误区了吗?,还好我机智,灵机一动回了句:Spring 注解的工作流程倒还没有看到,但是我知道@Autowired注解的工作流程,后面不用说了一顿巴拉,面试官都连连点头。面试中要活用转移话题,要避免回答 ”不知道“,要引导面试官掉入你擅长的技术,然后才有机会教他作人。@Autowired 相关的类@Autowired 注解的主要功能就是完成自动注入,使用也非常简单(Spring都安排好了),但是要想知道 @Aut原创 2020-11-23 14:24:50 · 1223 阅读 · 1 评论 -
百度面试官:给我说是CDN加速的原理?
一、什么是 CDNCDN 的全称是(Content Delivery Network),即内容分发网络。其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用户的网络”边缘“的节点,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因,提高用户访问网站的响应速度。简单的说,CDN 的工作原理就是将您源站的资源缓存到位于全球各地的 CDN 节点上,用户请求资源时,就近返回节点上缓存的资源,而不原创 2020-11-22 19:09:50 · 664 阅读 · 0 评论 -
18 张图弄懂面试官必问的一致性哈希
1. 满眼都是自己二十年前的样子,让我们从哈希开始在 N 年前,互联网的分布式架构方兴未艾。大刘所在的公司由于业务需要,引入了一套由 IBM 团队设计的业务架构。这套架构采用了分布式的思想,通过 RabbitMQ 的消息中间件来通信。这套架构,在当时的年代里,算是思想超前,技术少见的黑科技架构了。但是,由于当年分布式技术落地并不广泛,有很多尚不成熟的地方。所以,这套架构在经年日久的使用中,一些问题逐渐突出。其中,最典型的问题有两个:RabbitMQ 是个单点,它一坏掉,整个系统就会全部瘫痪。收原创 2020-11-22 14:57:00 · 144 阅读 · 0 评论 -
面试官:Redis 主从复制时网络开小差了怎么整?
什么是事务事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。事务的 ACID事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特原创 2020-11-20 21:31:31 · 128 阅读 · 0 评论 -
Redis:我这21个灵魂拷问你拿什么挡?
1.什么是redis?Redis 是一个基于内存的高性能key-value数据库。2.Reids的特点Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限原创 2020-11-20 13:40:10 · 91 阅读 · 0 评论 -
Java并发编程:从源码分析几道必问线程池的面试题?
一般一个线程执行完任务之后就结束了,Thread.start()只能调用一次,一旦这个调用结束,则该线程就到了stop状态,不能再次调用start。如果你对一个已经启动的线程对象再调用一次start方法的话,会产生:IllegalThreadStateException异常,但是Thread的run方法是可以重复调用的。所以这里也会有一个面试经常问到的问题:「Thread类中run()和start()方法的有什么区别?」下面我们就从jdk的源码来一起看看如何实现线程复用的:线程池执行任务的ThreadPo原创 2020-11-19 19:16:45 · 94 阅读 · 0 评论 -
前后端分离三连问:为何分离?如何分离?分离后的接口规范?
1. 前言随着互联网的高速发展,前端页面的展示、交互体验越来越灵活、炫丽,响应体验也要求越来越高,后端服务的高并发、高可用、高性能、高扩展等特性的要求也愈加苛刻,从而导致前后端研发各自专注于自己擅长的领域深耕细作。然而带来的另一个问题:前后端的对接界面双方却关注甚少,没有任何接口约定规范情况下各自撸起袖子就是干,导致我们在产品项目开发过程中,前后端的接口联调对接工作量占比在30%-50%左右,甚至会更高。往往前后端接口联调对接及系统间的联调对接都是整个产品项目研发的软肋。本文的主要初衷就是规范约定先行原创 2020-11-18 21:13:22 · 245 阅读 · 0 评论 -
烂大街的Spring循环依赖该如何回答?
什么是循环依赖?从字面上来理解就是A依赖B的同时B也依赖了A,就像上面这样,或者C依赖与自己本身。体现到代码层次就是这个样子@Componentpublic class A { // A中注入了B @Autowired private B b;}---@Componentpublic class A { // A中注入了B @Autowired private B b;}---// 自己依赖自己@Componentpublic class C { // C中注入了C原创 2020-11-18 15:09:06 · 185 阅读 · 0 评论 -
阿里一道面试题把90%的程序员拦在了门外
1. CASCAS 全称: CompareAndSwap ,故名思意:比较并交换。他的主要思想就是: 我需要对一个值进行修改,我不会直接修改,而是将当前我认为的值和要修改的值传入,如果此时内存中的确为我认为的值,那么就进行修改,否则修改失败。 他的思想是一种乐观锁的思想。一张图解释他的工作流程:知道了它的工作原理,我们来听一个场景:现在有一个 int 类型的数字它等于1,存在三个线程需要对其进行自增操作。一般来说,我们认为的操作步骤是这样:线程从主内存中读取这个变量,到自己的工作空间中,然后执行变原创 2020-11-17 21:18:57 · 128 阅读 · 0 评论 -
面试官:连哈希扣的都不懂还来面试
前言相信你面试的时候,肯定被问过 hashCode 和 equals 相关的问题 。如:hashCode 是什么?它是怎么得来的?有什么用?经典题,equals 和 == 有什么区别?为什么要重写 equals 和 hashCode ?重写了 equals ,就必须要重写 hashCode 吗?为什么?hashCode 相等时,equals 一定相等吗?反过来呢?好的,上面就是灵魂拷问环节。其实,这些问题仔细想一下也不难,主要是平时我们很少去思考它。正文下面就按照上边的问题顺序,一个一原创 2020-11-14 19:02:47 · 134 阅读 · 0 评论 -
面试官:说一下缓存穿透、缓存击穿、缓存雪崩
前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方案有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一原创 2020-11-14 14:47:20 · 94 阅读 · 0 评论 -
10道棘手的Java面试题,看看你能答对几个?
Q1:下面Java代码的输出是什么?public class Test { public static void main(String[] args) { method(null); } public static void method(Object o) { System.out.println("Object method"); } public static void method(String s) { System.out.print原创 2020-11-13 19:49:25 · 75 阅读 · 0 评论 -
Nginx面试中最常见的18道题 抱佛脚必备
Nginx的并发能力在同类型网页服务器中的表现,相对而言是比较好的,因此受到了很多企业的青睐,我国使用Nginx网站的知名用户包括腾讯、淘宝、百度、京东、新浪、网易等等。Nginx是网页服务器运维人员必备技能之一,下面为大家整理了一些比较常见的Nginx相关面试题,仅供参考:1、请解释一下什么是Nginx?Nginx是一个web服务器和反向代理服务器,用于HTTP、HTTPS、SMTP、POP3和IMAP协议。2、请列举Nginx的一些特性。Nginx服务器的特性包括:反向代理/L7负载均衡器嵌原创 2020-11-13 14:19:00 · 143 阅读 · 0 评论 -
面试官问我redis数据类型,我回答了8种
redis 的对象类型与编码类型redis 的对象类型,就是面试中常考的 redis 数据类型有哪些 这个问题所问的准确说法,这个对于我们这些只会面试不会开发的程序员来说,简直再熟悉不过啦,就是字符串、哈希、列表、集合、有序集合,这个在 redis 源码中能找到准确的定义:redis.c/* Object types */#define REDIS_STRING 0#define REDIS_LIST 1#define REDIS_SET 2#define REDIS_ZSET 3#defi原创 2020-11-12 17:19:20 · 219 阅读 · 0 评论 -
收藏,吊打面试官的kafka知识!
1 什么是kafkaKafka是分布式发布-订阅消息系统,它最初是由LinkedIn公司开发的,之后成为Apache项目的一部分,Kafka是一个分布式,可划分的,冗余备份的持久性的日志服务,它主要用于处理流式数据。2 为什么要使用 kafka,为什么要使用消息队列缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。解耦和扩展性:项目开始的时候,并不能确定具原创 2020-11-11 19:13:30 · 554 阅读 · 0 评论 -
浅谈面试中遇到的JVM与性能优化问题
面试中遇到面试官问的最多的便是JVM与性能调优,小编便肝了一个星期为大家整理了这方面的重要知识点,掌握这些知识点,小编就不信你还征服不了面试官。话不多说,我们直接进入主题。关于JVM与性能调优的内容主要包括:JVM 内存区域划分JVM 执行子系统垃圾回收器和内存分配策略编写高效优雅 Java 程序性能优化JVM 内存区域划分程序计数器(线程私有)Java 栈(线程私有)本地方法栈(线程私有)堆(线程共享)方法区(线程共享)直接内存(线程共享)JVM 执行子系统Cla原创 2020-11-10 21:15:24 · 217 阅读 · 1 评论 -
面试:如何决定使用 HashMap 还是 TreeMap?
问:如何决定使用 HashMap 还是 TreeMap?介绍TreeMap<K,V>的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现是基于红黑树结构。适用于按自然顺序或自定义顺序遍历键(key)。HashMap<K,V>的Key值实现散列hashCode(),分布是散列的、均匀的,不支持排序;数据结构主要是桶(数组),链表或红黑树。适用于在Map中插入、删除和定位元素。结论如果你需要原创 2020-11-10 14:00:32 · 51 阅读 · 0 评论 -
面试中又被问到Redis如何实现抢购,赶快代码实现一波吧!
面试常常遇到写一个抢购实例,或者讲讲抢购实现想法,然后总是讲不明白,因为目前工作没做抢购这一块儿。但是这个想法今天终于搞明白了,其中也参照了一些大佬的做法。这篇文章直接使用redis,其中注释也写的挺明白的,直接上代码:junit测试类:Log log = LogFactory.getLog(getClass()); @Autowired private RedisTemplate<String, Object> redisTemplate; @Tes原创 2020-11-09 14:07:08 · 127 阅读 · 0 评论 -
看完这篇 final、finally 和 finalize 和面试官扯皮就没问题了
final 是 Java 中的关键字,它也是 Java 中很重要的一个关键字,final 修饰的类、方法、变量有不同的含义;finally 也是一个关键字,不过我们可以使用 finally 和其他关键字结合做一些组合操作;finalize 是一个不让人待见的方法,它是对象祖宗 Object 中的一个方法,finalize 机制现在已经不推荐使用了。本篇文章,cxuan 就带你从这三个关键字入手,带你从用法、应用、原理的角度带你深入浅出理解这三个关键字。final、finally 和 finalize我.原创 2020-11-08 20:47:26 · 141 阅读 · 0 评论 -
当面试官看完我手写的单例时,直接惊呆了!
DCL 单例模式DCL 就是 Double Check Lock 的缩写,即双重检查的同步锁。代码如下,public class Singleton { //注意,此变量需要用volatile修饰以防止指令重排序 private static volatile Singleton singleton = null; private Singleton(){ } public static Singleton getInstance(){ /原创 2020-11-06 19:50:58 · 85 阅读 · 0 评论 -
吃透这份Java面经,成功从外包进入一线大厂
前言长时间呆在外包每天虽然在忙碌,但是技术一点进步也没有。想要跳槽大厂,自己技术又够不上大厂的边,小编找了一些面试过京东,美团等一线大厂的朋友,整理出了这份面经。虽然说是面经手册,但是里面的涵盖的知识点还是很全面、很细的,一共分了一下十几个大部分:mybatis、zookeeper、duboo、Elasticsearch、Memcached、Redis、MySQL、Java 并发编程、Java 面试题、Spring 面试题、微服务、Linux、Spring Boot、Spring Cloud、Rabbi原创 2020-11-06 16:36:04 · 878 阅读 · 0 评论 -
面试官就是这么欺负人:new Object()到底占用几个字节?
前言我们来分析一下堆内布局以及Java对象在内存中的布局吧。对象的指向先来看一段代码:package com.zwx.jvm;public class HeapMemory { private Object obj1 = new Object(); public static void main(String[] args) { Object obj2 = new Object(); }}上面的代码中,obj1 和obj2在内存中有什么区别?我们原创 2020-11-05 16:46:25 · 51 阅读 · 0 评论 -
面试总是过不了,看完蚂蚁金服6面,顺利征服面试官
前段时间有粉丝来信,说他面试上了蚂蚁金服,这感情好啊,蚂蚁都准备上市了,这不距离财富自由不远了吗?今天小编就来分享一下这位粉丝的面试经历,希望小编的分享能对你有所帮助。面试前蚂蚁的面试挺独特,每轮面试都没有 HR 约时间,一般是晚上 8 点左右面试官来一个电话,问是否能面试,能的话开始面,不能就约一个其它时间。全程 6 面,前五面技术面,电话面试,最后一面是 HR 面,现场面。一面介绍一下自己问项目经历, 聊”数据同步”接着聊上了 K8S 的项目有没有什么钻研得比较深得技术?kubern原创 2020-11-05 14:21:03 · 370 阅读 · 0 评论 -
面试官扎心一问:知道 CopyOnWriteArrayList 吗?
写入时复制(CopyOnWrite)思想写入时复制(CopyOnWrite,简称COW)思想是计算机程序设计领域中的一种优化策略。其核心思想是,如果有多个调用者(Callers)同时要求相同的资源(如内存或者是磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者视图修改资源内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。这过程对其他的调用者都是透明的(transparently)。此做法主要的优点是如果调用者没有原创 2020-11-04 19:20:14 · 105 阅读 · 0 评论 -
【面经分享】两年经验拿到PingCAP Offer
准备过程我自己是本科毕业后在老东家干了两年多,老东家算是一家”小公司”(毕竟这年头没有 BAT 或 TMD 的 title 都不好意思报出身),毕业这两年多我也没有在大厂待过,因此找坑的时候是非常非常虚的。迫于心慌,我好好思考了一阵来给自己打气,当时真正找坑和准备面试的过程大概分为这几个阶段:反思:自己是不是真的要离职,假如不离职,在老东家接下来应该做什么才能继续提升?定位:我在硬性技能(编码、架构)上的长处在哪?我在软技能(沟通,团队)上的长处在哪?这步顺带写了简历寻找平台:哪些平台能同时满足:原创 2020-11-04 16:11:34 · 2029 阅读 · 1 评论 -
大厂高频面试题:秒杀场景设计
秒杀这个话题到现在来说已经是一个老生常谈的话题了,不过因为又临近一年一度的双11,而且发现前段时间无论是阿里还是腾讯一些大厂其实还是在频繁的问到这个场景题,所以还是准备拿出来说说。秒杀从规模上来说可以分为大秒和小秒。大秒指的是比如双11这种特定的节日,商品规模超大、价格超低、流量超大的这种类型活动,小秒一般指的是商家自己配置的一些时段类型的活动,由商家自己指定时间上架。从形式来说还可以分为单时段秒杀和多时段秒杀。但是在这个场景里,我们一般就是指的单时段大型秒杀。秒杀设计要面对的压力和难度有几点:怎么原创 2020-11-04 14:30:13 · 345 阅读 · 1 评论 -
面试时说Redis是单线程的,被喷惨了!
Redis是单线程的,这话搁以前,是横着走的,谁都知道的真理。现在不一样,Redis 变了。再说这句话,多少得有质疑的语气来跟你辩驳一番。意志不坚定的,可能就缴械投降,顺着别人走了。到底是什么样的,各位看官请往下看:思维导图 -Reactor模式反应器模式,你可能不太认识,如果看过上篇文章的话应该会有点印象。涉及到 Redis 线程它是一个绕不过去的话题。1、传统阻塞IO模型在讲反应器模式前,这里有必要提一下传统阻塞IO模型的处理方式。在传统阻塞IO模型中,由一个独立的 Acceptor原创 2020-10-31 19:39:10 · 531 阅读 · 0 评论 -
面试官灵魂一问: MySQL 的 delete、truncate、drop 有什么区别?
上周同事小姐姐问我:“哈哥你看,我发现MySQL有bug,我下午为了清理磁盘,明明删除了100万条MySQL数据,磁盘不仅没有变小,反而更满了呢??”那你是怎么删除的?“delete from table 呀”“怪不得,其实要删除MySQL数据是有好几种方式的,有些场景下是不应该用DELETE的,比如你这种情况。好了,让我来给你讲一下吧。”MySQL删除数据的方式都有哪些?咱们常用的三种删除方式:通过 delete、truncate、drop 关键字进行删除;这三种都可以用来删除数据,但场景不.原创 2020-10-30 17:07:44 · 108 阅读 · 0 评论 -
面试官:面对千万级、亿级流量怎么处理?
这是一道很常见的面试题,但是大多数人并不知道怎么回答,这种问题其实可以有很多形式的提问方式,你一定见过而且感觉无从下手:面对业务急剧增长你怎么处理?业务量增长10倍、100倍怎么处理?你们系统怎么支撑高并发的?怎么设计一个高并发系统?高并发系统都有什么特点?… …诸如此类,问法很多,但是面试这种类型的问题,看着很难无处下手,但是我们可以有一个常规的思路去回答,就是围绕支撑高并发的业务场景怎么设计系统才合理?如果你能想到这一点,那接下来我们就可以围绕硬件和软件层面怎么支撑高并发这个话题去阐述了。原创 2020-10-30 13:58:07 · 78 阅读 · 0 评论 -
从源码的角度,来阐述#{name}和${name}的区别?面试官直呼“好”
1. #{name}和${name}的区别。#{name}:表示这是一个参数(ParameterMapping)占位符,值来自于运行时传递给sql的参数,也就是XXXMapper.xml里的parameterType。其值通过PreparedStatement的setObject()等方法赋值。动态sql中的标签绑定的值,也是使用#{name}来使用的。#{name}用在sql文本中。name:表示这是一个属性配置占位符,值来自于属性配置文件,比如jdbc.properties,其值通过类似repl原创 2020-10-29 13:51:45 · 1094 阅读 · 0 评论 -
不是吧?面试被问了几百遍的JVM,你还搞不清楚?
说说JVM的内存布局?Java虚拟机主要包含几个区域:堆:堆Java虚拟机中最大的一块内存,是线程共享的内存区域,基本上所有的对象实例数组都是在堆上分配空间。堆区细分为Yound区年轻代和Old区老年代,其中年轻代又分为Eden、S0、S1 3个部分,他们默认的比例是8:1:1的大小。栈:栈是线程私有的内存区域,每个方法执行的时候都会在栈创建一个栈帧,方法的调用过程就对应着栈的入栈和出栈的过程。每个栈帧的结构又包含局部变量表、操作数栈、动态连接、方法返回地址。局部变量表用于存储方法参数和局部变原创 2020-10-26 21:29:29 · 50 阅读 · 0 评论