当前位置: 首页 > 面试经验 >

水滴9.27 Java后端 一面

优质
小牛编辑
121浏览
2023-03-28

水滴9.27 Java后端 一面

面试官是一个八年工作经验的架构师,还是非常感谢面试官给与的一次面试机会的,让我的视野又被打开很多(不能只注重怎么用在哪用,还得知道底层之间的联系)。

开场面试官简介了一下对我的了解以及查看了我的个人博客和CSDN等开放社区,之后面试开始。

1. 自我介绍。

2. 熟悉的技术栈有哪些?

3.  JVM内存模型介绍一下。

4. JVM内存模型的意义?(保证多线程下缓存可能带来的数据不一致性)

5. 了解过happen-before吗?简单介绍一下(了解~但不多)(如果一个操作的执行结果需要对另一个操作可见,则需要保证happen-before原则。

6. happen-before为了验证什么?

7. JVM内存结构说一下?

8. 这几个结构哪些会发生OOM?

9. 对象分配一定在堆上吗?

10. 为什么要在栈上分配?

11. 栈的结构了解吗?

12. CPU上下文切换,切换的是哪些?(我说的保存PC和栈内容)

13. 保存栈的全部内容吗?(是的?)

14. 什么是动态代理?

15. 动态代理应用在哪些方面?

16. CGLib是静态代理吗?

17. 字节码增强技术了解吗?

18. 你觉得什么是字节码增强技术?

19. 了解字节码增强技术在哪的应用吗?(AOP?)

20. 了解设配器模式吗?

21. 适配器模式解决什么问题?

22. solid原则.....(就是面向对象设计的原则)。

23. 什么是依赖倒置?(我说的不太学术,应该说依赖抽象)

24. CMS了解吗?说一下过程?

25. CMS做了哪些优化?

26. CMS会出现失败的场景吗?降级的场景???

    并发回收失效和晋升失败

27. 有看过GC日志吗?

28. 看GC日志主要关注哪些呢?(我说的看当前堆大小。。。)

29. GC中是包含堆的容量占比吗?形式是什么样的?

30. 如果出现了OOM了怎么排查?比如堆内的。

    这里面试官给我科普了一下,堆栈是有大小设置的,因此如果发生OOM和实例机的内存占用问题关系是不大的。此时看内存是没用的。常用的方式是jmap dump查看最大对象的大小。并且在dump的时候还需要考虑生产环境的影响,dump可能带来用户请求的失败等等。这里严厉批评了我,呜呜~

31. i++是不是线程安全?

32. volatile 修饰后就变线程安全了吗?(这当时脑子抽了。。。。)

33. 什么是CAS?(回答要点应该是cas就是操作系统提供的一个原子操作,关键在于一个指令级)

34. AQS了解吗?

35. AQS怎么实现公平和非公平的?(脑子又抽了)

36. countdownlatch了解吗?应用场景是什么?

37. 以信号量的方式控制线程怎么处理?

38. ThreadLocal的应用场景?

39. 能解决什么问题?(安全?存储?并发?)

40. ThreadLocal 使用过程注意事项?

41. ThreadLocal一直set有什么问题?

42. 引用分为几种?区别是什么?

43. hashmap不安全在哪?1.7-1.8 

44. hash冲突算法有哪些?

45. ThreadLocal哈希算法?

46. 类加载哪个阶段会发生静态变量初始化?


47. 什么会触发类加载?

    1. 创建类的实例
    2. 访问类的静态变量
    3. 访问类的静态方法
    4. 反射
    5. 初始化一个类的子类
    6. 虚拟机启动时,定义了main方法的类

48. 常量会不会触发类加载?

49. 访问final修饰的静态变量时,**不会触发类加载**,因为在编译期已经将此常量放在常量池了。

50. 类的唯一标识符是什么?

51. 怎么知道类有没有被加载?

52. 了解类加载隔离吗?

53. MySQL索引数据结构?为什么用B+?B+特点是什么?

54. MVCC简单描述一下?

55. 幻读可重复读的区别?

56. 可重复读可以解决幻读吗?

57. 间隙锁主键上锁和普通字段上锁区别?

58.  in和exist的区别?

59. 间隙锁如果数据不存在怎么锁?

60. 间隙锁能不能共存?

61. 锁的种类?

62. 怎么上写锁?怎么上读锁?

63. redo log和undo log的区别?

64. redo log 和binlog怎么保证一致性?

65. redo log成功binlog失败

66. redis内部数据结构?

67. redis的String为什么使用SDS作为数据结构?

68. redis跳表是什么样的结构?

69. 跳表插入过程?

70. 跳表的rank怎么存储的?

71. IOC容器有哪些?

72. BeanFactory和FactoryBean的区别?

73. FactoryBean获取对象方法是什么?

74. Spring容器和SpringMVC容器怎么集成的?

75. Spring Cloud的组件有哪些?

76. IO有哪些?

77. 同步异步?阻塞非阻塞?

78. 怎么理解同步非阻塞?

79. Netty epoll是什么?(醉了当时脑子抽了说没听过。。。主要他说是netty里面的呜呜,多加个select我就能想起来了)

80. 什么是boss线程?什么是work线程?

81. 序列化反序列化在哪层?

82. 什么是粘包拆包?

83. 粘包拆包受什么限制?(我说的物理元件限制)

84. 什么元件?(MTU)

85. Netty Nagle 算法?

86. RPC需要开启nagle发送吗?

87. RPC是否可以使用Linux的keepalive保持心跳?

88. http 403什么意思?

89. 304什么意思?

90. 什么是零拷贝?

91. 零拷贝的实现方式?

92. 什么是虚拟内存?

93. Linux统计文件夹下文件数量什么命令

94. 看机器负载怎么看?

95. 怎么改用户权限

96. CAP是什么?

97. Base是什么?

98. 什么是分区容错性?

99. 一致性算法有哪些?(希望我说paxos和raft)

100. zookeeper怎么保证强一致性?

居然发现刚好100~

反问:

1. 您工作几年了?
2. 您在工作中负责什么?
3. 对应届生加入您的团队,您对应届生的期望是什么?(编程基础、算法数据结构设计模式、框架要懂、Linux网络内存等)

#水滴筹##秋招#
 类似资料: