• Java 面试 知识清单


    一、Java:

    1. java语法基础:不用特别记,如果有问到不会的,再去查查。基础弱的可以看这个
    2. java容器(非常重要):HashMap、ArrayList、ConcurrentHashMap实现原理,HashMap的扩容操作。看这个注意HashMap的扩容操作,在1.7下先判断是否需要扩容再插入,而1.8是先插入,再判断是否需要扩容。
    3. java虚拟机:
      1. 运行时数据区域:堆、栈……
      2. 垃圾收集:重点是垃圾收集算法,垃圾收集器有时间再看,没时间就不看。
      3. 内存分配与回收策略
      4. jvm调优:这个我不擅长,但有时候会问到
      5. gc日志排查:结合项目讲如何排查gc时间太长,关键是gc日志里的real_time实际gc时间

    二、Java多线程 & 并发:看这里面的:一、线程,四、互斥同步,七、J.U.C,九~十三

    1. 线程
    2. 线程池ThreadPoolExecutor所有参数的含义(非常重要)
    3. 互斥同步
    4. Java自带保证线程安全的方法,以及对其优化后的锁
    5. synchronized和Lock的区别
    6. 结合自己的项目,讲如何处理高并发,如高并发的三板斧:缓存、限流、降级。以及容灾\熔断\限流\缓存设计\单点故障如何解决:https://pdai.tech/md/arch/arch-y-ratelimit.html#%E9%87%87%E7%94%A8atomicinteger
    7. 缓存:关键词:本地缓存和分布式缓存2种方案
    8. 限流
    9. 降级
    10. 负载均衡:常见的负载均衡策略,如何用代码实现负载均衡
      1. 轮询/随机/IP地址 hash/加权轮询/加权随机/当前处理请求数最小的机器

    三、MySql:

    1. MySql索引的数据结构(B+树)
    2. mysql的原理:搜一下《丁奇mysql45讲》的pdf,一定要看里面的前3章:
      链接: https://pan.baidu.com/s/1EC7xdw58N-_jJHh4XtjGcw?pwd=hku9 提取码: hku9
      一定要看《丁奇mysql45讲》里的前3章:基础架构、日志、事务隔离!
    3. mysql性能调优(也可以理解为索引):套到自己的项目里讲案例https://www.cnblogs.com/zhangyinhua/p/7620964.html
    4. mysql索引失效的场景
    5. mysql聚簇索引和非聚簇索引
    6. mysql索引设计(非常重要):面试官会给一个场景,让你设计mysql表、索引
      1.银行转账场景:写建表语句、根据查询场景建索引。注意要考虑A给B转账的同时,B给A转账造成的死锁,以及如何解决。
    7. 编写sql语句:常规的关联查询;分组然后每组取1个;部分字段重复的去重。

    四、半吊子Redis知识清单:(我用的少,这个我不是很擅长)

    五、半吊子大数据知识清单(之前没做过大数据的小伙伴,就不用看这个了

    • spark运行原理:

      • 参考:https://tech.meituan.com/2016/04/29/spark-tuning-basic.html的最后一节
      • 重点关注:
        • driver、executors、Cluster Manager
        • job、stage、task的关系
        • 常见面试问题:为什么 spark shuffle 是很耗费的
    • 性能优化:

      • 结合到项目里讲
      • 参考https://tech.meituan.com/2016/04/29/spark-tuning-basic.html
      • 对多次使用的RDD持久化(cache、persist)
      • 大变量先广播(任务数据、规则)
      • 尽量避免使用shuffle类算子
      • 解决数据倾斜
      • 删除掉无用数据
      • ……
    • 问题排查和性能调优:结合之前的排查经历讲:

      • 数据倾斜
      • 减少数据量
      • 数据量膨胀问题排查
    • 离线任务运维:

      • 遇到过的问题,及解决方案
    • Clickhouse(如果简历里要写的话):

      • 为什么Clickhouse比mysql在某些场景下更快
  • 相关阅读:
    java毕业设计旧物置换网站(附源码、数据库)
    ZYNQ之FPGA学习----Vivado软件使用
    数据结构栈的实现
    设计模式——单例
    如何读写txt文件 C++读和写txt文件操作
    基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客?
    swift 天气
    java计算机毕业设计家庭财务管理系统设计与实现MyBatis+系统+LW文档+源码+调试部署
    时尚零售企业商品计划管理的数字化之旅
    超级详细 SQL 优化大全
  • 原文地址:https://blog.csdn.net/qijingpei/article/details/125428885