饿了吗Java后端面经(严刑拷打50分钟)
- 自我介绍
- 哪一年开始学Java的
- JVM的内存结构
- JVM怎么判断一个对象没有被使用(引用计数法,可达性算法)
- 堆空间的基本结构(伊甸园,幸存区from/to,老年代)
- final和finally和finalize的区别
- 如果try中return 2,finally中return 3。请问最终会返回多少。(3)
- 调用System.gc后,Java内存会不会马上进行回收(不会,只有在justRanFinalization=true的时候才会执行)
- OSI的七层协议
- 五层模型是因为什么协议而从七层和四层综合成五层的(有没有大佬知道的,我是真不道啊)
- TCP和UDP的区别
- 四次挥手
- 为什么第四次挥手和第二次挥手不能合并确保数据能够完整传输。(按照常理的话,第二次和第三次挥手应该一起回复FIN=1和ACK=1的,但是因为服务器端可能有数据没发完,所以不能也立刻去主动申请关闭,所以要把ACK和FIN分开,再发送FIN报文给主动方,告诉主动方同意关闭连接,所以这里的ACK报文和FIN报文多数情况下都是分开发送的。)
- 线程和进程的区别
- 进程和进程之间数据共享的方式(八种)
- 乐观锁和悲观锁之间的区别
- 乐观锁和悲观锁的适用场景(读多,写多)
- sql语言怎么实现乐观锁和悲观锁(for update,version版本控制)
- 介绍下项目,项目是独立做的还是同学一起的,团队有几个人,你自己负责哪些功能
- 单点登录是怎么实现的
- 为什么用JWT,常见的实现登录的方式有哪些(cookie+session,redis+token,JWT)
- 用户登录是否有过期时间,再次登录时,过期时间是顺延还是继续计时(顺延)
- cookie和session的区别(位置,安全性,生命周期,保存数据类型)
- cookie中存了什么样的信息,可以判断用户有否处于登录态(Session ID)
- cookie被拿到以后,换一个机器访问,可以访问吗
- cookie被伪造的话,会导致什么问题,怎么解决
- redis做登录的话,其中存了什么东西(token)
- 那redis是怎么判断当前的请求是用户A的请求还是用户B的请求(前端header中的key,然后解密)
- redis中的信息是加密的还是已经解密的
- redis是否支持持久化(RDB,AOF)
- redis有哪几种用来做容灾的架构设计策略(单机,主从复制,哨兵,集群)
- 主从模式中,主库和从库哪个负责读哪个负责写(主)
- 哨兵模式中master挂了,接下来会做什么事情(Raft)
- 介绍下Raft算法(强推一个网站,讲的可以说是很详细了)
- 哨兵模式下,写redis是单台机器提供写的能力还是多台机器提供
- 如果写的数据量很大,redis还有其他的方案能支持更多的写吗(Redis切片集群)
- redis和mysql怎么保持数据一致性(延迟双删,异步更新缓存(基于binlog的同步机制))
- redis中的数据被删除以后,热点数据打到数据库,怎么保证数据库不会被击垮(uu萌有会的吗,我答的秒杀的那一套,消息队列,削峰什么的,也不知道对不对)
- 缓存击穿(修改过期时间,锁,布隆过滤器)
- 流量削峰怎么做(排队,答题,分层过滤)
总结:还是自己太菜了,稍微挖的深一点了,就答不出来了,感觉八股文还是要多背,一天不看就生了,两天不看就看不懂了,一周不看,之前看的全忘了。项目的话,还是不够熟悉,感觉回头要自己独立的手敲一遍。要不然面试官问的问题我都听不懂。
话说今年真的有公司有暑假实习的hc吗,我怎么到现在了一个暑假实习的offer都没有。
孩子已经看开了,就当是给秋招练手的吧,我就不该奢求暑假实习,水平还不到
#实习##面经##java##后端##阿里#