需要掌握的web后端研发基础知识列表

原始知识积累
MySQL(事务、索引、存储引擎)
Java基础(常用的集合类、JVM、Java基础语法、并发编程)
常用的中间件(Redis)
计算机网络(TCP/IP、HTTP等)

MySQL

事务

  • 事务特性(ACID)

  • 事务的隔离级别(读未提交、读已提交、不可重复读、序列化)

  • 分别能解决哪些问题(脏读、不可重复读、幻读丢失修改)

  • MVCC(多版本并发控制)

  • 事务的回滚(undo、redo日志)

索引

  • 索引有哪几种
  • 索引的底层实现,b+树和红黑树的比较、和b树的比较
  • 索引失效
  • 索引优化策略
  • explain慢查询优化

存储引擎

  • MyISAM 和 InnoDB 的区别
  • 两者之间索引结构的区别
  • 各自的使用场景

(共享锁、排他锁、行锁、表锁、间隙锁)
SQL语句(常见聚类函数的使用、表连接查询)

Java基础

集合类

  • HashMap 和 ConcurrentHashMap(基本上是场场必问,需要了解源码)
  • ArrayList、LinkedList、TreeMap、LinkedHashMap、HashSet等需要了解底层数据结构和各容器之间的优劣势
  • HashMap 和 ConcurrentHashMap在JDK不同版本的改动以及原因(JDK1.7、JDK1.8)
    常见基础(这个很多,可以参考其他面经,我这里只提几个比较经典的)
  • String为什么不可变
  • String、StringBuilder、StringBuffer的对比
  • 接口和抽象类的区别
  • 单例模式(几种实现方式的区别最好具体了解下,因为从这里可以问到JVM中的内存结构和JVM对于多线程的一些处理策略)

JVM(较重要)

  • 类加载机制
  • 常见GC算法
  • JVM内存模型
  • JVM运行时内存区域
  • 常见垃圾收集器(主要是CMS、G1,知道ZGC并且能说出原理是加分项)
  • 常见的启动参数
  • JVM内存溢出的分析过程
  • 锁(主要是synchrized、volatile这两个关键字在JVM中执行的行为)

并发编程

  • 创建线程的几种方式
  • 线程池原理以及参数含义
  • 死锁产生条件以及解决策略
  • J.U.C下部分类源码阅读
  • Lock接口下实现的锁和synchrized关键字的比较, 还有各自的优缺点 AQS(抽象队列同步器)

Redis

  • 常见用途
  • 底层数据结构(SDS、字典、跳跃表、链表、压缩数组、整数列表这几个都需要了解)
  • RDB 和 AOF 两种不同备份方式的比较以及优缺点(从各自原理、性能、稳定性答)
  • 跳表和红黑树之间的比较(从插入效率、实现方式、内存消耗以及特殊条件查询几方面进行比较)
  • SDS和原始字符串的比较(从缓冲区溢出、扩容方面答)
  • 字典和HashMap的比较(扩容方式、扩容大小)

计算机网络

TCP(需要深入了解)

  • TCP头部(大概知道头部能够传递哪些信息,常用的部分需要记住占据了多少bit)
  • 三次握手四次挥手(具体到两端之间的状态)
  • 每一次握手挥手失败的处理
  • 拥塞控制(慢开始,快重传、拥塞避免、快恢复)
  • 流量控制(零窗口的含义、接受窗口的协商)
  • Nagle(糊涂窗口综合症)
  • 常见的攻击(SYN泛洪攻击、DDoS)

HTTP

  • Get 和 Post 的比较
  • Session 和 Cookie 的比较
  • 常用的 HTTP 头部
  • 常用的 HTTP 状态码
  • HTTP1.0、1.1、2.0三个版本各自的特性
  • HTTPS中的SSL握手过程
  • 常见的攻击(CSRF、XSS)

你可能感兴趣的:(java)