面试题
- 基本数据类型
- 各占多少字节,short 占 2 个,int 占 4 个字节
- JVM 内存模型
- 垃圾回收算法
- StringBuffer 和 StirngBuilder、String
- Linux查看进程、查看网络端口
- MySQL InnoDB 和 MyISAM 的区别
- 聚簇索引和非聚簇索引
- 复合索引(也就是联合索引… …)
- 隔离级别
- MyBatis 的标签 比如
<select >
、<insert>
、<delete>
、<update>
、<foreach>
、 - Spring两大特性:控制反转/依赖注入、面向切面编程
- AOP 的应用
关于项目:
私聊是怎么实现的,群聊是怎么实现的?
考虑过延迟吗?
每个终端和服务器是一直保持连接吗?
实际场景中如果连接断开怎么办?是服务器端检查状态还是客户端检查?
表的设计做过吗?设计表的时候遵循的原则?
关联查询的效率高吗?
中间件接触过吗,像Redis、MQ
如果有一亿个学生,给定一个学生的学号,查询它的全部信息
前端技术接触过吗?
复盘
1.基本数据类型
boolean1 byte1 short2 char2 int4 float4 double6 long8
2.JVM 内存模型
线程私有的是 程序计数器 和 栈;程序计数器是存放当前字节码指令的地址;栈是方法执行的模型,方法的调用和执行完毕对应着一个栈帧入栈和出栈,栈中有局部变量表,在编译时期确定大小,之后不会改变;还有方法出口、动态链接;堆是数组和对象分配空间的地方,物理可以是不连续的,会分为新生代和老年代,根据它们对象生命周期的特点进行垃圾回收;方法区存放和类相关的信息,比如 类信息、类变量,运行时常量池是在方法区中的。
3.StringBuffer 和 StirngBuilder、String
String 底层是 final 修饰的 char 类型的数组,所以是不可变的;
StringBuffer 每个方法都用了 synchronized 关键字,所以是线程安全的;而 StringBuilder 是线程不安全的。
“+”如果都是常量,就会创建的字符串常量放置到字符串常量池中;如果有非常量的,JDK 1.5 之后是创建 StringBuilder 对象,然后使用 append 方法,而JDK 1.5 之前是 StringBuffer 对象。
4.Linux查看进程
静态的:ps 指令;动态的:top 指令,每 5 秒更新一次。
5.联合索引
比方说以 c1 和 c2 建立联合索引,那就只会建立一个 B+ 树,按照 c1 和 c2列 的大小进行排序,这个包含两层含义:
(1)先把各个记录和页按照 c1 列进行排序。
(3)在记录的 c1 列相同的情况下,采用 c2 列进行排序。
6.MyBatis 的标签
sql语句 <select> <insert> <delete> <update>
配置Java对象和查询结果集中列名对应的关系 <resultMap>
动态sql拼接 <if><foreach>
格式化输出 <where><set>
关联映射 一对多:<collection> 一对一:<association>
引用常量 <include>
7.AOP 的应用
捕获异常
安全检查
日志
缓存