一、计算机网络
1.OSI参考五层模型
2.TCP和UDP的区别(UDP和TCP详细结构)
UDP首部(8字节)包含四个部分:源端口、目的端口、长度、校验和
TCP首部(20字节)包含:源端口、目的端口、序号、确认序号、窗口
3.详细介绍一下DNS
3.1域名的层次结构
3.2DNS域名查询举例
4.三次握手和四次挥手
5.浏览器输入URL之后到显示主页的整个过程
二、数据库
1.数据库优化
数据库优化的层次:硬件、系统配置、数据库、SQL优化
或IO磁盘读写、网络传输
2.B+数和页分裂
3.一棵B+数可以存储千万行数据的原因
4.数据库索引
5.主从复制原理
三、JAVA基础
1.重载和重写区别
2.接口和抽象区别
3.Collection和Collections区别
4.数组和链表的区别
5.HashMap相关问题
6.ConcurrentHashmap
四、JAVA多线程
1.Synchronized同步关键字,作用域、实现原理
2.Volatile关键字
3.线程池
4.原子类操作
实现原理:CAS+volatile和native方法来保证原子性操作
5.AQS实现原理
五、JVM
1.类加载的过程
2.JVM运行时数据区
3.自动垃圾回收
4.JVM优化
六、JAVA网络编程
1.BIO、NIO、AIO
2.select、poll、epoll
3.socket
七、算法
链表
1.求链表中倒数第K个节点
public static ListNode KthTail(ListNode head,int k){
ListNode fast=head;
ListNode slow=head;
if(head==null||k<=0)
return null;
for (int i=1;i<k;i++){
if(fast.getNext()!=null){
fast=fast.getNext();
}else{
return null;
}
}
while(fast.getNext()!=null){
slow=slow.getNext();
fast=fast.getNext();
}
return slow;
2.链表反转
public static void reverseListNode(ListNode head){
//链表的反转
ListNode pre=null;
ListNode curr=head;
while(curr!=null){
//往下走一步
head=head.getNext();
curr.setNext(pre);
pre=curr;
curr=head;
}
}