笔、面试总结: 1.数据结构和算法 1.1 树 1.1.1 二叉树的dfs和bfs(编程实现)。 1.1.2 完全二叉树、满二叉树的节点数求解(编程实现),以及度的求解(会算即可)。 1.1.3 霍夫曼树:会求出最小带权值,熟悉霍夫曼树的构造。 1.1.4 红黑树:了解即可 1.1.5 B、B+树:知道二者的区别以及内部结构;为什么索引要采用B+树来做? 1.2 链表 1.2.1 问题:两个单链表相交,怎么找出相交的节点?怎么优化? 1.2.2 队列和栈有什么区别? 1.3 图 1.3.1 有/无向图的最小生成树(编码实现) 1.3.2 有/无向图的dfs和bfs。 1.4 排序算法 1.4.1 代码实现:冒泡、快排、选择、归并、插入排序、堆排序 1.5 查找算法 1.5.1 代码实现:二分查找 1.6 算法入门 1.6.1 代码实现:背包算法、动态规划、递归、回溯 2.计算机网络 2.1 五/七层OSI模型。TCP/IP(五)四层模型–网络接口层、网际层、传输层、应用层。 2.2 TCP与UDP的区别? 2.3 TCP的三次握手和四次挥手(画图)。为什么要三次? 2.4 TCP为什么可靠?(确认和重传机制、数据排序、流量控制、拥塞控制) 2.5 问题:ping 某个地址时,会涉及到哪些层?(使用ICMP协议,在网络层) 2.6 HTTP:状态码、构成、内容 3.设计模式 3.1 代码实现:单例模式–懒汉,饿汉,双重检查锁 3.2 思想表述正确:工厂模式、观察者模式、代理模式(动态静态) 4.JavaSE 4.1 集合 4.1.1 三大接口:Map,List,Set 4.1.2 HashMap、ArrayList、ConcurrentHashMap的实现原理,扩容机制,底层实现 4.1.3 Set的唯一性是怎么实现的? 4.1.4 Collection和Collections有什么区别? 4.2 线程 4.2.1 线程创建都有哪些方式? 4.2.2 两个线程如何通信? 4.2.3 代码实现:两个线程交替打印AB。三个线程轮流打印某些有规律的数字。 4.2.4 线程和进程之间的区别。 4.2.5 线程有哪些状态? 4.3 常用API 4.3.1 String各个方法的源码(求长的源码),String的intern()方法。 4.3.1 String和StringBuilder、StringBuffer的区别。 4.3.1 实现对象克隆的方法–1.重写clone()方法。2.实现Serializable接口,一般用于网络传输 4.3.1 synchronized的实现原理、特征 4.3.1 volatile的三大特征 4.4 面向对象的特征 4.4.1 封装、继承、多态在Java中的体现。 4.4.2 怎么理解重写和重载 5.JVM 5.1 五大内存模型,详细描述内部情况、私有?共有? 5.2 堆得内存模型,GC算法(详细说明)和机制 5.3 类加载机制,模型 5.4 内存调优 5.5 反射,什么是反射?能干什么?为什么要用反射? 6.数据库(MySQL) 6.1 基础 6.1.1 视图是什么?为什么要使用视图?怎么创建一个视图? 6.1.2 触发器是什么?为什么要使用触发器?怎么创建一个触发器? 6.1.3 存储过程是什么?为什么要使用存储过程?怎么创建一个存储过程? 6.1.4 函数、聚合函数 6.1.4 三大范式 6.1.5 连接:左连,右连、内连。 6.1.6 执行顺序:from > join on > group by > having > select > order by > limit 6.1.7 如何实现一个表的复制? 6.2 锁 6.2.1 数据库乐观锁、悲观锁是啥?怎么用?(for update、lock in share mode) 6.2.2 数据库表锁如何使用?行锁相对于表锁有什么优势? 6.3 索引 6.3.1 MySQL数据库索引分为哪几种?数据库索引在什么情况下会失效?底层实现是什么?为什么要用B+树? 6.3.2 如何知道一条SQL语句有没有使用到索引(执行explain计划) 6.4 事务 6.4.1 事务的四大特性:ACID 6.4.2 事务的7个传播特性与隔离级别,以及对应可以解决的问题 6.5 引擎及其他 6.5.1 InnoDB引擎为什么没有MyISAM查询效率快? 6.5.2 你知道数据库如何进行客户端查询缓存?项目中有没有使用过第三方缓存库? 6.5.3 数据库引擎如何选择?针对具体的业务场景谈一谈? 7.JavaEE 7.1 Servlet、Filter、Listener是什么?使用场景? 7.2 Servlet是如何接收到请求的?如何处理请求?如何回应请求? 7.3 Servlet生命周期?Servlet如何实现懒加载? 7.4 JSP是什么? JSP中九大内置对象? 为什么JSP会被淘汰(耦合性太高)? 7.5 常见的Java Web容器,你使用过哪种?和其他的有什么区别? 为什么Tomcat内存不好管理? 8.Spring、SpringMVC、MyBatis 8.1 Spring生命周期? 8.2 Spring IoC 、AOP是啥? AOP的应用场景(Spring声明式事务、日志处理、植入切面代码)。 8.3 动态代理和CGLib代理有什么异同? 8.4 SpringMVC如何处理一个前端请求? 8.5 MyBatis中如何处理实体一对多、多对多映射? 8.6 页面中所展示的数据用什么来承接? 8.7 MyBatis拦截器的底层实现是什么? 9.Linux 9.1 查看端口占用命令 9.2 将指定字符串写入某文件 9.3 清除某个文件的内容而不删除该文件 9.4 Linux为什么更适合用于服务端系统