复习过程
- 项目准备;
- leetcode:刷完剑指之后每天会刷2-4道leetcode
- java基础: 主要刷面经、重点掌握垃圾回收机制
- 操作系统: 之前没学过,用几天时间看了一下最重要的进程线程、死锁、消费者生产者、哲学家问题、银行家算法
- 计算机网络:花几天时间复习了一下,重点复习tcp(三次握手四次挥手拥塞控制流量控制)、udp、https
- 数据库: 重点了解了索引的实现以及引擎的区别
- 数据结构和算法: 主要通过剑指offer和leetcode进行复习
- 其他:期间也做过大大小小好几次笔试,还有一些往届练习卷
腾讯
一面(3.13电话面)
- 自我介绍
- 介绍项目以及项目遇到的难点
- java的hashmap是否安全?hashmap、hashtable、concurrenthashmap的区别、底层和实现
- mysql索引的底层实现
- jvm垃圾回收机制
- tcp、udp区别和适用场景
- tcp三次握手、四次挥手,为什么挥手不能只有三次
- 线程和进程的区别
- 进程通信的方式有哪些
- 堆是线程共有还是私有,堆是进程共有还是私有,栈呢
- 了解过协程吗(我:携程???不了解呜呜呜)
- mysql查询优化
- 快速排序的时间复杂度、原理(口述算法)
- 最近在看什么书
- 除了腾讯还投了其他的公司吗
- 问我愿不愿意转go,并推荐我了解一下协程,最后让我耐心等待,面试的人太多,需要对面试的同学进行挑选,两周内会告知我结果
- 有什么想问的(对我的评价和学习建议)
二面(3.22现场面)
- 自我介绍
- 问我为什么发现自己不喜欢做客户端(简历中有一个安卓实习项目)而想做后台
- 介绍项目(一个电商小程序)
- 项目中的商品是否有考虑过xxx(忘记叫什么了,意思就是是否有考虑过同一种商品有不同的颜色、规格,在数据库中如何区分这些不同)
- 介绍项目的支付流程,并画一下流程(白板)
- 介绍一下订单状态码的含义,以及交易过程中订单状态码如何变化
- 如何防止商品的超卖现象
- 项目是否具有秒杀功能
- 并发的时候,如何保证性能
- 在分库之后,如何设计id
- 在分库后,一条插入请求,在上层不做处理,如何直接在数据库找到相应的库并插入库中的某个表
- 当服务器的cpu一直很高时,如何找出原因
- 是否用过调试工具
- 当项目一直无法访问的时候,如何定位错误
- 介绍一下aop和ioc
- 如何将一个ip地址由点分制(xxx.xxx.xxx.xxx)和int类型间进行相互转化
- 如何判断一个数是否为2的n次方
- 可实习时间
- 是否愿意转go
- 有什么想问的(对我的评价和学习建议)
hr面(3.26电话面)
- 自我介绍
- 介绍一下实习经历
- 实习中遇到的困难以及如何解决这些困难
- 未来计划,是否读研
面试总结
一面的问题都很中规中矩,唯一卡住的就是协程了,确实不会,只能和面试官说我不了解。
主要和大家分享一下二面的面试体验吧。因为二面自我感觉答得不是很好,有很多问题当时没记录下来,现在一时也想不起来。所以上面的面经并不完整。
当时面试完走出大厦以为自己挂掉了,结果刷新了一下状态发现变为hr面,真的超级意外。现在想想大概是因为我在遇到不会的问题时,没有直接说自己不会,尽量把答案往自己知道的方向回答。
- 第7题,项目没有秒杀功能我也没做过,但是了解过一些,只能和面试官说确实没有,然后让他听我讲一下我的实现思路,期间又让面试官挖出了很多问题考我TAT
- 第9题、第10题,面试官要求我在分库的场景下回答问题,我先回答了分表情况下如何实现,他肯定了我在分表下的做法,但是分库情况还需要另外考虑,我实在想不出来,才和他说自己没有办法实现,但这总比我直接说自己不会好。
- 第13题,如何定位错误的时候,先讲了一下无法访问的几种情况,以及大量tcp处于time_wait、close_wait这两种状态的原因和解决方法。
- 面试结束后,等电梯的时候突然想起面试中一个一直理解错误导致解不出的问题,发现自己想歪了之后赶紧编辑完答案又给面试官发了过去,这个答案后来得到了面试官的认可。
最后
这次要给大家分享总结的东西就是这些了
资料全都放在——***我的学习笔记:大厂面试真题+微服务+MySQL+Java+Redis+算法+网络+Linux+Spring全家桶+JVM+学习笔记图***
最后再分享一份终极手撕架构的大礼包(学习笔记):分布式+微服务+开源框架+性能优化
ocs.qq.com/doc/DSmxTbFJ1cmN1R2dB)***
最后再分享一份终极手撕架构的大礼包(学习笔记):分布式+微服务+开源框架+性能优化