爱因斯坦说过“耐心和恒心总会得到报酬的”,我也一直把这句话当做自己的座右铭,这句箴言在今年也彻底在我身上实现了。

每一个程序员都拥有一座大厂梦,我也不例外,去年面试阿里P6,竟然被MySQL问倒了,很多相关性的问题都没有答上来,才2面就凉凉了。回去之后也潜心复习了,准备了二战,如今终于进入了阿里,被天猫团队录用。

<>01 阿里面试题之MySQL

之前的阿里面试题都有做总结,具体面试题内容整理成了文档,本文是针对MySQL系列的,所以下面只展示了自己第一次面试阿里时被吊打问到的一些MySQL难题

* 请解释关系型数据库概念及主要特点?
* 请说出关系型数据库的典型产品、特点及应用场景?
* 请详细描述 SQL 语句分类及对应代表性关键字。
* 什么是 MySQL 多实例,如何配置 MySQL 多实例?
* 如何加强 MySQL 安全,请给出可行的具体措施?
* 误操作执行了一个 drop 库 SQL 语句,如何完整恢复?
* 详述 MySQL 主从复制原理及配置主从的完整步骤。
* MySQL 如何实现双向互为主从复制,并说明应用场景?
* MySQL 如何实现级联同步,并说明应用场景?
* MySQL 主从复制故障如何解决?
<>02 二战阿里,天猫团队面试题(3轮技术面+HR面)

阿里面试技术题:

* 自我介绍呗
* 项目介绍呗(先自己介绍项目,然后再聊天)
* junit用法,before,beforeClass,after,afterClass的执行顺序
* 分布式锁
* nginx的请求转发算法,如何配置根据权重转发
* 用hashmap实现redis有什么问题(死锁,死循环,可用ConcurrentHashmap)
* 线程的状态
* 线程的阻塞的方式
* sleep和wait的区别
* hashmap的底层实现
* 一万个人抢100个红包,如何实现(不用队列),如何保证2个人不能抢到同一个红包,可用分布式锁
* Java内存模型,垃圾回收机制,不可达算法
* 两个Integer的引用对象传给一个swap方法在方法内部交换引用,返回后,两个引用的值是否会发现变化
* AOP的底层实现,动态代理是如何动态,假如有100个对象,如何动态的为这100个对象代理?
* 是否用过maven install、 maven test、git(make install是安装本地jar包)
* Tomcat的各种配置,如何配置docBase
* Spring的bean配置的几种方式
* Web.xml的配置
* Spring的监听器。
* Zookeeper的实现机制,有缓存,如何存储注册服务的
* IO会阻塞吗?readLine是不是阻塞的
* 用过 Spring的线程池还是java的线程池?
* 字符串的格式化方法 (20,21这两个问题问的太低级了)
* 时间的格式化方法
* 定时器用什么做的
* 线程如何退出结束
* java有哪些锁?乐观锁 悲观锁 synchronized 可重入锁
读写锁,用过reentrantlock吗?reentrantlock与synmchronized的区别
* ThreadLocal的使用场景
* Java的内存模型,垃圾回收机制
* 为什么线程执行要调用start而不是直接run(直接run,跟普通方法没什么区别,先调start,run才会作为一个线程方法运行)
* qmq消息的实现机制(qmq是去哪儿网自己封装的消息队列)
* 遍历hashmap的三种方式
* JVM的一些命令
* memcache和redis的区别
* Mysql的行级锁加在哪个位置
* ConcurrentHashmap的锁是如何加的?是不是分段越多越好
* myisam和innodb的区别(innodb是行级锁,myisam是表级锁)
* MySQL其他的性能优化方式
* Linux系统日志在哪里看
* 如何查看网络进程?
* 统计一个整数的二进制表示中bit为1的个数
* JVM内存模型,java内存模型
面试题答案:

<>03 二战前,我是如何复习的?

(1)MySQL 专题部分(先刷题)

* Mysql 中有哪几种锁?
* MYSQL 数据表在什么情况下容易损坏?
* MySQL 里记录货币用什么字段类型好
* MYSQL 支持事务吗?
* 解释访问控制列表
* 什么是通用 SQL 函数?
* 什么是非标准字符串类型?
* Mysql 表中允许有多少个 TRIGGERS?
* 什么样的对象可以使用 CREATE 语句创建?
* NOW()和 CURRENT_DATE()有什么区别?
* 可以使用多少列创建索引?
* InnoDB 是什么?
* Mysql 如何优化 DISTINCT?
* 如何输入字符为十六进制数字?
* 如何显示前 50 行?
* …
MySQL 面试题答案:

(2)MySQL 性能优化的21个最佳实践

* 为查询缓存优化你的查询
* 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)
* 小心“永久链接”

面试阿里P6,竟被MySQL难倒,再次二战,进入天猫团队(研发岗)

(3)MySQL 性能调优与架构设计

* 基础篇:
* MySQL基本介绍
* MySQL架构组成
* MySQL存储引擎简介
* MySQL安全管理
* MySQL备份与恢复
* 性能优化篇:
* 影响MySQLServer性能的相关因素
* MySQL数据库锁定机制
* MySQL数据库Query的优化
* MySQL数据库Schema设计的性能优化
* MySQLServer性能优化
* 常用存储引擎优化
* 架构设计篇:
* MySQL可扩展设计的基本原则
* 可扩展性设计之MySQLReplication
* 可扩展性设计之数据切分
* 可扩展性设计之Cache与Search的…
* MySQLCluster
* 高可用设计之思路及方案
* 高可用设计之MySQL监控

<>04 我的复习宝典资料

(1)Java面试手册

* 性能优化面试专栏
* 微服务架构面试专栏
* 并发编程高级面试专栏
* 开源框架面试题专栏
* 分布式面试专栏

(2)实战文档

* Redis实战
* MySQL实战
* Spring Boot实战
* Spring Cloud实战
* 实战Java虚拟机
以实战Java虚拟机为例:

* 初探Java虚拟机
* 认识Java虚拟机的基本结构
* 常用Java 虚拟机参数
* 垃圾回收概念与算法
* 垃圾收集器和内存分配
* 性能监控工具
* 分析Java堆
* 锁与并发
* Class 文件结构
* Class 装载系统
* 字节码执行

技术
今日推荐
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信