前言

MyBatis是一个支持普通SQL查询、存储过程和高级映射的优秀持久层框架。MyBatis 去掉了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解进行配置和原始映射,以将接口和Java的POJO (Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

MyBatis作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件中,以实现SQL的灵活配置。这样做的好处是将SQL与程序代码分离,做到可以在不修改程序代码的情况下,直接在配置文件中修改SQL。

在这里分享一份 [mybatis从入门到精通] 的强力教程,定能够助你一臂之力。

华为Java一面· 1H

闲聊偏多,问的技术性问题比较基础

  • ·简单说说面向对象的特征以及六大原则
  • ·谈谈final、finally、finalize的区别
  • ·Java中==、equals与hashCode的区别和联系
  • ·谈谈Java容器ArrayList、LinkedList、·HashMap、HashSet的理解,以及应用场景
  • ·谈谈线程的基本状态,其中的wait() sleep() yield()方法的区别。

华为Java二面 · 0.5H

问题深入一些,开始加难度

  • ·JVM性能调优的监控工具了解那些?
  • ·简单谈谈JVM内存模型,以及volatile关键字
  • ·垃圾收集器与内存分配策略
  • ·垃圾收集算法
  • ·MySQL几种常用的存储引擎区别
  • ·数据库的隔离级别
  • ·算法:5亿整数的大文件,怎么排?

华为Java三面· 0.5H

三面问题更为细致了,考察项目经验更多

  • ·Java内存模型
  • ·full gc怎么触发
  • ·gc算法
  • ·JVM回收策略
  • ·ClassLoader原理和应用
  • ·高吞吐量的话用哪种gc算法
  • ·ConcurrentHashMap和HashMap
  • ·volatile的底层如何实现,怎么就能保住可见性了?
  • ·有参与过开源的项目吗?
  • ·线程池原理,拒绝策略,核心线程数
  • ·1亿个手机号码,判断重复
  • ·线程之间的交互方式有哪些?有没有线程交互的封装类

华为Java4面 · 1H

重点考察全局观和应急处置

  • ·项目介绍
  • ·两次点击,怎么防止重复下订单
  • ·数据库表设计,索引
  • ·Redis的缓存淘汰策略、更新策略
  • ·dubbo、netty、RPC介绍原理
  • ·限流算法
  • ·zk挂了怎么办
  • ·分布式锁的实现方式,zk实现和Redis实现的比较
  • ·秒杀场景设计,应付突然的爆发流量
  • ·分布式数据一致性
  • ·一致性哈希
  • ·消息队列原理介绍
  • ·注解的原理
  • ·数据库原理,数据库中间件,索引优化
  • ·ioc原理、aop原理和应用
  • ·大数据相关,MapReduce
  • ·Docker的原理

总结

本文从基础到高级再到实战,由浅入深,把MySQL讲的清清楚楚,明明白白,这应该是我目前为止看到过最好的有关MySQL的学习笔记了,我相信如果你把这份笔记认真看完后,无论是工作中碰到的问题还是被面试官问到的问题都能迎刃而解!