【imooc-面试系列-18】教程文章相关的互联网学习教程文章

MySQL面试系列:索引数据结构为什么不用B树、二叉树、哈希表?(四)【代码】【图】

前言 面试官:MySQL索引的存储结构是什么? 面试者:是B+树。 面试官:为什么不是B树、二叉树、哈希表? 面试者:%……&(&……(懵逼中) 面试官:MySQL有哪几种索引? 面试者:主键索引、唯一索引、联合索引、普通索引。 面试官:什么是聚簇索引、非聚簇索引、覆盖索引、索引下推、最左原则? 面试者:%……&(&……(懵逼中) 接下来我们就通过了解B+树去全面解决这几个问题。 一、B+树的数据结构 树的概念我的就赘述了,其他文...

面试系列之——数据库知识(2)【图】

MySQL数据库在5.0版本后开始支持存储过程,那么什么是存储过程呢?怎么创建、查看和删除存储过程呢?存储过程有什么优点?这些是本章节要探讨的问题: 什么是存储过程: 简单的说存储过程是为了完成某个数据库中的特定功能而编写的语句集,该语句集包括SQL语句(对数据的增删改查)、条件语句和循环语句等。 创建存储过程: 存储过程的创建非常简单,其创建结构为: CREATE PROCEDURE proc_name ([proc_parameter[,...]]) [chara...

面试系列12 redis和memcached有什么区别

(1)redis和memcached有啥区别 这个事儿吧,你可以比较出N多个区别来,但是我还是采取redis作者给出的几个比较吧 1)Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果需要缓存能够支持更复杂...

面试系列13 redis都有哪些数据类型

(1)string 这是最基本的类型了,没啥可说的,就是普通的set和get,做简单的kv缓存 (2)hash 这个是类似map的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存在redis里,然后每次读写缓存的时候,可以就操作hash里的某个字段。 key=150 value={ “id”: 150, “name”: “zhangsan”, “age”: 20 } hash类的数据结构,主要是用来存放一些对象,把一些简单的...

面试系列-Jvm看这篇就够了【图】

一:JVM基础知识1)Java 是如何实现跨平台的?注意:跨平台的是 Java 程序,而不是 JVM。JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 JVM答:我们编写的 Java 源码,编译后会生成一种 .class 文件,称为字节码文件。Java 虚拟机(JVM)就是负责将字节码文件翻译成特定平台下的机器码然后运行,也就是说,只要在不同平台上安装对应的 JVM,就可以运行字节码文件,运行我们编写的 Java 程序...

面试系列-线程池详解【代码】【图】

构造一个线程池为什么需要几个参数?如果避免线程池出现OOM?Runnable和Callable的区别是什么?本文将对这些问题一一解答,同时还将给出使用线程池的常见场景和代码片段。基础知识Executors创建线程池Java中创建线程池很简单,只需要调用Executors中相应的便捷方法即可,比如Executors.newFixedThreadPool(int nThreads),但是便捷不仅隐藏了复杂性,也为我们埋下了潜在的隐患(OOM,线程耗尽)。Executors创建线程池便捷方法列表:...

面试系列-HashMap和Hashtable的区别【代码】

线程安全两者最主要的区别在于Hashtable是线程安全,而HashMap则非线程安全。Hashtable的实现方法里面都添加了synchronized关键字来确保线程同步,因此相对而言HashMap性能会高一些,我们平时使用时若无特殊需求建议使用HashMap,在多线程环境下若使用HashMap需要使用Collections.synchronizedMap()方法来获取一个线程安全的集合(Collections.synchronizedMap()实现原理是Collections定义了一个SynchronizedMap的内部类,这个类实...

面试系列-String,StringBuffer,StringBuilder三者区别【代码】

String,StringBuffer以及StringBuilder三者的区别主要是在两个方面,即运行速度和线程安全这两方面。运行速度从快到慢顺序:StringBuilder > StringBuffer > StringString最慢的原因; String为字符串常量,而StringBuffer和StringBuilder均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。例:11 String str="abc"; 2 System.out.println(str); 3 str=str+"de"; 4 System.out.p...

面试系列-高并发之synchronized【代码】

概要本章,会对synchronized关键字进行介绍。涉及到的内容包括:1. synchronized原理2. synchronized基本规则3. synchronized方法 和 synchronized代码块4. 实例锁 和 全局锁synchronized原理在java中,每一个对象有且仅有一个同步锁。这也意味着,同步锁是依赖于对象而存在。当我们调用某对象的synchronized方法时,就获取了该对象的同步锁。例如,synchronized(obj)就获取了“obj这个对象”的同步锁。不同线程对同步锁的访问是互...

面试系列-volatile关键字详解【代码】【图】

volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volatile关键字的场景。内存模型程序在执行过程中,每条指令都是通过CPU来执行的,存在数据的读取和写入。程序运行过程中的临时数据存放在主内存(物理内存)中,cpu执行...

面试系列-4 hash应用场景分析实践【代码】【图】

英国弗兰明曾说过一句话:“不要等待运气降临,应该去努力掌握知识。” 1 前言 大家好,我是阿沐!你的收获便是我的喜欢,你的点赞便是对我的认可。 作为一年开发经验的毕业生,在上一个章节跟面试官聊了聊redis的基础数据结构列表类型,我们凭借日常知识积累跟面试官展开了相爱相杀场景以及面试期间内心的活动状况。通过结合项目在实际场景中的运用案例和知识点的细节,稳稳的对答如流。 那么这一章节面试官会考验我们对redis的ha...

面试系列08

文章目录 说一下Java对象的创建过程简单聊聊 JVM 内存分配与回收说一下堆内存中对象的分配的基本策略如何判断对象是否死亡如何判断一个常量是废弃常量如何判断一个类是无用的类说一下Java对象的创建过程 Java对象的创建过程一共分为五个步骤: 1、当创建一个对象的时候,JVM 会去常量池中找该类的符号引用,并且检查该类还有没有被 JVM 加载过,如果没有,则进行类的加载过程。 2、在类加载检查通过之后,JVM 开始在 Java 堆中为对...

imooc-面试系列-18【图】

18-1 章节介绍 18-2 何为变量提升?18-3手写深度比较 isEqual 18-4 题目讲解-3:你是否真的会用数组 map 18-5 题目讲解-4:再学闭包 18-6 面试讲解-5:回顾 DOM 操作和优化 18-7 面试讲解-6:jsonp 本质是 ajax 吗 18-8 面试讲解-7:是否用过 Object.create() 18-9 面试讲解-8:常见的正则表达式 18-10 面试讲解-9:如何获取最大值18-11 面试讲解-10:解析 url 参数18-12 面试讲解-11:数组去重有几种方式? 18-13 面试讲解-12:是...