java面试复习提纲
文章目录一 网络二 操作系统三 java基础四 Javaweb五 JDBC六 框架七 java多线程八 java并发九 java集合十 JVM十一 MySQL十二 Redis十三 设计模式十四 Linux十五 数据结构和算法十五 其他十六 项目十七 Hr面试问题一 网络LRU算法 9一个url访问的完整流程 9DNS解析过程 10APR解析网络协议7层 5层分别是什么 10GET 与 POST 11Tcp ip协议 12TCP与UDP的区别 13TCP流模式与UDP数据报模式 14TCP的三次握手 15四次挥手 16TIME_WAIT作用 17HTTP协议 17HTTP长连接、短连接是什么 18HTTP 1.0、1.1、1.2区别HTTP、FTP区别 18HTTP状态码 19HTTP报头HTTP与HTTPS的区别 19滑动窗口机制、滑动窗口下产生的粘包问题及其解决方案、tcp长连接心跳包机制、拥塞控制慢启动算法和拥塞避免算法线程和进程的区别。 21进程的通信 管对信息socket共享 22内存的管理策略 22虚拟内存 23局部性原理 23二 操作系统进程线程的基本概念 23进程的互斥 23同步各种算法比如生产者消费者、哲学家就餐问题、读写者问题 23死锁 23避免银行家算法和检测算法 24进程的各种调度算法及其特点 24内存管理 24文件管理 24i/o原理 24三 java基础面向对象与面向过程的区别 24Java和c的异同 25面向对象设计原则 25java继承封装多态 26重载和重写 26抽象类和接口的区别 28hashCode equalstoString 28Java 的 与 equals 有什么区别 29StringBuffer和StringBuilder 29StringBuffer.append和String “” 的区别 30序列化和反序列化 30异常 32Final和finally和finalize 32Final 33静态变量、静态代码块、构造代码块、构造函数的执行顺序 33深浅复制的概念 34Instance of 34abstract 的方法是否可同时是 static、是否可同时是 native、是否可同时是 synchronized 的为什么 35拆装箱问题 35内部类 36反射 36为什么java底层使用快排而不使用堆排序 39静态变量和实例变量的区别 39BIO、NIO和AIO的区别 40NIO实现原理 40阻塞与非阻塞 40同步与异步 41AIO——异步IO 42四 Javaweb对servlet的个人理解 42Servlet的实现 42servlet生命周期 42Tomcat类加载机制 43tomcat是什么 Tomcat的总体构造 43责任链模式 44过滤器拦截器 44forward()与redirect()的区别 45前端发来的请求判断是ajax还是http? 45Session和cookie 45Jsp 48五 JDBC手写jdbc连接数据库的代码 49六 框架Spring优点/理解 52Bean的生命周期 52spring的注解讲一下 54Bean的加载时机 55前置后置环绕异常通知 55AOP术语 56spring循环依赖 56IOC 底层如何实现 57DI注入原理 57AOP 60Aop事务 61Spring的事务传播行为 62静态代理和动态代理区别讲一下 63MyBatis是什么 66BeanFactory实现原理 67mybatis和hibernate的区别 67MyBaitis原理 68Mybatis缓存机制 71动态sql概念 71MVC 72SpringMVC Controller原理 73七 java多线程线程安全的单例 74Java内存模型 原子性可见性重排序 75线程和进程的区别。 77线程的生命周期及转换图 77线程怎么实现 78start()方法和run()方法的区别 79interrupted 79sleep 和 wait 80wait、notify 和 notifyAII 80为什么wait()方法要被try catch包围且捕获InterruptedException 80线程间通信 80生产者消费者的应用 81交替打印ABC 87死锁 91八 java并发lock与synchronize区别 92volatile 实现原理 94Volatile和Synchronized 95ThreadLocal和synchronized的区别? 95ReentrantLock 可重入锁 95公平锁和非公平锁 96悲观锁和乐观锁 97读写锁 98CAS无锁操作 98AQS 98CyclicBarrier和CountDownLatch的区别 99Synchronuzed原理 99atomic原子类 101多线程编程序需要注意的地方 101多线程的使用场景 102线程池用过吗为啥要适用线程池线程池的内部参数有哪些什么含义。如果让你来设计一个线程池你会怎么设计 102让你设计一个线程池你会怎样设计 线程池管理类创建线程 添加客户端请求的新任务 执行任务 回收执行完任务的线程单例 任务类 队列 工作线程 103线程池有哪些 104ThreadLocal主要用途 105ThreadLocal实现原理 105ThreadLocal常用操作的底层实现原理吗如存储set(T value)获取get()删除remove()等操作。 106ThreadLocalMap的内部底层实现 107弱引用WeakReference会造成内存泄露问题吗 108怎么避免内存泄漏 109ThreadLocal应用场景 110消息队列 111九 java集合Sort函数 112fail-fast简介 112使用 for-each 时调用 List 的 remove 方法元素会抛出 ConcurrentModificationException 异常 114list,set 114HashSet 去重原理的认识 114LinkedList 工作原理和实现 115Vector 115hash冲突的解决办法 115hashMap原理 116扩容机制 116HshpMap的遍历 117HashMap死循环问题 117HashMap的初始化长度为什么是16为什么是以2的n次幂进行扩容。 118HashMap和HashSet区别 118HashMap 和Hashtable区别 118HashMap在1.8后新特性 119ConcurrentHashMap底层数据结构 119copyonwrite集合 121十 JVM类加载机制 122双亲委托模式 122Java中编译和运行的区别。 124堆和栈 124永久代 125内存划分 126GC算法 128垃圾回收过程 130JVM调优 131垃圾收集器 132minor GC 和 Full GC触发条件 以及不同 134内存泄露内存溢出 134java哪种情况会发生内存泄露 135栈溢出、堆溢出的代码 135java OOM异常如何排除和解决的 136java 内存模型(简称JMM) 136十一 MySQL关系型数据库和非关系型数据库区别 138三范式 138数据库优化 139sql优化 全文索引 140分库分表 141索引的理解 142建立索引时机 143索引失效 144聚集索引和非聚集索引 144Hash/B树索引 144MyISAM Innodb 索引 145mysql为什么使用B树 146innodb和myisam区别 5.5之前之后 146事务 147原子性/持久性是如何保证的 149当前读和快照读 155MVCC 155内连接、外连接、交叉连接、笛卡儿积 157分布式锁 157基于Zookeeper实现分布式锁 157分布式事务 158long_query怎么解决 159explain 159delete table 和 truncate table 区别 160Where与Having的区别 160order by 和 distinct去重的底层实现 160视图和游标 161union和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树、跳表的概念以及红黑树的恢复平衡过程。红黑树十五 其他gitsvn区别 179Maven 176多个tomcat如何实现session共享 176Shiro 176中间件 178十六 项目十七 Hr面试问题问你了解我们公司吗 179问请谈谈你个人的最大特色。 180问你的优缺点 180问谈一谈你的一次失败经历 180问你为什么选择我们公司 180问如果你家里和公司都有急事你怎么办 180问平时在看什么书说说其他方面 181问平时喜欢做什么运动 181问可以转python吗 181