算法和数据结构
- 数组、链表、二叉树、队列、栈的各种操作(性能、场景)。
- 二分查找和各种变种的二分查找
- 各类排序算法以及复杂度的分析(快排、归并、堆)
- 各类算法题(手写)
- 理解并可以分析时间和空间的复杂度。
- 动态规划(笔试。。)、贪心。
- 红黑树、AVL树、Hash树、Tire树、B树、B+树。
- 图算法(短路径算法理解)
计算机网络
1、osi七层模型(tcp4层)
·每层的协议
·url到页面的过程
2、HTTP
·http/https 1.0 1.1 2.0
·get/post 以及幂等性
·http协议头相关
·网络攻击(CSRF、XSS)
3、TCP/IP
·三次握手、四次挥手
·拥塞控制(过程、阈值)
·流量控制与滑动窗口
·TCP与UDP比较
·子网划分
DDos攻击
4、(B)IO/NIO/AIO
·三者原理,各个语言是怎么实现的
·Netty
·Linux内核select poll epoll
数据库
最多是mysql、Nosql有redis
1、索引(包括分类及优化方式,失效条件,底层结构)
2、sql语法(join、union、子查询、having、group by)
3、引擎对比(InnoDB、MyISAM)
4、数据库的锁(行锁、表锁、页级锁、意向锁、读锁、写锁、悲观锁、乐观锁,以及加锁的select sql方式)
5、隔离级别,依次解决的问题(脏读、不可重复读、幻读)
6、事务的ACID
7、B树、B+树
8、优化(explain、慢查询、show profile)
9、数据库的范式。
10、分库分表,主从复制,读写分离。
11、Nosql相关(redis和memcached区别之类的)
操作系统
1、进程通信IPC(几种方式),与线程区别
2、OS的几种策略(页面置换、进程调度等,每个里面有几种算法)
3、互斥和死锁相关的
4、Linux内核相关的(select、poll、epoll)
编程语言 java
1、java基础(面向对象、四个特性、重载重写、static和final等)
2、集合(HashMap、ConcurrentHashMap、各种list,最好结合源码查看)
3、并发和多线程(线程池、SYNC和lock锁机制、线程通信、volatile、、ThreadLocal、CyclicBarrier、Atom包、CountDownLatch、AQS、CAS原理等)
4、JVM(内存模型、GC垃圾回收,包括分代,GC算法,收集器、类加载和双亲委派、JVM调优,内存泄露和内存溢出)
5、IO/NIO相关
6、反射和代理、异常、java8相关、序列化
7、设计模式(常用的,jdk中有的)
8、web相关(servlet、cookie/session、spring
扩充
1、分布式框架
CAP原理和BASE理论
Nosql与KV存储(redis,hbase,mongodb,mecached等)
服务化理论(包括服务发现、治理等,zookeeper、etcd、springcloud微服务)
负载均衡(原理、cdn、一致性hash)
RPC框架(包括整体的一些框架理论、通信的netty,序列化协议thrift,protobuff等)
消息队列(原理、kafka,activeMQ、rocketMQ)
分布式存储系统(GFS、HDFS、fastDFS)、存储模型(skipList、LSM等)
分布式事务、分布式锁等。
2、脚本语言
python、php、shell、golang
3、大数据
hadoop生态圈(hive、hbase、hdfs、zookeepe、storm、kafka)
spark体系
语言:python、R、scala
搜索引擎与技术
4、机器学习算法
工具git、docker、maven
书单
- 数据结构(严蔚敏)
- 网易云课堂浙大的数据结构课堂
- 大话数据结构
- 剑指offer(校招时候刷)
- 程序员面试金典
- 编程之美
- 牛客网
- 计算机网络(谢希仁)
- http权威指南
- tcp/ip详解 卷一(进阶书籍)
- UNIX网络编程(腾讯敲门砖)
- 高性能MYSQL
- 深入浅出mysql
- os原理:操作系统
- linux私房菜
- java疯狂讲义
- java编程思想
- java核心技术
- 深入理解java虚拟机
- java程序员面试宝典
- java程序性能优化
- 实战java高并发程序设计
- spring实战
- 轻量级javaEE企业应用
- springBoot实战
- 分布式服务框架原理与实践
- 大型网站技术架构
- Hadoop实战
- Git权威指南
- Git官方讲解视频
- Redis实战