最近开始准备找实习了, 在牛客网中看了些面经, 整理了100道常见的面试题, 希望感兴趣的可以一起看看, 把知道的答案和坑发表在评论中, 也可以方便后面人的面试, 后面我自己解答的答案也会发表在评论中
1. HashMap, HashTable, ConcurrentHashMap 的源码
- 解决hash冲突的方法
2. JVM组成, 可达性算法, 复制算法, 标记-清除算法, 标记-整理算法
3. 四种引用
4. OSI 七层模型
5. 如何使UDP变得可靠
6. TCP的滑动窗口
7. Session 和 Cookie的区别
8. TCP的TIME_WAIT 状态两小时后, 为什么是75s发一次通知?
9. 线程池参数, 线程池如何运行的
10. 单例模式
11. 解决内存泄漏
12. 算法: 利用数组完成栈的pop, push, isEmpty, 注意, 栈可以装任意类型
13. epoll和select 的区别
14. TCP中四次挥手中TIME_WAIT的作用
15. 流量控制
16. 流量控制中接收方的窗口大小由什么确定
17. TCP 粘包现象处理
18. 算法: 快速排序的原理
19. UDP怎么实现可靠的TCP连接
20. 输入一个Url到出现网页的过程
21. 软引用和弱引用的区别
22. 虚引用的使用场景
23. 泛型擦除, Super Extends 的区别
24. Java 多线程的状态
25. ReentrontLock 和 synchronized 的区别
26. 乐观锁和悲观锁的区别
27. 单例模式
- DCL
- 两次判断的作用
- volatile 的作用
- 指令重排序的理解
- 单例模式的其他实现方式
28. 算法: 反转单链表
29. join inner join left join 的区别
30. 大表查询优化
31. 如何建索引
- 最左原则
- 覆盖索引
32. B+ 树的数据结构
设计的好处? 与平衡二叉树的比较
33. ArrayList 和 LinkedList
34. 红黑树和平衡二叉树的比较
35. 项目中多线程的使用
36. 算法题: topK
37. Socket 的通信过程
38. 客户端Socket 可以调用bind() 方法吗?
39. 如何解析Http报文
40 .多态以及实现原理
41. 如何避免登陆的密码和用户名在请求报文中被人获取
-
https
42. UDP的使用场景
43. 如何设计UDP来传输不允许丢失的文件
44. cookie 和 session 如何保存用户状态
45. http 的无状态是什么意思
46. ping的工作原理
47. TCP三次握手后, 客户端拔掉网线会如何?
48. 线程池里面如何避免竞争
49. Http 中get 和 post 的区别
50. TCP如何保证可靠传输
51. 自增主键的缺点
52. 为什么Redis 快
53. SpringMVC的执行流程
54. Spring AOP 的原理, 动态代理的实现方式, JDK 和 cglib的区别
55. Mysql的主流引擎, 分别适用于什么场景
56. 索引的好处
57. 算法: 输入一个数组:1,3,2,4,1,2;输出出现次数最多的数字,如果次数最多的有多个,输出最先出现的那个,比如这道题1和2的次数相同,那么输出1
58. ARP的工作流程
59. 进程通信的方式
60. 死锁
61. ICMP的作用
62. 排序算法
63. 登陆模块加密算法
64. servlet 和 jsp的区别
65. 数据库索引
- 主键索引
- 非主键索引
- 聚簇索引
- 非聚簇索引
66. 项目亮点
67. MySql 的自增id 转换为UUID会有什么问题
- 索引查找效率不高(聚簇索引)
- uuid 太长, 匹配麻烦, 而且由于是随机容易导致插入的时候B树发生页分裂和合并等等, 效率低
68. 数据库慢查询的优化
69. 索引失效的场景
70. MySql 事务隔离级别
71. 项目中如何解决数据库幻读
- 锁
- select for update
72. 常量池放在JVM内存区域中的那个
常量池位于方法区, 方法区在1.7及以前属于永久代, Java8之后放在元空间当中
1.8后将string常量池和静态变量都放在堆上, 其他数据移动到元空间
为什么这样改变?
73. Spring 统计方法时间
AOP, 创建该方法的切点, 建立一个环绕切面, 打印日志
74. AOP的实现
- 动态代理(JDK CGLib)
75. ForkJoinPool
76. Http 请求报文格式
77. Http 状态码
- 300 系列
- 400 系列
78. Http 和 Https 的区别
79. 对称加密和非对称加密
80. 算法: LC153, LC55
81. 面向对象, 重写重载
82. 异常
83. ACID
84. HTTP的长连接和短链接
需要设置什么参数才能让http变为长连接
85. 粘包和半包, 心跳
TCP的保活机制, 拔掉网线后, 服务端会定时 发送探测报文到客户端, 默认保活时间是7200s, 超时没有回复就主动关闭连接
86. 算法题: 判断链表有环 LRU的实现
87. 如何保证http报文完整
- 分段解析客户端报文, 发送响应报文用指针的形式来保证已经传输的数据的可靠性
88. 如果Cookie被禁用, session还能使用吗
89. Redis的持久化机制
90. HashMap的死锁
91. Mysql的MVCC
92. Mysql如何实现一个并发的读写
93. Hash 索引和B+树索引
94. 思考如何设计一个AOP
95. IOC使用的设计模式
96. 抽象工厂模式
97. Redis 的雪崩
98. AQS
99. Redis 相关的设计题
1、如何实现的单点登录?
2、如何实现的热门排行功能?
3、如果数据量很大,有几十万篇文章你应该怎么存储热门排行的文章?
4、如果突然有一篇文章点击量很快变成热门,应该怎么处理?
5、如果有人恶意使用短信接口应该怎么做?