java面试复习提纲

一 网络

LRU算法 9
一个url访问的完整流程 9
DNS解析过程 10
APR解析
网络协议7层 5层分别是什么 10
GET 与 POST 11
Tcp ip协议 12
TCP与UDP的区别 13
TCP流模式与UDP数据报模式 14
TCP的三次握手 15
四次挥手 16
TIME_WAIT作用 17
HTTP协议 17
HTTP长连接、短连接是什么? 18
HTTP 1.0、1.1、1.2区别
HTTP、FTP区别 18
HTTP状态码 19
HTTP报头
HTTP与HTTPS的区别 19
滑动窗口机制、
滑动窗口下产生的粘包问题及其解决方案、
tcp长连接心跳包机制、
拥塞控制(慢启动算法和拥塞避免算法)
线程和进程的区别。 21
进程的通信 管对信息socket共享 22
内存的管理策略: 22
虚拟内存: 23
局部性原理: 23

二 操作系统

进程线程的基本概念 23
进程的互斥 23
同步各种算法(比如生产者消费者、哲学家就餐问题、读写者问题) 23
死锁 23
避免(银行家算法)和检测算法 24
进程的各种调度算法及其特点 24
内存管理 24
文件管理 24
i/o原理 24

三 java基础

面向对象与面向过程的区别 24
Java和c++的异同 25
面向对象设计原则 25
java继承,封装,多态 26
重载和重写 26
抽象类和接口的区别 28
hashCode +equals+toString 28
Java 的 == 与 equals 有什么区别? 29
StringBuffer和StringBuilder 29
StringBuffer.append()和String “+” 的区别 30
序列化和反序列化 30
异常 32
Final和finally和finalize 32
Final 33
静态变量、静态代码块、构造代码块、构造函数的执行顺序 33
深浅复制的概念 34
Instance of 34
abstract 的方法是否可同时是 static、是否可同时是 native、是否可同时是 synchronized 的?为什么? 35
拆装箱问题 35
内部类 36
反射 36
为什么java底层使用快排而不使用堆排序 39
静态变量和实例变量的区别 39
BIO、NIO和AIO的区别 40
NIO实现原理 40
阻塞与非阻塞 40
同步与异步 41
AIO——异步IO 42

四 Javaweb

对servlet的个人理解 42
Servlet的实现 42
servlet生命周期 42
Tomcat类加载机制 43
tomcat是什么 Tomcat的总体构造 43
责任链模式: 44
过滤器+拦截器 44
forward()与redirect()的区别? 45
前端发来的请求判断是ajax还是http? 45
Session和cookie 45
Jsp 48

五 JDBC

手写jdbc连接数据库的代码 49

六 框架

Spring优点/理解 52
Bean的生命周期 52
spring的注解讲一下 54
Bean的加载时机 55
前置后置环绕异常通知 55
AOP术语 56
spring循环依赖 56
IOC 底层如何实现 57
DI注入原理 57
AOP 60
Aop事务 61
Spring的事务传播行为: 62
静态代理和动态代理区别讲一下 63
MyBatis是什么 66
BeanFactory实现原理 67
mybatis和hibernate的区别 67
MyBaitis原理 68
Mybatis缓存机制 71
动态sql概念 71
MVC 72
SpringMVC Controller原理 73

七 java多线程

线程安全的单例 74
Java内存模型 原子性+可见性+重排序 75
线程和进程的区别。 77
线程的生命周期及转换图 77
线程怎么实现 78
start()方法和run()方法的区别 79
interrupted 79
sleep 和 wait 80
wait、notify 和 notifyAII 80
为什么wait()方法要被try catch包围,且捕获InterruptedException? 80
线程间通信 80
生产者消费者的应用 81
交替打印ABC 87
死锁 91

八 java并发

lock与synchronize区别 92
volatile 实现原理 94
Volatile和Synchronized 95
ThreadLocal和synchronized的区别? 95
ReentrantLock 可重入锁 95
公平锁和非公平锁 96
悲观锁和乐观锁 97
读写锁 98
CAS无锁操作 98
AQS 98
CyclicBarrier和CountDownLatch的区别 99
Synchronuzed原理 99
atomic原子类 101
多线程编程序需要注意的地方 101
多线程的使用场景 102
线程池用过吗?为啥要适用线程池,线程池的内部参数有哪些,什么含义。如果让你来设计一个线程池你会怎么设计 102
让你设计一个线程池你会怎样设计? 线程池管理类(创建线程 添加客户端请求的新任务 执行任务 回收执行完任务的线程,单例 ) 任务类 队列 工作线程 103
线程池有哪些 104
ThreadLocal主要用途 105
ThreadLocal实现原理 105
ThreadLocal常用操作的底层实现原理吗?如存储set(T value),获取get(),删除remove()等操作。 106
ThreadLocalMap的内部底层实现 107
弱引用WeakReference会造成内存泄露问题吗? 108
怎么避免内存泄漏 109
ThreadLocal应用场景 110
消息队列 111

