工作两年多的渣渣社招终于拿到阿里、字节、美团等offer,感谢大佬的这份面经,现在分享给大众!

前言

楼主本科渣211,硕士华科,专业均SE,校招的时候没啥实习经历,进大厂工作两年多,做后端开发的工作,没有涉及到高并发的case,也没有大流量的项目,也没有必须引入某些中间件或者nosql才能解决业务问题的场景,简称“三无”,只能尽量在简历里矮子里面拔将军,写一些可能有些价值点的内容。社招过程中拿过美团、货拉拉、微众、阿里、字节的offer,最终选择字节。

关于社招的最大感受

校招的时候因为没参加过实习,基本全是实验室的玩具项目,业务复杂度跟技术复杂度可能O(1)级别,最多的面试基本就是基础知识,框架原理等,没啥好说的,项目随便讲讲也就过了。

社招的时候如果你做的领域或者方向跟面试的岗位不搭界的话,那么社招面试基本上难度会陡然上升,全靠技术硬实力;如果你是相似的领域,那么可能会项目涉及的很多,技术没有那么难,如果你刚好是他们所需要的一个领域模块,那么你就会有更大的机会面试成功。

社招面试项目很重要,不光是你项目本身的技术复杂度,还有业务复杂度,你本身在项目中担任的什么角色,遇到过什么问题,是技术瓶颈问题,还是业务问题,怎么解决的,这几个问题是非常重要的

很多同学包括我自己一开始也没有头绪,看很多面经都说要对自己的简历滚瓜烂熟,对自己的项目烂熟于心,所以到底是什么算烂熟于心,仅仅是把简历写的内容背下来吗?

下面总结了一些问题,要注意自己一定要在自己的逻辑里面自洽,不能前后矛盾,前因后果要想清楚。也可以自己不要把所有问题都说满,可以故意漏下问题,等面试官提问(面试套路,自己主导问题方向)。总之,不然可能一个不是这个范围的问题把你问到了,你不知道如何回答,会给面试官一个不好的印象(为啥你自己的项目你都没有吃透?)

最后总结下社招面试最主要的几种问题:

  • 1 你项目为什么这么设计?
  • 2 这么设计为了应对什么样的问题?你这样设计有什么好处,获得了哪些收益?
  • 3 这么设计有什么瓶颈吗?遇到了什么问题?这么设计有哪些地方不好的?考虑不周的?
  • 4 针对问题怎么解决的?针对不好的地方怎么去优化?
    假如你是大厂出来的,如果面试的时候一问三不知,或者两不知,或者面试被一问,因为自己的问题没有准备好而导致卡壳或者思考不周,那面试就会大打折扣,这时候大厂反而不是光环了,而是一个问题。(大厂应该都还可以,怎么到你这不咋行了呢?)
    面试一定要自信。本来应聘就是双向选择的过程,面试的公司也不是非你不进,不要因为你是面试者就姿态很低,一种乞求面试官给你一份工作的姿态,这样是不对的。好的面试应该是你自信表达你自己的理解,即使不会也不要为难,不需要支支吾吾或者瞎说,这是大忌。不会就是不会,可以潇洒的回答,没有关系的,好的公司也不会就你不会的问题一直追问,这也没有意义。

楼主社招面试经历

