前言
面试大概九十分钟,问的东西很全面,需要做充足准备,就是除了概念以外问的有点懵逼了(呜呜呜~)。回来之后把这些题目做了一个分类并整理出答案(强迫症的我~狂补知识~)分为 Java+数据库+Linux+缓存+算法+网络等六类,接下来分享一下我的这次美团一面面经++一些我的学习笔记。注意:篇幅有限,大部分整理的 Java+数据库+Linux+缓存+算法网络等六类面试答案、进阶学习笔记、思维脑图(xmind)皆以截图形式展现,但可提供分享所有的原件给每位学习的朋友
第一个 Java 相关 1.1 美团面试 Java 问题
JVM 内存模型
GC 垃圾回收算法
讲解新生代 老年代
java 的基本类型有哪几个?String 是不是 java 的基本类型?String 为什么要是 final 类型的?
说一下 JVM 的线程模型?这些区域都分别是干啥用的?java 线程模型和 jvm 线程模型注意区分
1.2 我的 JAVA 学习笔记(1)JAVA 面试宝典
Java 基础部分
算法与编程
html&JavaScript&ajax 部分
Java web 部分
数据库部分
xml 部分
流行框架与新技术
设计模式
j2ee 部分
EJB 部分
webservice 部分
(2)JAVA 并发体系学习思维脑图(xmind)
(3)多线程并发编程学习思维脑图(xmind)
第二个 数据库相关 2.1 美团面试问题
MySQL 有哪些锁?
解释一下 ACID 都是什么
Innodb 中索引的实现
B+树
AUTO_INCREMENT 原理(考察并发情况)
数据库的索引有哪几种?
为什么要用 B+树来做索引?
组合索引和几个单个的索引有什么区别?
数据库的大表查询优化了解吗?
MVCC 机制了解不?
MVCC 机制有什么问题?
怎么去解决这个问题?
mysql 慢语句调优做过吗?
说说你是怎么做的
2.2 我的 MySQL 学习笔记(1)21 条 MySQL 性能调优经验
为查询缓存优化你的查询
ExpLAIN 你的 SELECT 查询
当只要一行数据时使用 LIMIT 1
为搜索字段建索引
在 Join 表的时候使用相当类型的例,并将其索引
千万不要 ORDER BY RAND()
避免 SELECT *
永远为每张表设置一个 ID
使用 ENUM 而不是 VARCHAR
从 PROCEDURE ANALYSE() 取得建议
尽可能的使用 NOT NULL
Prepared Statements
无缓冲的查询
把 IP 地址存成 UNSIGNED INT
固定长度的表会更快
垂直分割
拆分大的 DELETE 或 INSERT 语句
越小的列会越快
选择正确的存储引擎
使用一个对象关系映射器(Object Relational Mapper)
小心“永久链接”
(2)20 个高频 MySQL 面试知识点
事务四大特性(ACID)原子性、一致性、隔离性、持久性?
事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL 默认是哪个级别?
MySQL 常见的三种存储引擎(InnoDB、MyISAM、MEMORY)的区别?
MySQL 的 MyISAM 与 InnoDB 两种存储引擎在,事务、锁级别,各自的适用场景?
查询语句不同元素(where、jion、limit、group by、having 等等)执行先后顺序?
什么是临时表,临时表什么时候删除?
MySQL B+Tree 索引和 Hash 索引的区别?
sql 查询语句确定创建哪种类型的索引?如何优化查询?
聚集索引和非聚集索引区别?
有哪些锁(乐观锁悲观锁),select 时怎么加排它锁?
非关系型数据库和关系型数据库区别,优势比较?
数据库三范式,根据某个场景设计数据表?
数据库的读写分离、主从复制,主从复制分析的 7 个问题?
使用 explain 优化 sql 和索引?
MySQL 慢查询怎么解决?
什么是 内连接、外连接、交叉连接、笛卡尔积等?
mysql 都有什么锁,死锁判定原理和具体场景,死锁怎么解决?
varchar 和 char 的使用场景?
mysql 高并发环境解决方案?
数据库崩溃时事务的恢复机制(REDO 日志和 UNDO 日志)?
20 个高频 MySQL 面试知识点:
(3)MySQL 学习思维脑图(xmind)
第三个 缓存-Redis 相关 3.1 美团面试问题
redis 了解吗?你说说怎么用 redis 实现分布式锁?
Redis 常用数据结构及底层数据结构实现
如何解决 Redis 的并发竞争 Key 问题
如何保证缓存与数据库双写时的数据一致性?
3.2 我的 Redis 学习笔记(1)14 个高频 Redis 知识点
redis 简介
为什么要用 redis /为什么要用缓存(高性能、高并发)
为什么要用 redis 而不用 map/guava 做缓存?
redis 和 memcached 的区别
redis 常见数据结构以及使用场景分析(String、Hash、List、Set、Sorted Set)
redis 设置过期时间
redis 内存淘汰机制(MySQL 里有 2000w 数据,Redis 中只存 20w 的数据,如何保证 Redis 中的数据都是热点数据?)
redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)
redis 事务
Redis 常见异常及解决方案(缓存穿透、缓存雪崩、缓存预热、缓存降级)
分布式环境下常见的应用场景(分布式锁、分布式自增 ID)
Redis 集群模式(主从模式、哨兵模式、Cluster 集群模式)
如何解决 Redis 的并发竞争 Key 问题
如何保证缓存与数据库双写时的数据一致性?
14 个高频 Redis 知识点:
(2)Redis 学习思维脑图(xmind)
第四个 思维/算法 4.1 美团面试问题
使用 O(N)复杂度完成 GBDT 分裂
找出无序数组中相隔距离最长的逆序对
给出一个 rand5(),实现一个分布均匀的 rand7()生成器
有一个点,向北走 5 公里、东走 10km、向南走 5 公里,回到原点。这样的点有几个,证明。
有一个 n 克的物体、一个天平和若干砝码,这个天平没有刻度,试问最少用多少个什么样的砝码可以将这个物体的质量称出。砝码的质量和个数自行指定。
4.2 算法刷题
编程技巧
线性表
字符串
栈和队列
树
排序
查找
暴力枚举法
广度优先搜索
深度优先搜索
分治法
贪心法
动态规划
图
算法刷题:
最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、 Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、 Memcached、MongoDB、Spring、SpringBoot、SpringCloud、RabbitMQ、Dubbo、MyBatis、ZooKeeper、数据结构、算法、 Elasticsearch、Kafka、微服务、Linux等等。可以分享给大家学习。