个人成长背景
坦白说,接触编程是不得已,从小学习成绩就不好,高中没上一中,家里对我也没有寄予太多的期望,后来高考成绩也在意料之中,勉勉强强上了一个二本院校,因为自己也没有什么喜好,寻求爸妈的意见,父母说计算机赚钱,于是就填报了计算机科学专业。
对了,地点位于上海,某工程大学本科。进入大学之后,才真正开始接触到计算机技术,了解到编程是咋回事。当我真正意识到编程的魅力之后,才突然发现自己的人生似乎终于有了一样喜欢的东西,所以,虽然自己读的是个二本院校,但我与其他的编程学子一样,都拥有大厂梦。
已经大四了,目前没有考研的打算,一是深知考研不是自己的追求,二是想要早些开始实操,希望能多积累一些经验。今年的校招s时,投了不少厂子,当然我很有勇气的尝试了BAT一线大厂,但凉的速度有点快,一开始脸上压根就挂不住。直到接近尾声的时候,我收到蘑菇街offer的那一刻,才知道“欣喜若狂”是一个什么概念!
校招面试经历
阿里一面凉经:
大学有没有做过什么项目(聊了自己在学校做的一些大大小小的成绩)
口述程序整数反转
zk的作用
Kafka的partition
Kafka中一个broker故障,你会怎么处理?
flink如何实现exactly-once语义?
说一下flink的实现原理
其他流处理框架与flink的区别
spark如何处理流处理
storm如何处理流处理
lambda框架原理
如何解决超卖问题
如何用算法解决高并发
如何大数据快速查询一条数据
redis存储数据,在工程中的作用
怎么做evaluation验证flink效果
腾讯一面凉经:
JVM
Linux内核
zookeeper
Kafka消息队列
数据库MySQL和Redis
分布式事务
微服务框架
网络攻击
代码耦合性
项目完成背景
TCP,UDP
平时怎么学习的?
Spring MVC框架
BASE原则
分布式原理CAP原则
Java反射
蘑菇街(共3轮面试,3轮面试的时间都在1小时左右)
一面(纯技术面):
- 队列的实现,需要注意的地方
- 快速排序的实现、时间复杂度分析
- B树和B+树的区别、应用
- HashMap的实现,扩容机制,扩容时如何保证可操作
- Redis扩容机制(渐进式单线程扩容)
- Spring AOP的原理
- Spring IoC的原理,如何实现,如何解决循环依赖
- 两线程对变量i进行加1操作,结果如何,为什么,怎么解决
- CAS概念、原子类实现原理
- synchronize底层实现,如何实现Lock
- AQS有什么特点
- 可见性的底层原理
- JVM内存模型,为什么要这么分
- 本地方法栈和虚拟机栈的区别
- 如何查看JVM参数是否正确
- TCP三次握手,如何实现
- Socket编程底层如何实现
- select和epoll的区别
- 算法:蛇形打印二叉树
二面(项目面+技术面):
- 项目详聊(问了很多、很细)
- Innodb多列索引
- MySQL默认事务隔离级别,不可重复读是什么意思,如何实现可重复读
- Redis服务端有20GB内存,现在要缓存200GB数据,如何处理
- 算法:给出[[1, 2], [3, 5], [8, 8], [15, 16], [32, 38]],求间隔
三面(综合面):
- 谈谈Java垃圾回收机制
- 算法:给出两个升序数组A、B和长度m、n,求第k个大的数
- 算法:给出数组A,长度为n,数组中元素的值位于[0, n - 1]之间,求是否有重复元素
- 职业规划
- 平时都是怎么学习的
- 最近有在学什么,分享一下
总结
经历过这几轮的面试之后,最想要强调的一点就是一定要让自己保持自信,以自信的状态去面试会给自己加分不少,而且在这种状态下自己也能发挥得更好。最开始我面试腾讯和阿里的时候,因为心理压力很大,所以整个过程都特别紧张,导致自己的发挥不是很好,因此结果也在意料之中。最后本没有抱多大希望,所以心态特别平稳,面试字节跳动时就感觉比较轻松,最终才顺利通过,拿下offer的。
当然,幸运永远眷顾的是有准备的人,如果你也正准备校招,那么一定要多刷题,多复习,毕竟面试除了考察简历、项目实践以外,基础知识也非常重要。
最后下面是我总结的一些经典面试题目及答案,内容涵盖: Java,MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL.Spring.Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux等技术栈
有需要资料的朋友可以 点击这里,回复暗号:MS 免费获取资料下载地址
最后,祝各位都能够拿到一个满意的offer!