其实社招对于楼主这种白天加晚上还要干好本职工作,应对需求的情况,还是很不友好的,如果你晚上还要忙着加班,那就更苦不堪言了。楼主从7月8月开始着手复习,其实复习的进度很慢,首先尽可能腾出晚上的时间进行充电,假如10点钟下班到家,再稍事歇息后,就10点20或者10点半开始充电,最好复习一个小时多一点,差不多看到11点半,准备洗漱睡觉。但是如果下班后的通勤时间也很长,感觉可以在路上充电一会。
周末的时候那就更要安排好时间,这是难得的整块的时间。首先你肯定需要列一个大纲,需要复习的内容包含哪些模块,这个周末重点复习哪个模块。然后就是调整好跟女朋友或者家庭的时间,稳固好感情,说明你正在做的事情,不要因为这种事情既影响了你的感情又影响了你的复习进度。
关于简历,对于楼主来说简历很难写,对于技术栈又不敢写精通,不特别懂原理的又不敢多写,所以技术栈看起来也比较薄弱。对于简历的项目,出彩的地方也不多,自己沉淀总结的东西也欠缺一些。但是有些技巧,例如你负责了哪些项目,负责了哪些模块,实现了什么功能,提升了多少性能,可能放一个数字更能体现你的价值,例如:通过xxx的优化,查询速度提升100%;
通过xxxx的优化,实现了xxx秒的无感知扩展;通过xxx的优化,处理速度提升200%等等等语句
关于面试安排,楼主是9月多开始在boss上传了简历,然后就有很多打招呼的,所以你需要在里面筛选出你自己感兴趣的岗位。个人建议,可能需要一些岗位打好前站,例如你就想入职阿里,那么也不能一开始就面试阿里,当然大佬略过哈,因为面试经验也是一个逐渐熟练的过程,状态也是有一个提升的过程,可能对前面的公司不太公平,但的确是有效的方法。然后对于社招且在职且工作任务可能比较多的应聘者来说,是痛苦的过程,面试时间我绝大部分都是安排在晚上,抽出一个小时定好会议室,可能面试完还需要继续工作,或者赶上发布还要更紧张一些,可能还会面临本来需要你这个时间在工位上解决问题,然后你去面试这样的尴尬的境地,还提心吊胆,哎,一言难尽。
所以面试安排也不能每天晚上都有面试,每家公司的面试流程有慢有快,然后你也需要协调每个星期新投几家公司,这个星期可能会有几个原来的面试流程中的面试。楼主个人建议可能一个星期可以2家,这个因人而异,记的每次面试后的总结,问题分析,这个非常非常重要。不要觉得面试完就面完了,觉得面试不好就心灰意冷,面试的问题才是你需要提升的地方,这是快捷有效的提升自己的方式。
基本时间里程就是7月8月准备,9月开始投,前期是积累经验,9月底和10月份开始投自己意向公司,差不多10月底11月份就是最后的阶段,然后就是选择的过程了。

面经

可能有的小伙伴就急了,说了这么多,我要的面经干货呢?好的,这就给你备上。篇章包括了很多知识点,其中包括了有基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等。有需要的朋友点击这里备注csdn即可直接下载,希望对你们能有帮助,诚意满满等你来拿!

一、猿辅导一面

面试形式:牛客网
算法:用链表模拟大数加法
oracle跟mysql的区别,隔离级别
慢查询如何定位?如何优化?遇见过什么样的case,怎么解决的?
项目用到了分库分表,分库一定会提升性能呢?什么是冷热数据?优化了什么地方?假如出现了数据暴增,怎么处理?有什么扩容的方法?怎么无感知扩容?怎么做到数据实时一致性?
线程池,核心参数,等待队列满了,来任务立即执行吗?
spring boot跟spring的区别,spring boot是用来干什么的?最大的作用是什么?starter是干什么的?
hashmap1.7跟1.8?优化点?红黑树化为什么是8?退化为什么是6?

二、美团

一面

面试形式:牛客网
项目介绍,难点,怎么遇到的?产生原因?如何解决?为什么要这样分表?跨库join如何解决?数据量突增怎么解决?
如何解决线上问题?cpu狂飙怎么办?频繁minor gc怎么办?可能造成的原因是什么?如何避免?
数据库 隔离级别,怎么实现的?当前读,快照读?MVCC?
算法:两数之和

二面

面试形式:牛客网
项目难点,如何解决?
分库分表的设计?
分布式事务出现过不一致吗?为什么?怎么解决?有什么方法避免?怎么监控?监控到怎么处理?什么时候需要人工接入
如何优雅的写代码?什么代码算做优雅?什么代码是规范?你们代码规范是什么样的?
如何进行code review?
JVM模型,pc计数器什么时候为空?
算法:之字遍历二叉树

三面

面试形式:牛客网
对于大流量,高并发怎么看?你们项目有没有?为什么没有?如果有怎么做?
对于你入职以来的工作你怎么看?
怎么能拿一个好绩效?对于你的绩效你怎么看?
对于中间件怎么看?用过哪些中间件?为了解决什么问题?
对于redis怎么理解?适合什么场景?你用它来干什么?解决什么问题?
你怎么看待我们团队?
你对于自己的规划是怎么样的?
为什么这个时候选择离职?

三、微众一面

