前言 时至今日,Spring 在 Java 生态系统与就业市场上,面试出镜率之高,投产规模之广,无出其右.随着技术的发展,Spring 从往日的 IoC 框架,已发展成 Cloud Native 基础设施,衍生出大量 Spring 技术栈,如大家熟知的 Spring Boot.Spring Cloud 和 Spring Security 等. 毋庸置疑,Spring 早已成为 Java 后端开发事实上的行业标准,无数的公司选择 Spring 作为基础的开发框架,大部分Java 后端程序员在日常工…
前言 如果面试官问的是,为什么Mysql中Innodb的索引结构采取B+树?这个问题时,给自己留一条后路,不要把B树喷的一文不值.因为网上有些答案是说,B树不适合做文件存储系统的索引结构.如果按照那种答法,自己就给自己挖了一个坑,很难收场.因此,就有了这篇文章的诞生~ 正文 这里的Mysql指的是Innodb的存储引擎下的索引结构,其他存储引擎我们暂时不讨论. B树和B+树 开头,我们先回忆一下,B树和B+树的结构以及特点,如下所示:B树 注意一下B树的两个明显特点 树内的每个节点都存储数据 叶…
面试官:我看你简历上写了MySQL,对MySQL InnoDB引擎的索引了解吗? 候选者:嗯啊,使用索引可以加快查询速度,其实上就是将无序的数据变成有序(有序就能加快检索速度) 候选者:在InnoDB引擎中,索引的底层数据结构是B+树 面试官:那为什么不使用红黑树或者B树呢? 候选者:MySQL的数据是存储在硬盘的,在查询时一般是不能「一次性」把全部数据加载到内存中 候选者:红黑树是「二叉查找树」的变种,一个Node节点只能存储一个Key和一个Value 候选者:B和B+树跟红黑树不一样,它们算…
数据库基础知识 1.为什么要使用数据库 (1)数据保存在内存 优点: 存取速度快 缺点: 数据不能永久保存 (2)数据保存在文件 优点: 数据永久保存 缺点: 1)速度比内存操作慢,频繁的IO操作. 2)查询数据不方便 (3)数据保存在数据库 1)数据永久保存 2)使用SQL语句,查询方便效率高. 3)管理数据方便 2.什么是SQL? 结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言. 作用:用于存取数据.查询.更新和管理关系数据库系统. 3.…
InnoDB的一棵B+树可以存放多少行数据? 答案:约2千万 为什么是这么多? 因为这是可以算出来的,要搞清楚这个问题,先从InnoDB索引数据结构.数据组织方式说起. 计算机在存储数据的时候,有最小存储单元,这就好比现金的流通最小单位是一毛. 在计算机中,磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)的最小单元是块,一个块的大小是4k,而对于InnoDB存储引擎也有自己的最小储存单元,页(Page),一个页的大小是16K. 下面几张图可以理解最小存储…
引言 2020阿里巴巴专家组出题,等你来答: 题目:如何判断两个链表是否相交 出题人:阿里巴巴新零售技术质量部 参考答案: $O(n^2)$: 两层遍历,总能发现是否相交 $O(n)$: 一层遍历,遍历完两个链表,如果两个链表的最后一个结点指针相同,则相交,否则不相交 题目:一颗现代处理器,每秒大概可以执行多少条简单的MOV指令,有哪些主要的影响因素? 出题人:阿里巴巴出题专家:子团/创新产品虚拟化&稳定性资深技术专家 参考答案: 及格: 每执行一条mov指令需要消耗1个时钟周期,所以每秒执行的…
我分享文章的时候,有个读者回复说他去年就关注了我的微信公众号,打算看完我的所有文章,然后去面试,结果我后来很长时间不更新了...所以为了弥补一直等我的娃儿们,给大家的金三银四准备了100道花时间准备的高频Java面试题,大家不要太感动,记得点赞评论就行. 这次只放出九十道,剩下10道准备找认识的几位面试官去要,希望不会被拒绝. 这些题我认为认真思考还是很有价值的,答案整理中,全部整理好,我会做出PDF,整理好后大家公众号后台回复"Java面试题"领取. 90道高频面试题 自我介绍一下…
面试官:要不你来讲讲你们对MySQL是怎么调优的? 候选者:哇,这命题很大阿...我认为,对于开发者而言,对MySQL的调优重点一般是在「开发规范」.「数据库索引」又或者说解决线上慢查询上. 候选者:而对于MySQL内部的参数调优,由专业的DBA来搞. 面试官:扯了这么多,你就是想表达你不会MySQL参数调优,对吧 候选者:草,被发现了. 面试官:那你来聊聊你们平时开发的规范和索引这块,平时是怎么样的吧. 候选者:嗯,首先,我们在生产环境下,创建数据库表,都是在工单系统下完成的(那就自然需要DB…
这是最新的大厂面试系列,还原真实场景,提炼出知识点分享给大家. 点赞再看,养成习惯~ 微信搜索[武哥聊编程],关注这个 Java 菜鸟. 昨天有个小伙伴去阿里面试实习生岗位,面试官问他了一个老生常谈的问题:你说一说 Java 创建线程都有哪些方式? 这哥们心中窃喜,这个老生常谈的问题早已背的滚瓜烂熟,于是很流利的说了出来. Java 创建线程有两种方式: 继承Thread类,并重写run()方法 实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread…
最近,小黑哥的一个朋友出去面试,回来跟小黑哥抱怨,面试官不按套路出牌,直接打乱了他的节奏. 事情是这样的,前面面试问了几个 Java 的相关问题,我朋友回答还不错,接下来面试官就问了一句:看来 Java 基础还不错,Java HashMap 你熟悉吧? 我朋友回答.工作经常用,有看过源码. 我朋友本来想着,你随便来吧,这个问题之前已经准备好了,随便问吧. 谁知道,面试官下面一句: 那好的,我们来聊聊 Redis 字典吧. 直接将他整蒙逼. 小黑哥的朋友由于没怎么研究过 Redis 字典,所以这题…