Skip to content

Latest commit

 

History

History
165 lines (115 loc) · 3.68 KB

超简版面试清单.md

File metadata and controls

165 lines (115 loc) · 3.68 KB

前言

面试必备技能清单,这里不会详细论述,更多的是清单列举,罗列一些关键字和链接注释。

数据结构与算法

Java

  • Java 基础部分

  • Java 集合框架
    • ArrayList 与 LinkedList
    • Hashtable、Hashmap 与 ConcurrentHashmap
  • Java 并发编程
    • 线程状态
      • 新建、可运行(运行和就绪)、阻塞、无限期等待、限期等待、死亡
    • 实现线程三种方式(继承Thread,实现 Runnable 接口,实现 Callable 接口)
    • 并发两个关键问题
      • 线程通信
      • 线程同步
    • volatile 和 synchronized
    • lock 和 synchronized
    • Java内存模型(JMM),解决并发中的可见性,原子性,有序性问题
  • Java IO
    • 序列化
    • AIO、BIO、NIO
  • Java 虚拟机
    • 运行时数据区
  • Java 设计模式
    • 单例模式
    • 工厂模式

Java Web

  • Spring
    • IOC
    • AOP
    • DI
  • SpringMVC
    • 执行流程
  • 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个方面来对比
  • 线程间通信

    • synchronized
    • while轮询
    • wait() / notify()
    • 管道
  • 进程通信

    • 直接通信
    • 间接通信

计算机网络

  • 应用层

    • HTTP请求和响应报文
  • 传输层

    • 为什么三次握手,两次不行吗
    • 四次挥手 TimeWait 作用
    • TCP可靠传输

分布式

  • 分布式通信协议

    • http
    • https
    • RESTful API
  • 分布式锁

项目

  • 扫码登录原理

  • Cookie 和 Session 的原理

  • 单点登录

  • 参考资料