面试形式:牛客网
做题,一个题目是自己实现的原子整数类,为啥没实现原子性的;第二个题目是spring bean的生命周期 还有哪些set函数怎么使用?;第三个问题是银行账号A转账B的可能涉及到的问题,死锁?事务?数据库?并发?强一致性?谈一谈

四、酷家乐一面

面试形式:电话
项目介绍,分库分表
public private protected区别,放在类上,方法上,接口上,属性上?
不加修饰符是什么?
抽象类跟接口的区别,抽象类抽象方法
函数执行时间不定,需要一定时间里返回?怎么实现?
hashmap 红黑树,什么时候扩容?扩容是怎么扩容的?怎么发生环?死循环?1.8优化?
concurrenthashmap 怎么实现的线程安全?100%安全吗?1.7跟1.8区别?为什么这么做?
mysql innodb下,能不能不设置主键?主键可以为空吗?可以允许几个?主键跟非主键的区别?索引存储形式?
联合索引失效问题?索引失效问题?
.java文件都包含什么?.class文件都包括什么?java对象的存储结构

五、有赞

一面

面试形式:电话
项目优化做了哪些?
线程池,参数,怎么设置?callable和runnable?线程间通信?
mysql索引,覆盖索引?回表?B+树叶子节点存储什么?为什么不用AVL树?
数据库锁,乐观,悲观,record lock?next-key lock?
hashmap 1.8优化
gc的时候 young gc只有两个区可以完成吗?有什么问题?

二面

面试形式:微信视频
项目介绍
最有难度的点
高负载,高流量的业务处理
如何数据一致性?
如何减少人工干预?

六、头条

一面

面试形式:牛客网
特别说明:头条是唯一一家需要你的代码在牛客网那个IDE下AC的公司,直接面试官可能会给你测试样例让你测试,一般给20分钟
算法:找零钱
Redis为什么这么快?多路复用io模型?跟多线程对比?select epoll模型?
epoll怎么实现的?都用了哪些存储结构?什么时候就绪事件?回掉函数在哪里注册?epoll是怎么使用的步骤?epoll wait干了什么?给redis服务端发送get数据请求,是如何处理的?
zset数据结构是什么样的?为什么采用跳表?insert一个数据是怎么样的流程?get一个数据是怎么样的流程?多级索引是怎么更新的?如何确定一个数据在第几层?各自的时间复杂度是多少?你觉得还有什么优化的地方?
Redis的高性能是怎么实现的?多主多从?一主多从?各自插入一个key的时候是什么样的流程?主从复制是什么样的?怎么强一致性?什么情况下不适合?主挂了,各自的选举是什么样的?怎么完成主备切换的?如果主挂了,从没复制完全,会出现什么问题?什么样的情况下可以使用这样的组群方式?什么样的情况下不适合?
raft协议 paxos算法
http状态码 300 400 500 499
dos ddos drdos 如何避免?怎么预防?怎么发现?利用了TCP什么特点?怎么改进TCP可以预防?服务端处理不了的请求怎么办?连接数最大值需要设置吗?怎么设置?
Thrift RPC过程是什么样子的?异构系统怎么完成通信?跟http相比什么优缺点?了解grpc吗?
https http1.1 2.0 3.0
hashmap如果的确需要很大容量的数据去操作的时候,怎么办?怎么优化?

二面

面试形式:牛客网
linux fork子进程 如果在线程中fork会怎么样?如果总共就4g内存,一个进程有10个线程,在线程中fork,能不能fork出来?
TCP连接server端跟client端都有几种状态
linux作为client端可以最多建立多少个tcp连接?作为server端呢?
建立tcp连接时,如何connect时候阻塞了,那么怎么能不阻塞,去干别的事情?
linux怎么监控cpu运行情况?端口连接情况?tcp连接情况?占用了多少内存?
epoll 多个请求怎么处理?fd什么时候可读,什么时候可写?epoll模型有没有用到什么队列去等待的,来一个请求处理一个吗?能写处理流程的一些伪代码吗?
Redis是怎么处理请求的?单机的qps是多少?如果一直用get,你觉得达到qps的顶点,它的限制点在哪里?怎么能够突破峰值qps?怎么用单线程处理的请求?如何解决单机qps达到峰值的问题?
redis分布式锁,怎么样实现?怎么理解?不用redis可以吗?有什么问题?生产上出现过问题吗?为什么会出现?怎么优化?考虑过zk吗?单机redis分布式锁?集群状态下分布式锁?主从下分布式锁?都是什么情况?redlock怎么理解?
系统怎么算高可用?多部署机器能实现什么?有什么弊端?有什么优势?怎么实现高可用?多部署机器能实现高可用吗?熔断机制是什么?怎么实现?

