新技术

  • Java 8
    • lambda表达式、Stream API、
  • Java 9
    • Jigsaw、Jshell、Reactive Streams
  • Java 10
    • 局部变量类型推断、G1的并行Full GC、ThreadLocal握手机制
  • Spring 5
    • 响应式编程
  • Spring Boot 2.0

    性能优化

  • 使用单例、使用Future模式、使用线程池、选择就绪、减少上下文切换、减少锁粒度、数据压缩、结果缓存

    线上问题分析

  • dump获取

    • 线程Dump、内存Dump、gc情况
  • dump分析
    • 分析死锁、分析内存泄露
  • 自己编写各种outofmemory,stackoverflow程序
    • HeapOutOfMemory、 Young OutOfMemory、MethodArea OutOfMemory、ConstantPool OutOfMemory、DirectMemory OutOfMemory、Stack OutOfMemory Stack OverFlow
  • 常见问题解决思路
    • 内存溢出、线程死锁、类加载冲突
  • 使用工具尝试解决以下问题,并写下总结
    • 当一个Java程序响应很慢时如何查找问题、
    • 当一个Java程序频繁FullGC时如何解决问题、
    • 如何查看垃圾回收日志、
    • 当一个Java应用发生OutOfMemory时该如何解决、
    • 如何判断是否出现死锁、
    • 如何判断是否存在内存泄露

操作系统知识

  • Linux的常用命令
  • 进程同步
  • 缓冲区溢出
  • 分段和分页
  • 虚拟内存与主存

    数据库知识

  • MySql 执行引擎

  • MySQL 执行计划
    • 如何查看执行计划,如何根据执行计划进行SQL优化
  • SQL优化
  • 事务
    • 事务的隔离级别、事务能不能实现锁的功能
  • 数据库锁
    • 行锁、表锁、使用数据库锁实现乐观锁、
  • 数据库主备搭建
  • binlog
  • 内存数据库
    • h2
  • 常用的nosql数据库
    • redis、memcached
  • 分别使用数据库锁、NoSql实现分布式锁
  • 性能调优

    数据结构与算法知识

  • 简单的数据结构

    • 栈、队列、链表、数组、哈希表、
    • 二叉树、字典树、平衡树、排序树、B树、B+树、R树、多路树、红黑树
  • 排序算法

    • 各种排序算法和时间复杂度 深度优先和广度优先搜索 全排列、贪心算法、KMP算法、hash算法、海量数据处理

      大数据知识

  • Zookeeper

    • 基本概念、常见用法
  • Solr,Lucene,ElasticSearch
    • 在linux上部署solr,solrcloud,,新增、删除、查询索引
  • Storm,流式计算,了解Spark,S4
    • 在linux上部署storm,用zookeeper做协调,运行storm hello world,local和remote模式运行调试storm topology。
  • Hadoop,离线计算
    • HDFS、MapReduce
  • 分布式日志收集flume,kafka,logstash
  • 数据挖掘,mahout

    网络安全知识

  • 什么是XSS

    • XSS的防御
  • 什么是CSRF
  • 什么是注入攻击
    • SQL注入、XML注入、CRLF注入
  • 什么是文件上传漏洞
  • 加密与解密
    • MD5,SHA1、DES、AES、RSA、DSA
  • 什么是DOS攻击和DDOS攻击
    • memcached为什么可以导致DDos攻击、什么是反射型DDoS
  • SSL、TLS,HTTPS
  • 如何通过Hash碰撞进行DOS攻击
  • 用openssl签一个证书部署到apache或nginx