九 java集合

Sort函数 112
fail-fast简介 112
使用 for-each 时调用 List 的 remove 方法元素会抛出 ConcurrentModificationException 异常? 114
list,set 114
HashSet 去重原理的认识? 114
LinkedList 工作原理和实现? 115
Vector 115
hash冲突的解决办法 115
hashMap原理 116
扩容机制 116
HshpMap的遍历 117
HashMap死循环问题 117
HashMap的初始化长度为什么是16?为什么是以2的n次幂进行扩容。 118
HashMap和HashSet区别 118
HashMap 和Hashtable区别 118
HashMap在1.8后新特性 119
ConcurrentHashMap底层数据结构 119
copyonwrite集合 121

十 JVM

类加载机制 122
双亲委托模式 122
Java中编译和运行的区别。 124
堆和栈 124
永久代 125
内存划分 126
GC算法 128
垃圾回收过程: 130
JVM调优 131
垃圾收集器 132
minor GC 和 Full GC触发条件 以及不同 134
内存泄露+内存溢出 134
java哪种情况会发生内存泄露 135
栈溢出、堆溢出的代码 135
java OOM异常,如何排除和解决的? 136
java 内存模型(简称JMM) 136

十一 MySQL

关系型数据库和非关系型数据库区别 138
三范式: 138
数据库优化: 139
sql优化 全文索引 140
分库分表 141
索引的理解: 142
建立索引时机 143
索引失效 144
聚集索引和非聚集索引 144
Hash/B+树索引 144
MyISAM Innodb 索引 145
mysql为什么使用B+树 146
innodb和myisam区别 5.5之前之后 146
事务 147
原子性/持久性是如何保证的? 149
当前读和快照读 155
MVCC 155
内连接、外连接、交叉连接、笛卡儿积 157
分布式锁 157
基于Zookeeper实现分布式锁 157
分布式事务 158
long_query怎么解决 159
explain 159
delete table 和 truncate table 区别? 160
Where与Having的区别 160
order by 和 distinct去重的底层实现 160
视图和游标 161
union和union all有什么不同? 161
数据库事务实现方法 161
数据库连接池优点 162

十二 Redis

定义
基本数据类型
主从复制
事务
发布订阅消息
集群

十三 设计模式

分类/原则 169
单例模式 170
工厂模式
代理模式
观察者模式
适配器模式 175
桥接模式和适配器设计模式的区别 51

十四 Linux

基本命令
软硬链接
大小端
日志查询
熟悉vim使用

十五 数据结构和算法

算法:
八种排序及其性能分析
分治、贪心、回溯算法及其扩展(如8皇后扩展到n皇后)、查找算法、分支界限、动态规划入门。
八大排序
优先队列
判断链表是否有环,和环的入口
海量数据处理
1.将100G条数据进行排序:
编程二叉树的非递归前序、非递归中序、非递归中序层次遍历
动态和贪心
假设阿福已经准确预测出了某只股票在未来 N 天的价格,他希望买卖两次,使得获的利润最高。为了计算简单起见,利润的计算方式为卖出的价格减去买入的价格。 同一天可以进行多次买卖。但是在第一次买入之后,必须要先卖出,然后才可以第二次买入。 现在,阿福想知道他最多可以获得多少利.
10000个数据找前100个,过程
10亿个数字的中位数
10万个单词频率最高的前100个单词
用高效的方法计算2* 8
怎么判断是一颖平衡二叉树
平衡二又树和完全二叉树的概念
平衡二叉树的增加和删除
不用加减乘除运算符实现两位数加减

数据结构:
顺序表、链表的删除插入操作(剑指offer)、
二叉树的多种操作以及非递归的前中序遍历(剑指offer)、
字符串kmp模匹配、
有向图无向图的广度优先遍历和深度优先遍历思想、
最小生成树普里姆算法和克鲁斯卡尔算法思想、
迪杰斯特拉算法思想,
熟悉AVL树在插入和删除节点后恢复平衡的过程(左旋右旋),
了解B树、B+树、
跳表的概念以及红黑树的恢复平衡过程。
红黑树

十五 其他

git,svn区别; 179
Maven 176
多个tomcat如何实现session共享? 176
Shiro 176
中间件 178

十六 项目
十七 Hr面试问题

问:你了解我们公司吗? 179
问:请谈谈你个人的最大特色。 180
问:你的优缺点? 180
问:谈一谈你的一次失败经历 180
问:你为什么选择我们公司? 180
问:如果你家里和公司都有急事,你怎么办? 180
问:平时在看什么书?说说其他方面 181
问:平时喜欢做什么运动? 181
问:可以转python吗? 181

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值