三面

面试形式:牛客网
算法:两个有序数组间相加和的Topk问题
分库分表 数量级 系统qps 聚合怎么做?
扩容怎么做?
redis 淘汰策略?超过最大内存限制发生什么?redis什么时候会慢?redis持久化机制
nosql es能解决什么问题?hbase呢?
强一致性?弱一致性?适用什么场合?***web端怎么实现强一致性?怎么设计缓存?

七、货拉拉

一面

面试形式:zoom
hashmap
sync跟reentrantlock
redis 基本数据类型,底层如何实现?跳表?为什么单线程会快?有哪些设计?单线程如何处理多个请求?哪些可能会导致redis慢?redis如何实现高可用?哪些命令可能会慢?
线上oom情况?怎么排查?
mysql mvcc 双写机制?binlog跟redo log先后顺序?一个写不成功怎么处理?当前读和快照读?事务隔离级别?线上sql优化经验?
分布式事务?用过哪些方式?还知道哪些方式?怎么实现?有没有想过自己实现?避免哪些坑?
跨库聚合怎么实现?分页?第几页?下一页?

八、阿里

一面

面试形式:电话
特别说明:阿里面试官在面试之前会介绍他们的团队,这次面试的大纲,感觉狠专业
JVM如何和操作系统交互
垃圾回收 回收什么?怎么回收?垃圾回收算法?垃圾回收器?
sync和reentrcntlock
分库分表 聚合查询 limit怎么实现 top的实现
不停机扩容?分表避免冷热?不停机扩库?不停机扩表?跨库事务?
线程池 参数 为什么不用fixed?
redis 淘汰策略 主从 集群 高可用如何实现?
分布式锁
zk实现分布式锁?
算法题:写好发他邮箱 几个线程轮番打印不同花色的扑克牌从小到大

二面

面试形式:电话
分库分表为什么这么设计?数据增长怎么做?怎么扩容?数据不均匀怎么办?冷热数据怎么分离?聚合怎么做?跨库聚合怎么做,查询怎么做?跨库分页怎么做?
mysql 线上的组群模式?一主多从?为什么这样?强一致性如何保证?为了解决读写分离吗?是为了一主多备吗?主库crash掉怎么办?从库呢?
分布式事务怎么做?什么原理?怎么实现的?出现过事务不一致性吗?为什么?怎么解决的?
访问请求暴增怎么做?怎么缓解压力?
redis分布式锁怎么实现的?可靠吗?有什么问题?redlock能解决吗?为什么?怎么优化?
为什么用redis做?
cpu飙升怎么处理?load飙升怎么处理?什么情况可能会遇到上述情况?
full gc怎么形成?什么情况会产生这么情况?线上出现怎么排查?

九、百度

一面已过,后来没约二面询问hr,hr告诉说不招了,尴尬,面试问题让我给忘了。。。

十、快手

面试形式:牛客网
热榜top100怎么做?
最近浏览web端手机端怎么设计?
最喜欢的榜单 怎么设计缓存?
直播间刷一个礼物,怎么让所有人都看到?
设计一个最近看过的作品,数据库跟缓存怎么配合?什么时候更新数据库,什么时候更新缓存?
算法题:两个大数相加

写在最后

面经不分时间先后,有可能几面几面的没写全,没写完,因为有的面试面经当时忘记记录,所以就忘记了。下面附上我的面试资料和面经总结,内容大概如下,希望对你们有帮助:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基本后跟楼主设想差不多,反正前面的都不太好,后面的有了经验可能会好一些!以上资料都是无偿获取的,有需要的朋友点击这里备注csdn即可自行下载,希望能对你们有帮助!另外友情小提示,看准岗位就果断投,很有可能岗位很热,你总想准备的非常好的时候再去面,可能岗位都没了。还有就是大部分的公司都需要算法题的考验,大多来自力扣简单跟中等难度,困难我个人觉得随缘吧。

猜你喜欢

转载自blog.csdn.net/weixin_49494194/article/details/110389904