1.数据结构算法
基本数据结构:数组,链表,队列,栈,二叉树,堆
数组:
常见排序:冒泡,归并,快速排序(要求滚瓜烂熟的背诵)
数组常见考题:
求出现次数过半元素
二数之和,三数之和,四数之和, 排序后 n^2logn
回文判定
链表:
单链表插入删除(头,尾,给定位置)
链表逆转
求倒数k节点 先走k步的指针
判断环形链表(快慢指针)
二叉树:
先中后序遍历
求树深度
判断是否平衡
2.计算机网络
tcp/ip 三次握手 四次挥手 状态转换图
滑动窗口协议
拥塞控制协议
unix socket接口
socket bind listen accept connect close系统调用,用法及其原理
listen的第二个参数是干嘛用的 ( 服务端监听的时候 待创建会话和待accept两个队列 )
3.操作系统
linux文件系统
软连接 硬链接 inode 文件索引
b+数,其与mysql的联系与区别
虚拟内存机制 段页式内存管理 内存调度 换页 (linux free命令)
操作系统调度机制 进程 线程
什么是惊群效应,如何预防
进程线程联系与区别
什么是僵尸进程,产生的原因,如何预防和消灭
操作系统的同步机制 锁 生产者消费者问题
pthread类中提供了那些锁
进程间通信机制有哪几种,各有什么特点 (微服务架构时代的rpc调用)
常见linux命令有哪些什么作用
cd ls ll mkdir touch free grep top df rm sed awk su exit stat netstat ps umask
内存管理算法 空闲链表 分级空闲链表 jvm的内存管理机制
4.Java并发编程常见问题
java容器类常见问题
容器类的继承结构
Set Tree Map类的几个不同实现,
HashSet TreeSet HashMap HashTable ArrayList LinkedList 原理与实现 联系与区别 适用场景
重点问题HashMap的装载因子 扩容过程 hash算法 桶冲突后的解决方法(开链法)
此处可与redis里的字典数据结构联系学习记忆
java中的hash算法与stl中的算法 原理 优缺点 为什么redis nginx leveldb中使用murmurhash算法,
jvm内存模型
java内存划分 计数器 方法栈 堆区 静态存储区
三个特性 可见性 有序性 原子性 java内存模型是如何实现这三者的
volatile synchronized atom类 concurrent包中的类 都分别能起到什么作用,适应那些场合
什么是线程安全
CurrentHashMap 与HashMap的联系与区别,分别使用那些场景, CurrentHashMap原理 用法
CountDownLatch 和 CyclicBarrier类的联系与区别,适用场景
什么是CAS操作,atom类的原理,
java中的锁机制 互斥锁 读写锁 乐观锁 悲观锁 轻量级锁 的原理与实现 联系与区别 及 适用场景(这里可以与posix标准中的pthread类里面的对应锁做一些联系和对比)
5.数据库
数据库规范的 第一范式 第二范式 第三范式 BCNF范式的含义
关系型数据库与非关系型数据的联系与区别,原理与实现,适用场景
事务的四各隔离级别 分别意味着什么
read uncommitted
read committed
repeatable read
serializable
不同级别下可能出现的问题 脏读 不可重复读 幻读都是什么,怎么预防
Mysql的事务是如何实现的,两段式提交协议
mysql的伪MVCC是怎么实现的,能起到什么作用,在不同事务隔离级别下,MVCC如何运作
为什么mysql的MVCC是伪的
mysql如何防止sql注入
prepareStatement函数有什么作用() 为什么被preparStatement处理后的sql语句执行速度更快
Mysql数据库的数据结构
B+数的索引结构,索引页 数据页 数据页的结构
索引的原理,主键索引和一般索引的联系与区别, 主键为什么重要,怎么建索引, 遇到一条语句执行时间过长怎么优化,常见的思路(配合索引原理)
简要描述从Mysql中查询一行数据所发生的的过程( sql语句传给mysql server后经历的过程 )
sql语句有哪些注意事项,为什么这么规定:大数据模式下:不用select *、 where字句嵌套层数不得超过2 、不能直接大表计算笛卡尔积 、在常用的查询项上建索引。
mysql主从复制的原理和机制 引申问题->备份数据库的常用手段:直接复制数据库文件, 主从复制, 复制binlog 这几种手段的 原理与实现 联系与区别 适用场景
cardinality在mysql中起到的作用