退休的第5天,经历过去年春招、秋招还有今年春招,写篇帖子回馈牛客~
个人情况
简单介绍一下自己,我是某以夕阳产业见长的末流985大四渣本。Java选手,经历过很多场面试。大概情况:秋招春招下来进入谈薪环节的offer保守估计有27个?(其实也有很多用来练手的没有什么技术含量的·····大家听听就好)也最终定格在了这个数字。(粗略算了一下offers薪资总和接近800w吧😂😂) 大多数是后台的,少数几个移动端的,还有一个算法。国内头部大厂除了鹅厂、pdd、京东、滴滴以外差不多都拿到了,还有几家外企,包括一家在美国西雅图,还有一家在新加坡。
当然主要想表达的并不是上面的内容,而是我收到的感谢信在邮箱里也有好几页之多了😅 貌似曾经有个一天收到好几封感谢信的记录?一开始真的非常不顺(再加上有一个脾气不太好的npy,更加雪上加霜😥)。失败真的是常态吧,很多时候只能咬咬牙。
平心而论,我不是什么技术大佬😅,校园招聘开始的时候基本上是在吃瘪,也毫无经验,吃过很多亏。所以也建议牛客的学弟学妹以后在校招开始或者之前,多面几场试,积累经验。我一开始做的不是开发方向的,专业也不是。春季实习都开始了才决定转Java,起步算是很晚,一开始做过移动端,后来做了后台。感觉学校在就业宣传和辅助方面做的不是特别好吧,所幸的是在找工作的过程中结识了几位后来给我特别大帮助的学长,他们在整个校招过程中给了我很大的帮助,也衷心的感谢他们的无私善良。我也会努力把这样的精神延续下去。 (毕竟学校只会在最重要的找实习、保研夏令营时期,用强制实习来恶心大家,然后快毕业了天天催三方。还真不如一个靠谱的学长、辅导员给的帮助多)
主要想分享一下本菜鸟的一些心得和经验,如果有幸能给大家一点参考,那就很开心主要几个方面: ①工作&读研选择 ②面试知识&技巧总结&一点面经 ③马上校招同学可能感兴趣的话题 ④一些感想
工作&读研选择
这个我相信是很多计算机专业同学从大一开始直至大三都在一直纠结的问题。到底是考研还是工作?而且父母、家庭、身边人的因素在这个问题中总是左右着答案。
首先最重要的一点:这个问题千万不要随波逐流。看见学院里考研人数比例一年年大幅提升,就随波逐流地去考研。也不要因为看见室友拿到了心仪的offer,而果断放弃了自己的研究生梦。有人觉得读个研就三年,人生那么长,管他三七二十一的先读一个。但是22岁到25岁,可是人生非常黄金的三年时间,你是否愿意用你人生最黄金的三年时间去读研(or工作)呢?想要如何去度过这段时光的人是你自己而不是别人。
怎么知道自己喜不喜欢这样的生活呢?如果有大一或者大二在读的同学有同样的疑惑,我真的建议同学们去实践一下,主动联系自己班导师或者自己喜欢、脾气好的老师,说想去他/她的实验室帮(da)忙(za)。千万不要因为担心自己太菜,而不敢去提这样的要求😅 谁都是从什么都不知道的情况开始的,勇敢迈出第一步。 我当时大二在老师实验室混了一段时间以后,就得出一个结论:我不喜欢读研。可以说那段经历彻底磨灭了我读研的热情,我实在不喜欢每天做的事情,不喜欢读论文、写论文,还要随时给老板打义务工。至少我无法接受我未来三年的生活是这样的。(仅是个人观点,希望研究生大佬们看见了不要喷我,我只是自己太菜了而且毫无钻研精神😅无法走上学术之路)我觉得那段时间最重要的收获,不是学会了什么,而是发现自己不喜欢读研,这才是最大的收获。(记得老师问我:“ **,你最后去哪了啊?” ,我:“ ***** ”,“哦,这样啊,怎么没有读研啊?” ,我:“老师,我现在本科都不太想读了,我还会读研吗🤣” )
然后我就给自己规划了两个两个方向:
①顺着自己的心意,不读研去工作,选择进入互联网行业 。
②读研,考个一般的学校,跨考个一般的专业,怎么轻松怎么来,然后三年结束去考个公务员或者进体制,充分发挥学历作用。
选择以前最重要的,是想清楚为什么要读研,即目的到底是什么。因为家人意愿?因为自己的学术追求?因为对自己专业不感兴趣?因为想找到更好的工作?因为对自己本科院校不太满意?或者单纯的不想走向社会走向工作? 有人觉得最后一个原因不应该算作原因而是逃避,但是我觉得逃避本身也算是一种理由。当你都找不到自己想读研的原因和动机,只是因为身边人都这样,那个人觉得真的要谨慎想想了。如果真的是发自内心的很想读,那接下来也要研究一下计算机考研形式,毕竟现在很卷,合理评估一下自己学习的自觉性、专注度,以及最坏结果二战成本等等。
面试知识&技巧总结&一点面经
我觉得面试知识可以分为三部分:①计算机基础知识 ②算法 ③项目 (个人心中重要程度依次递减)
1、首先校招对于大多数同学来说还是主要考察基础,所以基础知识最为重要,你对自己熟悉语言和特性的掌握,对网络、OS、数据库等等的掌握。基础过硬哪怕没有什么高大上的开发经验问题也不是很大,相反如果简历里全是天花乱坠的项目,一问基础就炸,那面试也炸了。
所以准备过程中要及时记笔记,经常回顾,这个工作基本上要穿插在整个准备过程中。
2、其次是算法,校招研发岗面试以前很多都要笔试了,意味着这可能以后也是面试敲门砖。过了笔试每轮面试一般也会让写道算法题,但是就国内公司来讲,除了头条以外其实还不算特别重视算法题,大多数公司面试时出的算法题都是比较简单的,阿里面试甚至很多时候不问算法,去年笔试0分也能进面。
因为算法能力的提升不是一天两天的事情,需要大量的时间,而且遗忘率很高,需要经常做题来维持手感,所以非竞赛同学给算法的时间需要合理斟酌,根据意向公司来做选择吧。如果想去的公司是更重视工程能力的,那么还是基础知识和项目经历为重吧。如果是一心进头条和外企,那么平时还请多刷些算法。建议总结常见套路和题型,看见题可以快速上手。
3、最后是项目。一开始找工作我认为项目并不重要,主要去看上面两点去了。直至后来我才发现项目的精髓。项目最大的作用在于引导面试走向,为后面的提问拖延足够的时间。首先项目最好还是和投递岗位相关,而且请你对里面的东西以及相关的东西足够熟悉,不然就是自掘坟墓😥 比如你的项目里面大量用到反射,面试官一问你反射原理,然后使用的优点好处、怎么加速,spirng框架里IOC和AOP反射是怎么用的,还顺带问了下类加载相关的,如果答不上来,面试官印象反而会大打折扣。但是反之你对于里面的东西特别清楚,而且能够滔滔不绝的描述,甚至不需要面试官继续抛问你就描述了他接下来想问的点,面试官也可以偷懒了,这样的面试谁不爱呢。
一个好的项目,可以引起面试官的兴趣,同时反映的也全是你深入了解过、擅长的东西,可能项目就可以为你赢得20分钟至30分钟的时间,接下来问其他知识的时间就会减少很多,赢面也更大。设想一下1个多小时的面试,要是全是面试官源源不断的发问,那真的有点难顶所以项目是把双刃剑,准备会牺牲一定的时间,但是用好了就是大杀器。 然后及时了解一下每年项目的动向,烂大街的建议不用,秒杀如果不是真的强建议不要碰不然可能会被问穿,然后今年RPC框架啥的可能也要炸用的人也很多,建议再考虑考虑。项目每年都有个风向吧,可能去年好的思路今年就会被用烂。
首先实力肯定是硬道理,但是面试里一些小技巧也是可以带来加分的:
①学会做面试导向:学会让问题向着自己擅长的方向去,具体方式有①通过项目and自我介绍②应答时的临场反应。首先项目之前说过了,如果项目还行面试官多半是会基于里面的问题问的,如果提前准备充分这是相对比较好控制的,还有就是自我介绍可以重点强调一下自己擅长什么。然后是对临场反应有要求的应答技巧,如果面试官问的问题,在你脑海中的回答思路中有你不太擅长的东西,那你的回答要尽量避开,防止面试官听到这个点对你继续深挖,反之有你擅长的你可以特殊强调一下。例如,面试官问你类加载的双亲委派模型,你回答完了以后,如果你仔细去了解过他的优点以及如何打破这个机制,你可以顺带提一下,那么面试官肯定会继续发问让你说,你就可以继续表现。但是如果你不擅长,就赶紧绕开。
②说问题尽量深入: 不知道大家有没有过遇到过觉得面得还不错,问题都回答上来了,但是最后挂了。我觉得有时候是回答不深入,很浅显很像背的。之前和组里面试的前辈聊过,其实每场面试总的大问题就10几个,但是会围绕大问题去问很多小问题,而每个问题你的回答质量的不同,面试官是会有不同的打分的。举个例子,让你说下对socket的理解,如果你的回答是封装tcp\ip协议的调用接口,绑定了一组IP地址和端口号,这个回答当然没有问题,但是可能只有60分。但是如果你再说一下Linux环境下一切皆文件的思想socket也是文件,讲一下tcp和udp协议下不同的编程模型,比如tcp下如何得到文件描述符的,如何其实监听和传送数据其实是两个socket,内核如何维护这俩socket队列的·······我相信细心说完这些这个问题在面试官心中的评分会在90分以上。
③打听一下部门技术栈。一般你会的东西正好属于面试部门的技术栈,那么他们大概率会问,因为这是面试官前辈们经常用的东西,也是他们比较熟悉的,有这种情况他们也不会故意去问他们平时可能也不太熟的东西吧,这样又有效的控制了面试内容。你会的话说明你和他们部门还是比较对口的,也是比较加分的。这个还是挺管用的,有条件的话可以向师兄们打听一下,比如部门正好用kafka,你正好会或者提前准备了,那不是很快乐。
然后说一点面经,因为我很多面试过去很久了,又没有记录的习惯,只能想到哪里说到哪里。
一、首先国内大厂:
C++我确实不够了解,我主要说一下用Java的情况吧。如果用的是Java,一般会选择去面Java和golang。可以大致分为两类准备。
个人觉得头条和腾讯可以分为一类,他们有点像,面试比较重视网络、OS和数据库这些,其中头条更重视算法要着重准备一下,然后一般来说这两个公司用Java的可以说少之又少,所以语言方面可以减少复习偏重,你说你不了解golang或者C++,面试官温和的话也不会过多和你较劲。
然后其他像阿里、百度、美团、滴滴等等可以大致分为一类,其中百度给我的感觉是非常重视基础,面试官感觉也相当相当有水平。大致还记得一些面试内容,说一下面经:
百度一面:
1、项目介绍,深挖项目每一个细节······
2、说一下为什么要重写equals和hashcode
3、jvm内存模型(附带问了很多问题,一些常见的内存问题,问了点操作系统)
4、垃圾回收(顺便问了老年代如何回收啥的,还有各个垃圾回收器)
5、HTTPS
6、cookie&session
7、项目里面如何实现的AOP和IOC,和spring原生的比较呢
8、详细问了代理模式,动态代理相关的,了解的用途吗(说了spring里的部分,详细说了dubbo里面如何用动态代理封装的细节)
(······中间不记得了)
9、做算法题,因为写的比较快,做了三个········三个全是二叉树,难度不大
百度二面:
和一面是连在一起的,一面去叫二面面试官。
1、挖项目,聊实习,聊了很久。
2、redis数据类型,重点聊了下zset,从跳表又聊了B树、B+树和红黑树
3、linux的很多知识(日志、命令)
4、进程通讯
5、hahsmap、hashtable、concurrenthashmap
(深度聊了hashmap的源码细节,聊了jdk1.7和jdk1.8中concurenthashmap的细节,比如size方法等等)
6、写LRUcache
百度三面:
1、居然问了点高数·······
2、问了多线程的问题,还有锁升级相关的
3、操作系统缓存,然后聊了些操作系统的问题
4、垃圾回收,问的很细节
5、mysql的索引,聊了点调优(说了写索引的原则,explain和show profile的一些判断)
6、海量数据的处理问题,具体不记得了,往分治方向想
7、项目
很多面试大致就是这个流程,前两面会偏向基础技术,多数末尾会写个算法,第三面会问的发散一些,考察技术和思维。我字节三面的时候也问了很多智力题,例如赛马问题等等,平时也可以看一下,还有一些工程设计题,一个特定要求的系统,你如何设计。我觉得这种问题不是要求你设计的非常完善,尽量把自己知道的知识和平时要考虑的问题带进去,多和面试官讨论思路,不要闷不做声就是表明自己不知道,要尽量去想,更重要的是思路。
然后谈下外企:
外企非常重视算法,基本上每面都会问很多算法还要写,一般是白板编程。以微软为例,总共四面,一二面连在一起(据说是平行面通过任意一轮都可以通往下一面?)
微软一面:
1、讲项目,聊了很久很久,每一个技术细节······
2、Java语言特性,垃圾回收
3、写算法
4、写算法
5、写算法
········
6、分析复杂度
微软二面:
1、项目细节,怼的很深,还比较了很多其他技术方案
2、问了操作系统,执行一个程序的具体过程,内核态用户态啥的
3、问了点大数据的问题·······?(感觉问的很佛)
4、然后没日没夜撕算法······
微软三面:
印象真的不是很深刻,但是主要就是问项目,然后没日没夜撕算法·······
微软四面:
(看年龄,应该是团队负责人)
1、问的很发散,印象里面给过我一张图,上面很多大小颜色不一的单词布局在一起呈现一定形状但是有很紧凑,问我如何实现(我很懵,但是一直和他讨论,主要聊算法上如何实现,通过dfs、贪心等等)
2、问了些Java的东西,还问了Android......?😯
3、问项目,实习经历,团队里主要做啥
4、问校园经历,如何学习
5、算法·······优化·······复杂度······
相信大家看出来一般爱考啥了前前后后感觉撕过16道算法吧·······有些考的还是很难,主要是字符串、动态规划、贪心算法、dfs这些,那段时间是我算法顶峰,还是有惊无险都撕出来了。我当时做了很多训练,自己把常见问题分类提炼了几十套算法模板,然后遇到复杂算法一般会把他按照经验分成一些子问题,然后套思路去解。我感觉这个就是要多训练多总结,没有办法。当看到一个题可以立马有两种以上的思路,并且你很清楚其中一种在不考虑时间复杂度的情况下一定可以解出问题(也就是回溯、暴力法这种)我相信差不多就过关了。
然后一些国外的企业,首先如果六级没过就不要投递了一般都是起码要求过六级,然后面试运气好可以和hr要求中文面试。最好准备一段英文的自我介绍。还有笔试一般是纯英文,并且需要梯子“***”,前面会有些题考查英语阅读,考查逻辑,后面才是题目,平时要补一补英文,例如对称加密(Symmetric encryption)操作系统常见部分的英文翻译不然就是题目看不懂的白给。一般建议先写算法题,分值大,前面可能有题目看不懂·······
一般HR会问很多问题,例如家人对出国看法,单身与否(这个时候肯定单身啦希望我npy不要看到),薪资期待等等,还会要求你提供电子版成绩单,GPA等等。
马上校招同学可能感兴趣的话题
①研究生和本科生差距大吗
在这个行业差距很小,甚至优秀的本科生会比研究生待遇好。但是研究生可以向更高层次的一些方向发展,而且能力一般会强挺多。
②投递简历注意哪些问题
仔细检查个人信息,尤其检查岗位信息和毕业年份(我投递京东的是时候毕业年份写成了上一届😫骑车刚回家就感谢信了······)还有就是到处主动要简历的,也要谨慎,未必就是部门真的缺人,工作了每人都有KPI(要够多少份简历),尽量的了解清楚了再发送简历,不然白白浪费机会。海量hc=3,牢记心中。
③内推和直接投递差距大吗
老实说对于国内企业,很多时候感觉是不大的。主要是内推有时候部门很精确,如果你有认识的学长,其实是大概了解部门的hc数量情况的,方便你选择投不投这个部门,如果都没hc了何必浪费这个机会呢。对于外企,我建议内推,因为可能学校不是清北真的不出名,我之前简历投了无人问津后来内推才有人约面的。
④关于方向选择,一个脉脉上的热门话题:“客三消”
当然我承认我并没有足够的经验和能力、履历去说这个事情,讨论这个问题我完全没有资格,只是浅显的说一下我看到的东西。实习的时候看见组里客户端年龄最大的两个前辈已经44岁了,阅历丰富的前辈挺多的,还有些后台同学后来转的客户端。我个人觉得职业选择还是看个人兴趣,行行出状元,所有东西都可以做的很深的,像测试、客户端组里真的有很多资深的大佬可以向他们请教。不是越卷越好,但是无论做什么都尽量多了解,多学习,不然什么都是“三消”。
⑤后续想到再补充········
一些感想
感觉大学真的好快好快,也感觉自己之前好忙好忙········转过大大小小三个方向,也一直不知道自己喜欢什么样的生活。我喜欢有挑战、不断学习的生活,也向往轻松、无所事事随遇而安的日子,之前甚至去准备过考公务员、选调生,考虑过体制内。也拿到了出国看看的机会。但是无论怎么选人生没有最优解。有段时间疯狂的面试,疯狂自我不满的感觉让我生活有点失衡,我希望未来不管做什么,都还是平常心对待吧。人生是一场动态规划,每一步重在过程和经历,有一个计划在心中就好,让自己尽量快乐,而不要变成一场贪心算法,每一步都要努力利益最大化,力求最满意。
人生不如意事十之九八,希望未来的同学们能够摆正心态,不管顺利也罢,不顺利也罢,认真对待每一次机会就好了。就像我曾经认真想过放弃所有的机会去做一份简简单单的工作做一个普普通通的人一样(当然工作了也是普普通通的人) ,每个人有自己向往的生活方式,不要被大环境影响而过度焦虑,烦恼会解决烦恼。有时候你现在没有做到,可能只是你的运气还不到位,况且很多东西得到以后也不过如此。
仅以此篇记录我即将逝去的大学生活。不愿每个人都能拿到心仪的offer,但愿每个人都能选择自己此刻渴望的人生。
特别鸣谢:
谢谢家人的支持,忙起来和他们打电话的频率也少了,希望以后改进。
谢谢npy,很多时候虽然给我添乱,但是带给我很多感动。在我找不到工作压力大的时候,ta哭了,和我说,我们以后可以不用有自己的房子,不用有钱,只有我们两个在一起,就足够了,就很开心。遇见ta是我的幸运。
感谢我大学两个最好的friends,你们给了我很大的帮助,很幸运大学与你们一路成长,说起来上次某傻弟弟搬家没去帮忙着实有点惭愧,你们也一定要幸福。
记得曾经因为机缘巧合认识了一位清华学长,我那时说bytedance是我的梦想😅然后通过他的介绍我认识了BJN学长,他真的给了我很大的帮助,过去一直陪伴和帮助着我。学长人真的很好很好,给过我无数的帮助和鼓励,BJN学长曾经告诉我一句话,“迷茫的时候就努力吧,毕竟只有这样才能让自己安心”。也把这句话写下来,一起共勉。
全部评论
(21) 回帖