个人介绍
背景:23届双非本科无大赛获奖经历,由于我们省份取消了一本二本的划分,所以统称本科,如果在区分的时候,我们学校应该算是一个二本,但是由于近年名次有所提升,也可以称得上一本院校了。开源贡献者(RuoYi系列的部分BUG改进)
回顾一下自己的面试经历
我是在11月低(11.30号)开始投递简历的,也是大学期间第一次投递,当然首先肯定不会是大厂,因为想先面试小厂积累积累经验嘛,其次就是确实也没准备好。但是在投递我们市区的小互联网企业的过程中,收获并不大,甚至有些公司问的知识很少很浅,但也有部分公司还是比较可以的,实习薪资也算是还可以吧,二线城市,实习薪资在5-6K。总共投递面试了大约6家我们这边还不错的公司,然后6家公司全部发放了实习offer(这些经历更多的还是锻炼自己的面试以及表达能力)。之后大约是在12.3号的样子投递了一家国企:浪潮,面试感觉还是挺不错了,深度和广度都有考察,对我来说,也是第一次遇到一个很聊得来的面试官。然后第二天hr就问了一些情况,发了offer。流程还是很快的,并且那个时候就在想,寒假的时候就去浪潮吧,还是蛮不错的。
但是我的一个朋友,比我大一届,我们两个经常线上分享一些资料,毕竟他大我一届,从他身上我也学到了很多。在他的建议下,我在12.6号投递了第一家大厂:字节跳动,其实那个时候自己并没有准备好,并且对于我而言,我感觉字节是所有大厂里面最难的(1.算法 2.计网和操作系统),因为大学课程没有涉及操作系统,大三下学期才会学到。所以那个时候我还是非常没有底气的.并且双非出身的我,一度以为简历也可能会挂掉,但是在12.8号收到了简历通过的通知,想要约我面试,那个时候内心慌得一批,一想这可是大厂啊,并且我12月中旬面临着所有专业课(智能科学与技术)的考试,由于整个学期都是在学习java的相关知识,期末考试对于专业课我还是很头疼的,就这样,我和hr说要求约在12月28号面试,hr一听,感觉太晚了,就问能不能提前,面试1小时就可以。然后我当时想算了,打不了我继续冲春招嘛,然后说10号以后吧,具体我看下时间,然后就hr加我微信了。最后在10号我联系了hr约在了13号下午一面,从10号那天开始,我也正式进入了海投的阶段。由于阿里没有实习岗位,没有投递。投递了大约10多个公司吧,比如:百度,滴滴,快手,美团,小红书,小米,网易,哈罗出行,蔚来汽车,完美世界,差不多就这些了。
然后简历挂的只有网易。
其次就是石沉大海了,像滴滴,快手,美团,小米,哈罗出行(没hc了)
当然可能是双非被卡学历了,也可能是没hc了。具体也不知道什么样子了。
但是给我面试机会的,我还是非常珍惜的,因为双非的学历在这摆着,给了机会所以会很珍惜的那种,也比较感谢所有给予面试机会的公司,也比较庆幸所有面试的公司也过了,除了小红书。
小红书一面就挂了,那天上午是一门专业课期末考试,10点吃完早饭,中午饭没吃,下午6点面试,那天状态也很差,头还晕,本来是想改约的,后来还是坚持去面了,但是整体表现很差,所以说,大家面试状态一定要好,如果身体不舒服,不要硬撑,一定去找hr商量改时间。最后,直接就g了。也还好吧,或许过了也可能不会去了。
字节的整体面试,一面面试官是一个小姐姐,超级温柔的那种,真的很nice,整体前15分钟都在聊项目,之后就是基础那些,再就是三道题。二面面试官交叉面试的,项目问了10分钟不到吧,然后就是拿项目的个别场景进行延伸设计,还是蛮有挑战性的。之后给了困难的算法题,a的比较快,又来了一道场景设计题,是一个POI聚合,难度比较大,结束后,百度也没百度出来啥答案,整体还是围绕共享来设计一种结构算法。三面就是大leader了,挖项目,超级细节,挖的很深,一个点的所有实现细节让你说一下,以及数据库的设计,为什么这样设计数据库。聊了项目30min吧,就到了算法题了,最后又来了一个PC端实现扫码登录微信(挖的细节)。整体还是比较不错的,前两面的面评听hr说,分数很高,具体没说,就说很nice,三面我感觉表现一般,面试完差不多5分钟就通知过了,然后1小时后四面,hr面,1小时后hr面过了,然后offer审批那天是12.31号流程比较慢(因为二面我推在了我所有期末考试完才开始约的,所以在我拿到offer之后,跟hr聊天的时候,她告诉我,一面的那个组没hc了,把我调到了三面的那个组,所以说面试还是要早,没hc就gg)。还有一个时间点是,三面之前,百度已经发offer了,所以整体对三面的紧张程度还是不大的。
百度面试的感觉,其实有点难受,每一轮面试都是压力面,问的非常深,全部都是底层源码的实现,10个问题9个问的源码怎么实现的,这里我幸好看过一些实现源码,但是也有部分没有答出来,但是面试官还是比较nice的,当我回答这个结构不知道具体底层源码实现的时候,面试官会让我自己来设计一个,问我我会如何设计,算法题也是去实现你通过自己想法设计的结构进行手撕(在wps上面手撕,真就啥提示没有,大白板),整体难度我感觉还是非常大的,感觉跟社招一样,后面我把面经列出来,大家可以看一下。但是最终也是通过了三轮面试,顺利拿到了百度offer。
还有蔚来汽车,完美世界,他们面试也是比较快的,蔚来汽车三面,完美世界三面,整体体验挺不错的,但是每一面都有算法题。
面经(尽可能想起来多少写多少)
1.字节跳动一面(60min)
- 项目(每一面都会问,并且会抓住一个点深挖,甚至让你拓展)20min
- 你对自己项目的部分业务进行了重构,发生了哪些冲突,怎么解决的
- 一致性哈希算法
- 重定向的相关问题
- 3XX 4XX状态码
- sychornized与volatile区别
- 数据结构的部分介绍
- 分布式的相关问题:session共享,分布式锁
- 缓存击穿的解决(双缓存,分布式锁看门狗)
- mysql的三种日志的用途
- 主从复制原理
- 缓存一致性处理方案
- sql查重统计
- 线程安全的单例,括号生成,24点游戏
- 反问
1.字节跳动二面(50min)
-
项目 15min
-
分布式的部分问题
-
内核态和用户态
-
线程与进程区别
-
虚拟内存的相关拓展
-
分页和分段的一些介绍
-
置换算法
-
还有一些忘记了,操作系统问的蛮多的
-
Redis数据结构的底层实现(压缩链表,跳表。。。)
-
哨兵问题
-
合并K个有序链表
-
实现POI聚合(1000W个POI,10W个村庄,给定经纬度和id,如何查找一个村庄3公里内的所有POI,保证效率最高)
-
上面那个我第一时间想到的是Redis的GEO,后来问了我GEO的具体实现,之后又说假如不使用Redis,自己如何设计,巴拉巴拉,共享,面试官感觉还OK,然后就结束了
-
反问
1.字节跳动三面(70min)
- 项目(问的非常深,并且让我写伪代码实现,数据库设计,为什么这样设计,以及索引的使用,测压问题)35min+
- 实现一个HashMap(涵盖淘汰策略,最近最少使用LRU)
- PC端微信扫码登录的整个流程(问的非常细节)
- 反问
- 总体感觉,气场蛮足的,部分细节考虑的可能存在欠缺,5min后hr说面试通过,约四面(感觉表现不如一二面,感觉一般)
1.字节跳动四面hr面(35min)
- 个人的基本情况
- 专业
- 项目背景
- 有没有投递其他公司,有没有拿到offer
- 。。。。。。忘了,巴拉巴拉说了很多
2.百度一面(60min)
-
深挖项目(就挖的很深)
-
hashmap的底层实现(细节到Node的属性,以及链表怎么转成红黑树)
-
JVM内存
-
JMM相关介绍
-
JUC的相关问题,AtomicXXX的实现
-
Redis跳表
-
还有一些其他的问题也是源码的,记不起来了
-
手撕LFU要求时间复杂度O(1)
利用优先队列实现的,O(logn),O(1)没写
-
反问
2.百度二面(60min)
-
这个面试完,写面经了,所以比较全,自我感觉跟社招一样
1.项目
2.定时任务的底层源码
3.RabbitMQ延时队列底层实现的
4.RabbitMQ使用需要注意什么?(答得不好,需要注意消息的可靠性)
5.RabbitMQ效率
6.插入延时队列的过期时间是单调的吗?
7.JAVA实现延时队列(手撕,线程安全没写完)
8.对延时队列的动态时长怎么控制?
9.Excutors中存在的线程池的实现(ScheduleThreadPool)
10.阻塞队列的底层实现(我说的ArrayListBlockingQueue)
11.Condition 的底层实现
12.ReentrantLock的底层实现
13.结合AQS底层怎么实现ReentrantLock的(公平/不公平,可重入的操作)
14.多线程下ReentrantLock的阻塞队列的并发安全的怎么实现的?
15.AtomicXXX底层的实现
16.并发编程的介绍,我说的CompletableFuture<>
17.CompletableFuture的链式处理怎么实现的,异常怎么处理的
18.写代码
2.百度三面hr面(20min)
- 个人情况
- 巴拉巴拉结束了
- 反问
3.蔚来汽车
一面
-
算法题 3数之和为0,要求去重
-
ThreadLocal的使用,以及实现,以及出现的问题(内存泄漏)
-
Executors中实现的缓存线程池的一些细节
-
还有一些比较基础的问题,忘记了,记起来再更新吧
二面
-
ArrayList与LinkedList的效率,如何测试,测试方式
-
框架的一些基础问题
-
还有一些问题,忘记了
三面hr面
-
巴拉巴拉
4.完美世界
- 一面二面都是一些折中的基础问题,难度适中,就不写了
5.浪潮集团(浪潮国际)
- 分布式事务,怎么保证最终一致性
- 抢座高并发多线程问题(字节二面也问到了,忘记写了)
- Alibaba开源的seata
- 流水线部署k8s,Jenkins
- mysql oracle事务
- String StringBuffer StringBuilder
- 锁的介绍
- spring boot使用的一些收获,简单介绍整个启动流程(源码)
- 算法:两个队列实现一个栈
- 还有一些问题记不起来了
总结:
双非并不是没有任何希望进大厂,也不是说简历过不了。我在大一大二的时候,其实内心还是有大厂梦的,但是被身边的人影响了,他们给我传递的思想就是:双非简历过不了。但是后来也比较幸运,我认识了一些朋友,也是双非的。因为我在大二下学期,跟他们做过某师范大学的一个心理评测工程项目开发,然后他们其中一个人,今年9月拿到了阿里offer,也是在今年9月,我也坚定了自己以后的方向,冲大厂。既然别人都可以,为什么不能是自己?现在想想大三上学期,确实每天都在努力的路上,时间安排基本就是7点左右起床去图书馆,这期间可能还会有专业课,再跑去上课,再回图书馆学习,晚上9点30闭馆后,去公教楼继续学习,基本回宿舍的时间都在晚上11点半左右,在12月甚至到12点,那段时间或许那些大四的学长学姐们在考研路上的不断努力,也在督促着自己。其实有时候,就会想,这个世界没有绝对的公平,只有相对的公平。既然院校是双非,那么肯定自己在高考阶段付出的比双一流院校的同学要少,那么只能在技术上面提升自己。直到现在,也算是完成了21年9月份定下的目标,但还是要继续加油。双非并不是自己进不了大厂的借口,或许只是缺乏逼自己一把的勇气吧。少研究别人,多提升自己,不是成功来的慢,而是自己努力不够狠,努力只能及格,拼命才能优秀。加油吧!
这里推荐一位字节同学(大佬)的公众号,在我面试准备期间帮助了我不少。当然公众号也会更新很多资料,大家感兴趣可以关注一下。