分享春招的一点经验+携程滴滴面经
第一次在牛客发帖,有点紧张,哈哈。
经历这次春招,最大的心得体验在于:能早投一定要早投,等到后面hc没了即使你有足够强的实力,简历再优秀,也很大可能没没有面试。再有一点,别放弃,只要方向没问题,付出就会有回报。
我大概在3月一开始的心态是拿中小厂开刀,也确实拿到了不少,也有了不少面试经验,但那时候也是大厂的提前批,也是大厂相对hc充裕的时候,那时候我犹豫了怕面不过,导致我四月再投阿里,腾讯这些大厂的时候,笔试过了就石沉大海了,去问他们的hr,回复大部分都是:因为hc不够了,大厂都是提前开始抢人的。甚至腾讯投的时候直接过了截止日了。(太惨了。。) 除了字节回复让面试..我拒绝了 后面还有很多学校的ddl要完成 实在是精力不够了 - - 🤣🤣
春招拿到的大厂是携程后端(留用实习)和滴滴国际化部门后端(正式)的offer,他们的共同点都是投的早,大概三月中投的携程,很早就拿了面试。然后滴滴这边有点一言难尽🤣,大概4月初投的,当时投的时候甚至都没仔细看是实习还是校招,直接点进去就投了(其实当时滴滴暑期实习甚至还没开。。有点奇怪,比其他大厂要晚)。等我第二天发现的时候甚至都不抱希望了,估计简历都过不去,进去面试估计也一定挂,就也没抱希望。最后也比较幸运,通过了滴滴这艰难的三轮技术面...有点不可思议。本是为了找一份暑期实习然后参加的秋招的…没想到找实习的过程中上岸了滴滴正式岗,魔幻…
最后一点是关于投简历,先别急着去官网海投,尽量再牛客网搜一下内推信息,然后如果内推帖子里有群就加群,大家分享信息,有什么问题也可以一起讨论,氛围非常好!直接联系内推人还可以查进度,内推筛简历的时候也可以更快一些看到你的。
一句话总结:不论春招秋招 如果是提前批,一定投,能内推就走内推,不要害怕自己面不过,我有个朋友投了腾讯被捞了5次,最后拿到了腾讯实习,这种不停被捞的体验虽然不好,但一定能让你的面试经验大涨,不断反思自己,多总结自己的不足,后面就可以拿到更好的offer。
复习计划&时间线:
(1)算法:算法我开始刷的比较早,去年十月份开始的,在leetcode上按类型刷,大概100-200之间应付面试足矣了。之后有兴趣可以再去牛客在线编程专区刷下字节的题库练手,因为很多企业像是滴滴直接走牛客的这个题库很多都是原题。做了这lc的100多题之后就不再做新题了,总结更重要!一定要多总结,多看这些旧题,不要盲目追求题目数量!因为企业面试大部分都是出top100里的这些高频题目。
(2)项目:时间可以穿插在算法和八股之间,学习八股的同时也会对项目有更好的理解。这个现在网上有很多的项目可以参考了,最好自己包装一下,如果是b站视频上学的,至少要稍微改一下名字2333,如果能去github上找一些开源项目就更好了,我就是在git上找的,还不容易重复。
把项目吃透,加进去自己的理解,多思考总结为什么要用这样的技术比如用到了redis就思考一下为什么要用,如果用到了ES就思考问什么用ES对比其他比如lucene优点在哪里,倒排索引是咋回事?用到了rabbitMQ就多思考他比webSocket优点在哪里等待。
突出你对这些技术选型的理解,然后尽可能少谈业务多谈一些原理,比如我选redis就是因为要应对xx地方读多写少的场景,rabbitMQ比webSocket的话复用了tcp连接不必频繁创建tcp连接等等等...有时候这些问题不跟面试官说,他也会主动问,主动讲的话那就更好了。然后就是针对性介绍一下简历上项目的技术亮点基本就可以了。后面有兴趣可以看一些高并发系统设计的文章,因为一些大厂的会有压力面让你进行一些系统设计,但是建议基础阶段先不要看,对自己项目理解通透了以及基础复习的很好了再看,否则一头雾水,后面等基础复习好了,然后对自己的项目感觉掌握透了再去看这些文章就会有种恍然大悟的感觉。。
(3)八股:我用的材料是:javaGuide(不贴链接了 大家都有)结合learn-java :https://github.com/mio4/learn-java/blob/master/Note/interview.md
也可以是CS-Notes:http://www.cyc2018.xyz/#%E7%AE%97%E6%B3%95 总结的也非常好(发现的晚了有点可惜)
这个时间线大概在2月初至今。第一轮复习最慢,大概用了1个多月..后面会越复习越快,再然后通篇复习一遍八股需要一周,再然后越来越快,同时也在结合着面试跟牛客的面经不断复习总结。 CS-Notes以及可以把八股写的很全了,里面有很多原理的知识,我就不再一一列举。大家一定要把主要精力放在八股基础上,面试能说多深就说多深,越底层越好,结合面经多阅读博客,再解决不了或者不理解可以查书本。八股不仅是面试的重点(时间或者是内容上),还会对你的项目的理解有帮助。基础复习好了,跟面试官聊项目的时候更能让你侃侃而谈。
最后写一下携程跟滴滴的面经吧:
携程一面 大概40分钟:
(1)聊项目,大概10多分钟:
穿插问了redis的持久化机制
项目中用到了WebSocket, 它跟rabbitMQ区别在哪里(建立连接的区别,rabbitMQ的工作模式,持久化,如何保证消息可靠)
为啥要用全文检索引擎?
(2)然后是基础 10分钟:
了解过垃圾回收机制吗?
一般选谁作GC roots?
聊聊各个回收算法的区别
Synchronizer了解吗?
锁优化了解吗?
进程线程区别?
线程池相关内容
(3)算法: 最长回文子串长度
携程二面:
(1)聊项目:
跟之前差不多...穿插问了为啥redis快(基于内存,然后又扯到redis底层那些数据结构的优化,工作线程单线程的那些优势,简述了一下怎么做的io多路复用,优点是什么)
聊项目实际意义..
(2)八股基础:
重写重载区别
接口和抽象啥区别
String,StringBuffer,StringBuilder三兄弟
聊聊三次握手,四次挥手
Spring Mybatis是干啥的?
IOC AOP大概的原理了解吗?
jvm调优做过嘛?有啥思路吗?
(3)算法: 没写算法 - -。。。。然后二面过了 就hr面了
个人认为携程实习的面试难度还是相对比较低的..
然后是滴滴三轮技术面:
滴滴一轮:
(1)没有聊项目环节 直接怼八股:
看你简历上提到了java并发编程,请把你了解过的主要内容说一下 (我:? 当时人优点傻了 还有这样问的? 然后我就把当时各个重点面试题的标题说了一下)
然后就开始撕了 , ThreadLocal 讲讲是咋回事,内存泄漏是怎么出现的,能解决吗?(当时问我key是强软弱虚哪一种..然后引申到他们的区别..)
说一下Synchronizer跟ReentrantLock区别吧
说说线程生命周期
voliatile实现原子性吗?为啥? 它主要是干嘛的?
happen before原则是干啥的
拓展到手写dcl单例模式
手写下工厂模式(我:??? 不会。。。最多会背一下八股。。)
countDownLatch跟cyclic barrier了解过吗?(简述了下功能) 区别是啥?(这个我说我不会)
然后说了俩没听懂的英文单词 (我直接说 ,不会 - -)
线程池涉及的那几个队列讲一下, 然后我直接顺带着把线程池分类也全抖搂出来了 (面试官表示:彳亍)
网络为啥要三次握手了 不三次不行嘛? 四次挥手时为啥?
tcp怎么保证可靠传输的
(2)基础还行 写写算法吧: Pow(x,n) 提示用分治做
然后hr通知二面:
滴滴二轮:
(1)说说项目吧:还是那些东西,然后追问了下mongoDB的了解过吗 (web作业用到了),数据库跟缓存不一致怎么办?(说下原因,延时双删)
要是消息记录表太大放不下了咋办(分库分表) id咋办(snowflake生成全局唯一id) ,了解负载均衡嘛?
(2)八股:
聊聊进程间的调度那些事吧
死锁原因与处理
进程间通信哪几种方式? 线程呢?
计网经典题,输入url到网页显示的整个过程越底层越好
get跟post啥区别啊
cookie跟session啥区别啊
讲讲数据库索引?说底层了 b+树根其他索引区别在哪里? 索引优化的建议?
口述lru 把使用的数据结构 然后增删咋做的 说一下 。。。 检索是O(n)还是O(1) ?
(3)基础还行,写写算法吧:最长回文子序列 ,符加题 改返回长度为返回串内容
hr小哥哥通知三轮的时候有点懵,说还有三面,这时候才知道 这是校招流程,我说咋比携程那两面难这么多 - -
滴滴三轮:
前两轮面试官都很年轻而且慈眉善目,这个面试官有点凶 估计是领导级别的 。。。
(1)项目: 问我研究生做的啥项目 就把mlt那个水项目说了下...他说给你输入数据,让你做用户行为预测你会嘛。(我:???)
好吧还是说说java那个吧,巴拉巴拉说了一堆,后面突然不让我说了...可能感觉我在套路他往我的点上引 - -
(2)八股:
看书还是看博客? 直接问redis看过那些书?(答了redis深度历险)
redis 哪里有节约内存的设计(答的ziplist 以及quicklist的底层然后跟纯双向链表对比)
说说缓存淘汰策略吧
哨兵机制了解吗?多哨兵?
本科学了那些课程?
然后操作系统各个章节的排列顺序还记得嘛?(我再次:???)
说说虚拟内存干啥的,有啥优点
说说内存管理那些事 段式页式 等等 快表 多级页表也可以说说
寻址怎么弄的?然后拓展到了 请页 以及页面置换
计网的分层模型 介绍下各层主要干嘛的
子网掩码干啥的
还说了个网络号不一致的题,没听懂。。直接说不会了
详细说一下https非对称加密过程(高频题了)
你提到了里面还有对称加密 那对称加密算法有哪些(说了下计网里校验和用的MD5跟Sha1,但这俩是散列算法并不是对称加密的算法。对称加密算法是Aes和Rc4) 底层原理懂吗(不懂 - -)
计网里了解的协议有哪些 能说多少说多少
(3)写个题吧:
面试官自己出的题。。。 一个容量大到无法加载的数组 对其内部元素进行取重复元素top3的操作
思路实际上是海量数据的那种类型的题目,分而治之,数组长度除以内存容量得到加载次数 依次加载处理即可,拿到各个子数组的各个子结果集,再合并再取top3即可(应该还有更好的思路 当时只想到这一个)没调试成功,但面试官应该感觉思路对了 就让我反问问题...然后就结束了
然后苦等三面结果,那段时间真的很累,也很怕止步于三面前功尽弃。
一度感觉三面必挂的...
然后今天收到了 hr小哥哥通知 准备谈薪了,一度感觉很魔幻,不真实。
坚持住不放弃,把每一天都当成面试前一天,有一天幸运女神会来敲你的门。