1. Type

八股文 问题处理 实战与技术广度 基础与底层原理

2. Code

  1. 如何实现多继承(不是真正的多继承,指一个类包含两个其它类的功能)

  2. equals()方法需要具备自反性、对称性、传递性、一致性,分别写几个违背对称性、传递性、一致性的示例代码

  3. 说出3到5个常见的运行时异常

  4. 说出5个以上Object类中的方法

  5. 微服务单点登录实现原理

  6. MyBatis注入与执行原理 7。记住我功能实现过程

  7. jdk8之后新特性

  8. 线程池关键参数及其意义

  9. fixedPoll singlePool cachedPool 使用的队列

  10. 设计模式

  11. 内存溢出时被占用的内存会被回收吗

  12. 内存溢出时线程会终止吗

  13. 内存溢出问题如何排查

  14. 常用单元测试框架与单元测试注意事项

  15. 页面卡住问题排查方法与思路

  16. 云原生

  17. 数据权限实现思路

  18. Spring Security框架原理(用过的话)

  19. OAuth2

  20. 什么是系统调用、物理内存与虚拟内存

  21. @Scheduled实现原理

  22. websocket连接过程

  23. SpringMVC请求处理过程

  24. spring-jdbc事务使用方式

  25. jdk中日期相关的类以及塔曼的区别

  26. 请求参数校验与Bean Validation

  27. 用户登录功能的实现过程

  28. SpringMVC的拦截器以及它的使用场景

  29. 常用的日志框架以及它们之间的关系

  30. CORS是什么

  31. GET与POST的区别,都用POST会有问题吗

  32. Java中有哪些函数式接口

  33. http缓存机制与缓存相关的响应头

  34. SpringMVC用的哪个库实现Json序列号与反序列号,Jackson与Fastjson的比较

  35. http2新特性,Spring Boot支持使用http2吗

  36. Spring Boot常用的有哪些starter,分别用来做什么

  37. jdk中常用的排查问题工具

  38. Spring Boot Actuator的作用

  39. Maven同一个依赖多个版本怎么选择

  40. Spring Boot应用怎么修改日志级别

  41. Spring Boot默认用的什么日志框架

  42. Spring Boot怎么做国际化

  43. Spring Boot应用怎么打包成容器镜像

  44. Linux上用什么命令把文件中一个词替换成另一个词

  45. 怎么监控Spring Boot应用

  46. k8s中怎么暴露服务

  47. k8s中StorageClass是什么

  48. 详细设计要包含哪些内容

  49. 日志太多刷太快日志看不清怎么办

  50. 单元测试怎么测试Controller,需要new Service吗,怎么测试DAO层,MyBatis的单元测试怎么做

  51. 远程调试怎么用,线上环境怎么调试

  52. 性能测试工具有哪些,测试时关注什么数据

  53. 泛型 类型擦除

  54. vim查看文件内容时显示行号

  55. 从倒数500行开始查看日志用什么命令

  56. 一个Java程序开机自启动怎么实现

  57. 修改一个文件的属组和属主用什么命令

  58. 修改一个文件的读写执行权限用什么命令

  59. volatile使用场景

  60. Spring Cloud中做负载均衡的子项目

  61. curl常用参数

  62. SpringMVC根据请求头路由怎么实现

  63. 日常学习途径

  64. B树 B+树

  65. 解决Hash冲突除链表外的其他方案

3. ThreadLocal

  1. 使用WeakReference是因为ThreadLocal可能在线程结束之前就已经使用完了,如果不用弱引用,线程结束前ThreadLocal都不能被回收,这里与方法局部变量区别在于方法执行完成后其局部变量就能被回收,而ThreadLocal是Thread的属性,不用弱引用的话就只能等线程结束后再被回收;另一方面ThreadLocal是在多个线程中使用的,如果是强引用只要存在一个线程没结束ThreadLocal就不能被回收。

  2. 内存泄漏问题与弱引用无关,指的是在tomcat这类连接池的场景,线程根本不会结束,例如在springMVC的controller中声明一个ThreadLocal用于保存特定请求参数,请求结束后由于线程并未结束,之前保存的参数也仍然在内存中。

  3. 另一种内存泄漏的场景就是ThreadLocal已经被回收了但线程还没结束,其中的Entry也已经失效了但还不能被回收,由于Value不能回收,它的ClassLoader也不能被回收,因此可能同时会导致ClassLoader内存泄漏。

    If a short-lived object is held for a long time by a long-lived object, it will cause the short-lived object to not be released after use, resulting in memory leaks.
    https://stackoverflow.com/questions/17968803/threadlocal-memory-leak
    https://www.programmersought.com/article/88854924004/
    https://java.jiderhamn.se/2012/01/29/classloader-leaks-iv-threadlocal-dangers-and-why-threadglobal-may-have-been-a-more-appropriate-name/