前言
面试必备技能清单,这里不会详细论述,更多的是清单列举,罗列一些关键字和链接注释。
数据结构与算法
排序算法
选择排序冒泡排序插入排序快速排序快速排序(普通,二路,三路)归并排序希尔排序堆排序计数排序
https://www.jianshu.com/p/ff1797625d66 桶排序基数排序二分查找Java 中的排序工具
数据结构
红黑树(5点特性)
思维拓展
一堆字符串求出现次数最多的字符串
Java
Java 基础部分
Java 集合框架
ArrayList 与 LinkedListHashtable、Hashmap 与 ConcurrentHashmapJava 并发编程
线程状态
新建、可运行(运行和就绪)、阻塞、无限期等待、限期等待、死亡实现线程三种方式(继承Thread,实现 Runnable 接口,实现 Callable 接口)并发两个关键问题
线程通信线程同步volatile 和 synchronizedlock 和 synchronizedJava内存模型(JMM),解决并发中的可见性,原子性,有序性问题Java IO
序列化AIO、BIO、NIOJava 虚拟机
运行时数据区 Java 设计模式
单例模式工厂模式
Java Web
Spring
IOCAOPDISpringMVC
执行流程MyBatis
数据库
存储引擎
MyISAM(表级锁,不支持事务,全文索引,只读应用)
.frm / .myd / .myi非聚集索引InnoDB(行级锁,最大支持并发,事务,表更新和查询都相当的频繁)
.frm / .ibd聚集索引,以主键为索引来组织数据
索引(衡量标准:IO渐进复杂度)
Hash(冲突,无法做范围查询)FullText(全文搜索,优化:前缀索引)R-Tree(空间索引,附近三公里的数据怎么查询)B+ Tree(B Tree:每个key、data信息存在结点,B+ Tree存在叶子节点)
哪些情况下不会使用索引
全表扫描更快条件中有or不是复合索引的第一部分like以%开始
隔离级别
串行化可重复读读已提交读未提交
Redis 数据类型
String:字符串Hash:字典List:链表Set:集合Sorted Set:有序集合
操作系统
进程和线程的区别
资源、调度、开销、通信 4个方面来对比
线程间通信
synchronizedwhile轮询wait() / notify()管道
进程通信
直接通信间接通信
计算机网络
应用层
HTTP请求和响应报文
传输层
为什么三次握手,两次不行吗四次挥手 TimeWait 作用TCP可靠传输
分布式
分布式通信协议
httphttpsRESTful API
分布式锁
项目
扫码登录原理
Cookie 和 Session 的原理
单点登录
参考资料
面试宝典
一、数据结构与算法
包含数据结构与算法两部分。
?阅读清单
《算法4》《剑指Offer》《程序员面试指南》
?学习课程
【慕课网】刘宇波:玩转数据结构,从入门到进阶【慕课网】刘宇波:程序员的内功修炼,学好算法与数据结构【慕课网】刘宇波:玩转算法面试 leetcode题库分门别类详细解析
二、Java
包含 Java 核心知识和 Java Web 框架。
?阅读清单
《Java并发编程实战》 《深入分析Java Web技术内幕》《阿里巴巴Java开发手册》《Java程序员面试笔试宝典》《Java网络编程》《Spring实战》《Spring MVC+MyBatis开发从入门到项目实战》《深入理解Java虚拟机》《Java核心技术 卷Ⅰ / Ⅱ》
?学习课程
【廖雪峰】Java教程【龙果学院】Java并发编程原理与实战【龙果学院】深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理)【慕课网】Java零基础入门【尚学堂】白鹤翔_jvm虚拟机优化【网易云课堂】Java开发工程师(Web方向)翁凯【慕课网】Spring Cloud微服务实战_廖师兄【黑马程序员】SSH框架_王泽【黑马程序员】SpringMVC+Mybatis【牛客网】初中高Python+Java项目实战_叶神
三、Web Server
【网易云课堂】thinkphp5开发restful-api接口
四、面向对象
《设计模式之禅》
【极客学院】极客学院23种设计模式
五、数据库
?阅读清单
《高性能MySQL》《Redis实战》
?学习课程
【慕课网】MySQL性能管理及架构设计【慕课网】Redis从入门到高可用,分布式实践
六、操作系统
?阅读清单
《Linux+C程序设计大全》《快乐的Linux命令行》《深入理解计算机系统》《UNIX环境高级编程》《Linux+高性能服务器编程》
?学习课程
【慕课网】快速上手Linux 玩转典型应用【慕课在线】Linux达人养成计划 I-Linux的入门级课程!【慕课在线】Linux 达人养成计划 II VIM+磁盘管理+用户权限!【小甲鱼】零基础入门学习汇编语言操作系统_清华大学(向勇、陈渝)
七、计算机网络
?阅读清单
《图解HTTP》《计算机网络原理创新教程》韩立刚主编
?学习课程
【51CTO】韩老师-计算机网络原理-156讲【慕课网】HTTP协议原理+实践 Web开发工程师必学
八、系统架构
?阅读清单
?学习课程
【慕课网】Nginx从入门到实践【咕泡学院】架构师系列课程
九、面试
【慕课网】360大牛全面解读PHP面试
【慕课网】Google面试官亲授 升级Java面试
十、机器学习
?阅读清单
《机器学习实战》
?学习课程
【慕课网】Python3入门机器学习 经典算法与应用【莫烦Python】机器学习系列
十一、工具
?学习课程
【表严肃】讲正则表达式【表严肃】讲Git【慕课网】系统学习Docker 践行DevOps理念【慕课在线】IntelliJ IDEA神器使用技巧