
面试 [279]
【面试题36】盘点那些必问的数据结构算法题之二叉树基础
0 概述 在说二叉树前,先来看看什么是树。树中基本单位是结点,结点之间的链接,称为分支。一棵树最上面的结点称之为根节点,而下面的结点为子结点。一个结点可以有0个或多个子结点,没有子结点的结点我们称之为叶结点。 二叉树是指子结点数目不超过2个的树,它是一种很经典的数据结构。而二叉搜索树(BST)是有序
【面试题35】盘点那些必问的数据结构算法题之二叉堆
0 概述 本文要描述的堆是二叉堆。二叉堆是一种数组对象,可以被视为一棵完全二叉树,树中每个结点和数组中存放该结点值的那个元素对应。树的每一层都是填满的,最后一层除外。二叉堆可以用于实现堆排序,优先级队列等。本文代码地址在 这里。 https://github.com/shishujuan/dsalg
【面试题34】盘点那些必问的数据结构算法题之链表
0 概述 链表作为一种基础的数据结构,在很多地方会用到。如在Linux内核代码,redis源码,python源码中都有使用。除了单向链表,还有双向链表,本文主要关注单向链表(含部分循环链表题目,会在题目中注明,其他情况都是讨论简单的单向链表)。双向链表在redis中有很好的实现,也在我的仓库中拷贝了
【面试题33】说一下线程池内部工作原理
随着cpu核数越来越多,不可避免的利用多线程技术以充分利用其计算能力。所以,多线程技术是服务端开发人员必须掌握的技术。 线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以就引入了线程池技术,避免频繁的线程创建和销毁。 在Java中有一个Executors工具类,可以为我们创建一个线程池,其本
【面试题32】Mybatis面试18问,你想知道的都在这里了!
1、#{}和${}的区别是什么? 答:${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc.Driver。 #{}是sql的参数占位符,Mybatis会将sql中的#{}替换为?号,在sq
【面试题31】一份tcp、http面试指南,常考点都给你了
TCP 要说http就绕不开tcp,TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。但是,http是基于tcp协议的。 TCP/IP 协议分层模型 物理层将二进制的0和1和电压高低,光的闪灭和电波的强弱信号进行转换 链路层代表驱动 网络层 使用 IP 协议,IP 协
【面试题30】请你详细说说类加载流程,类加载机制及自定义类加载器
一、引言 当程序使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、链接、初始化三个步骤对该类进行类加载。 二、类的加载、链接、初始化 1、加载 类加载指的是将类的class文件读入内存,并为之创建一个java.lang.Class对象。类的加载过程是由类加载器来完成,类加载器由JVM提供
【面试题29】说说 如何停止一个正在运行的线程?
停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要用它。虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且是已被废弃的方法。 在java中有以下3种方法可以终止正在运行的线程: 使用退出标志,使线
【面试题28】谈谈你对Java线程之间通信方式的理解
多线程和并发,在平时开发中有些小伙伴用的不多,但是有些工作经验的面试中还是容易被问到的,故在之后几期先整理一些常见的多线程面试题供参考。 通信方式 ①同步 ②while轮询的方式
【面试题27】谈谈为什么要拆分数据库?有哪些方法?
1. 为什么要拆分数据库? 单体项目在构建之初,数据库的负载和数据量都不大,所以不需要对数据库做拆分,小型财务系统、文书系统、ERP系统、OA系统,用一个MySQL数据库实例基本就够用了。 就像《淘宝技术这十年》里面说到的,电商业务的数据量增长飞快,所以最开始的PHP+MySQL的架构已经不能满足实
【面试题26】分别谈谈联合索引生效和失效的条件
这道题考查索引生效条件、失效条件。像这类问题才其实很有意义,建议各位以后面试其他伙伴的时候,多侧重这类问题的提问,比考察一般概念性的问题好多了。 能大概考察应聘者对写的程序是有注重做优化,提高代码质量和程序性能呢 还是只简单的CV了事。 联合索引失效的条件 联合索引又叫复合索引。两个或更多个列上的索
【面试题24】了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?应对措施是什么
面试题 了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透? 面试官心理分析 其实这是问到缓存必问的,因为缓存雪崩和穿透,是缓存最大的两个问题,要么不出现,一旦出现就是致命性的问题,所以面试官一定会问你。 面试题剖析 缓存雪
【面试题23】说一下HashMap的实现原理
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。 本文会对java集合框架中的对应实现HashMap的实现原理进
【面试题22】一份tcp、http面试指南,常考点都给你了
TCP 要说http就绕不开tcp,TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。但是,http是基于tcp协议的。 TCP/IP 协议分层模型 物理层将二进制的0和1和电压高低,光的闪灭和电波的强弱信号进行转换 链路层代表驱动 网络层 使用 IP 协议,IP 协
【面试题25】你知道Redis的字符串是怎么实现的吗?
之前本人在找工作面试时在Redis相关问题上可栽了跟头。在面试前按常规套路准备了一下,比如 Redis 的常用5种数据结构,Redis持久化策略,Redis实现分布式锁,简单发布订阅等等都准备了,当时不知天高地厚以为十拿九稳了,可是万万没想到我终究还是在Redis的被问的第一个问题上翻船了~~ 面试
【面试题21】ZooKeeper面试那些事儿
1.ZooKeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 客户端的读请
【面试题20】Dubbo面试八连问,这些你都能答上来吗?
Dubbo是什么? Dubbo能做什么? Dubbo内置了哪几种服务容器? Dubbo 核心的配置有哪些? Dubbo有哪几种集群容错方案,默认是哪种? Dubbo有哪几种负载均衡策略,默认是哪种? Dubbo默认使用的是什么通信框架,还有别的选择吗? 你觉得用Dubbo好还是SpringCloud
【面试题19】如何判断一个对象是否存活?(或者GC对象的判定方法)?
判断对象是否存活的算法包括: 引用计数算法 可达性分析算法 问题的回答就是通过引用计数算法或者可达性分析算法去判断一个对象是否存活,下面开始具体描述这两种算法。 引用计数算法(Reference Counting) 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器加1;**当引用失效时,计