背景:
双非本,211电子信息硕,Java选手。
找暑期实习,3月5日开始投递,截止4月28日收获offer:武汉小米后端开发、北京腾讯后端开发、北京美团测试开发、北京58同城中台开发、武汉恒生后端开发。
24年与23年的异同:
就业市场这几年变化非常快,总体来看形势是越来越不好的。
往年师兄师姐的校招情况,其参考意义已经非常有限了,尤其是两年以前的,因为就业环境的差异性太大了。
暑期实习今年3月初开始爆发,这个时间今年比往年早了20多天,但是到4月底的时候,居然很多公司已经招聘快结束了???而且很多中厂今年的动静非常小。
这些变动对于大家的参考价值总结起来就两句话:尽早准备,能投则投。
如何投简历:
准备简历:
在投简历之前,必须先打磨好简历,甚至在投简历的过程中,你还要不断地修改简历,力争简历越来越好。
现在就业环境有多差不必多说,这种情况下,每个人都应该武装到牙齿,每一个细节都要把握好,你根本不知道你的对手为了这份工作做了多少准备,想不被淘汰你就要比别人更努力。
之所以这样说,是因为很多人的简历命名都非常随便,但是一份好的简历,从命名开始都应该认真对待。
简历具体写法参照“沉默王二”的《如何写好简历(第三版)》和的《精选简历:基本信息、教育背景、专业技能、工作经验、项目经历、实习经历、荣誉证书写的比较好的例子》。
然后就是简历里面的内容自己一定要能 hold 住 70% 以上,我倾向于写一份引导式简历,把热门问题都写在了技术栈里,类似这样:
声明:这种做法未必是好的,纯粹是因为我太菜了,如果我只写个“熟悉Java”,我真没把握他问的问题我都能答上,还不如写点我有准备的。两利相权从其重,两害相权从其轻而已。
博主“三分恶”对于引导式简历的看法:
往哪投简历:
这是最扯淡的,很多同学受限于信息差,竟然根本不知道哪些公司可以投,不知道哪些公司开了实习。
我想说,环境越差越要突破自己的信息壁垒,无论是和优秀同学多交流,和学长学姐多沟通,多刷刷牛客网,甚至多加一些就业群也好,你总得有渠道和就业市场接轨吧。
我认识很多本科并不好的同学,甚至会跑很远,专去985的大学去蹭招聘会听,去投简历,这样的人往往更能获得成功。
同时注意 内推 的重要性,很多机会是你不争取就没有的,信息差是很多人和offer擦肩而过的原因,需要多和优秀的人沟通、交流。
这是我3月份关注的招聘公众号个数,目的就是随时掌握招聘第一手信息:
再就是怎么挑选企业和岗位。
企业的建议是:全投。
这都什么时候了,咱还挑上了?3月份的时候,我身边的同学,这个瞧不上,那个不想去,现在快5月份了没有offer,外包公司都开始抢着投了。全投不代表都要去,最起码可以增长面试经验,大不了最后拒绝掉offer就是了。所以不管是瞧不上的还是感觉会高攀的,全都要投,全都尽力准备。
有人会说浪费时间,但是学生的时间其实是最不值钱的,每一个有资格面试你的人,其一小时内的产出不知道值多少钱了,和他们交流,我们还能学到不少东西,不只是技术上的,所以根本不会亏。
岗位的建议是:一志愿投自己意向的,二志愿投热门的。
很多同学觉得自己是Java岗就只投Java的,但其实语言没那么重要,如果意向的岗位没机会了,投一个别的方向的,一样有机会进面,甚至拿offer,还是那句话,可以不去,但不要不尝试。
如何应对笔试:
笔试的题目往往比面试难不少。
如果你很菜,我的建议是找同学一起帮忙做,不要单打独斗,懂的都懂。
如果找工作的准备时间有限,千万不要把大量的时间用在应对笔试上,笔试的重要性和面试相比低很多,至于面试环节的手撕代码,那和笔试更是两回事了。
如何应对面试:
前言:
首先是要在牛客、就业群里尽可能去收集面试信息,很多人会把自己的面经公开出来,一定要看,会帮大忙的。
其次是手稿准备。我是每次答辩、演讲、面试都会准备手稿的,因为我相信机会是留给有准备的人的。
自我介绍的部分大概准备个一两分钟就行,内容这里我从网上找一篇给大家做参考:
面试官您好,我叫***,来自***,现为***计算机学院硕士二年级学生,主修专业是计算机技术;读研以来,我一共参与了三个项目的研发,那我就按照时间的先后来说吧。在2018年6月到2019年5月我参与了第一个项目:***工程管理系统,该软件主要是为了***厂的信息化管理而开发的一套系统,分为微信公众号开发和web端开发。该项目前端采用Vue框架,后台部分使用的是Java语言,基于Spring+ SpringMvc+Mybatis框架进行开发的,其中运用Activity工作流框架对工作流程的进行管理。数据库运用mysql来支持。版本控制使用的gitlab。在2019年5月至2019年8月参与第二个项目***软件1.0版本的开发,因项目需要在此期间于中国***实验室边实习边开发。该项目使用的是***语言,运用WPF框架以及Unity3D引擎,开发一套***三维场景仿真软件。在2019年9月至今参与第三个项目的***软件2.0版本的开发。因为实验室一直是以***为主的,由于实验室之前的***软件难以维护,二次开发很困难,所以在实习结束后在老师和师兄师弟们的一起努力下运用所学知识以及经验对以前开发的***软件进行重新开发。该项使用的是***语言,运用WPF框架以及Unity3D引擎。这两个项目版本控制都使用的是SVN。但是从技术到性能以及开发效率都有了很大的提升。以上就是我研究生期间所参与的项目。对于学生工作方面我从本科到目前做了5年的学生工作。(由于在本科期间着重于学生工作,分别担任了计算机学院大一班级班主任,心理健康教育中心学生副主席、学生会综合实践部部长以及辩论队队长等职务。因此,在多重压力下,我学会了如何去合理安排时间,让我的学习、工作和业余爱好都不耽误。最后,感谢贵公司能给我这次面试的机会,谢谢!
这篇内容可以说是很充实了。
而且要注意,企业要找的是一个 能干活的人,不是找一个好学生,有些同学在自我介绍里一直介绍说自己学了哪些课程,得了多少分。我觉得如果你是本科生还能理解,如果你是一个研究生,这就是完全不适合的内容了。
项目:
项目这一块是重中之重。
其实面试官要的不是你做的项目有多么贴合互联网,用的多么高级的技术,大公司都是看你的综合能力,看你对待事情的认真程度以及学习能力。
无论你是项目和互联网不符合,还是说你没有做过项目,前者我建议多在项目中多讲自己解决问题的过程,后者的话可以讲讲自己三年的研究内容,即使没有项目但是你有思考和解决问题的能力就可以了。
如果已经有项目经历,我的做法是:
1. 自己把整个项目的流程捋清楚,怎么登录的、怎么处理某个业务的、某个功能是哪个模块在起作用,可以结合chatGPT帮忙捋一捋。
2. 结合chatGPT把项目的核心表结构设计出来,每个表是怎么使用的,有什么核心字段,表之间是什么关系弄清楚。
3. 弄明白项目的架构,后端怎么分的模块。
4. 弄明白项目怎么部署的,前端怎么部署,后端怎么部署,数据库怎么部署,环境怎么配置的。这块是证明你真的有做过项目,不是纸上谈兵。
5. 找到项目的亮点,说清楚为什么要这样做,其必要性在哪。这个很多人有欠缺,只说自己用了什么高大上的组件,问其为什么要用,一问三不知,这真的很不好。比如为什么要用Docker,用虚拟机不行吗?为什么要用redis,直接用MySQL不行吗?你说你用了ThreadLocal,那你知道ThreadLocal的问题吗,你知道ThreadLocal现在真实开发过程中为什么不用吗?这些内容既是亮点,也可以凸显自己解决问题的思路,让面试官看到你的思考过程。这里是我介绍项目亮点的部分内容:
一开始我们想到了利用虚拟机,为代码执行提供安全的隔离环境,同时维持每个项目的独立配置需求。但是虚拟机的启动速度非常慢,并且虚拟机的资源消耗实在是太高,一台机器上启动不了几台虚拟机就会非常卡顿。
有什么能代替虚拟机的功能但又非常轻量呢?我们想到了当时比较流行的 Docker,Docker 在资源效率、启动速度、可移植性上相比虚拟机有明显优势。我们完全可以让用户的工程代码执行在不同的 Docker 容器中,这样就可以得到一个代码运行的隔离沙箱,实现和虚拟机一样的安全性。
6. 我并没有上来就说docker多么多么好,我肯定知道docker比虚拟机好啊,但我这里就要故意先说虚拟机,假装自己有一个思考的过程在里面,这样更能凸显项目的真实性。这样来准备项目的部分,绝对没问题。
7. 在项目中穿插八股的内容,方便引导面试官后面问你具体八股的内容,比如:
那多文件的交互怎么办?如何将用户指令和特定进程绑定起来呢?当时我正在学习一些线程池的知识,因为要使用多线程来启动和管理外部进程。那么,既然线程可以有线程池,那我们能不能借鉴线程池的思想,在后端也维护一个进程池呢,不同之处在于,线程池管理的是线程,而我们要管理的是进程。
于是,我们利用线程安全的 ConcurrentHashMap 写了一个接口来统一管理进程,每次新建一个进程的时候,就在进程池中存储这个进程,同时给前端返回进程的句柄,这样前端在进行信息传输的时候,通过这个进程句柄就可以实现和对应的进程进行交互,而在程序终止的时候,后端就会销毁进程,并从进程池中移除该进程。
8. 这里我故意提到线程池和ConcurrentHashMap,目的就是让面试官来问我……
9. 如果你准备了两个项目,注意两个项目不要 同质化,最好要有区分度,不要这里写了redis做缓存,那边又写redis做缓存,很无聊,显得你好像没什么可写的。同时注意两个项目在某些方面最好 对等,如果你一个项目写的特别牛逼,特别新颖,另一个项目写的是瑞吉外卖,那么面试官基本上不会问这个外卖项目的事,因为太烂大街了,只会逮着你另一个项目问,那你要做好对应的准备。
10. 上面说的都是代码实现方面的一些准备,其实还有另一个方向是可以准备的,就是项目管理上的。因为很多项目其实是团队开发的,所以就涉及到团队合作,技术选型、需求对接、项目验收方面的事。这些部分如果作为程序员,你能说个七七八八,是很让面试官刮目相看的。比如这些问题:
甲方的需求不断变动,怎么节省人力资源,避免无用的工作?
开发人员中间从研二换为了研一的,如何快速交接工作,避免进度的延后?
11. 这些内容和代码无关,但和业务、团队有关了。你可以说自己在项目中担任小组长的角色,接触到了这些东西,然后怎么解决的,有什么体会。我记得面美团的时候,面试官本来心不在焉,一直劝退我,当我开始说这块的时候,他直接眼前一亮,表示非常有同感,火速给我通过了。当然这块也是最难准备的,因为没有项目经验的话,很容易说的时候露怯。。。
记住一句话:介绍项目的时候,核心还是推销自己,不要推销项目!
有些同学跟卖产品一样,一个劲说项目有多厉害,其实项目描述一两句就够了,面试官经验丰富的很,完全明白我们的项目是什么性质。
更多的时候你要介绍自己在项目开发过程发挥的作用,多夸夸自己,没有人在乎你的项目有多牛逼。
八股:
先按照上文准备简历,再按照简历来针对性准备八股。
八股我选择了二哥的《面渣逆袭手册》,其里面的八股问题非常非常典型,命中率非常高,这些问题如果都能回答上,已经可以吊打70%以上的人了。
缺点是面渣系列的部分问题的回答不是最好的,以及部分有关联、有递进的问题,序号没有挨在一起,看的时候自己要注意跳着看,有助于理解。
Java的部分我会对照着JavaGuide的博客来看。
数据库和Redis的部分,如果理解不太清楚,可以看《小林coding》来加深理解,感觉还可以。
注意,八股是不可能背完的,这些内容是非常非常多的,不可能面面俱到,一定要做好取舍,所以我才说先准备简历,再准备八股。
实习生往往更看重的是你的基础扎不扎实,如果你基础很扎实,你在简历上写微服务、分布式、消息队列、Elasticsearch,这都是锦上添花,加分没得说。
但是!如果你基础根本就不好,和我一样靠八股临时抱佛脚,那就不要想这些东西了!把Java后端四大件整好了,比什么都强!虽然说有可能因为你简历里面没有这些内容,导致你去不了某些岗位,那也只能说明这些岗位本来你就没有机会,你写了答不上来一样会被筛掉。
如果面试官非要问你简历上没有的内容,知道多少回答多少,不知道就说不知道,但是会在接下来弥补自己的知识欠缺,这很正常。
不少面试官更喜欢基础扎实的实习生,因为框架其实上手很快,基础够扎实就没什么好担心的。
这里补充一下为什么我觉得《面渣逆袭手册》好,因为他很”精华“,不多不少刚刚好。如果你觉得它不够,那比他更够的,都像百科全书一样几百页,你能吸收得过来你就不是”面渣“了。如果你觉得它太多,你就结合自己简历,摘录手册里对应的内容,保证可以应付大多数场景。
以下是我针对自己简历整理的面经目录:
这份主要是在精不在多,要确保自己半小时内能过一遍。而且其内容我是以能轻松读出来为主,做了很多口语化的设计,不给自己任何记忆的负担。
内容我是自己结合各大面经整理成自己的语言,但问题都是手册里的。整理我大概花了一天的时候,但内容我慢慢打磨,几乎可以做到直接照着读出来,面试官也不会认为我在背八股。
再包括下面这个,我英语很不好,所以我不放任何英语单词进去(如果你英语也不好,你也完全可以这样做,没人在意你的英语发言有多标准),面试官问我参数,我直接说中文,一样不会出问题。
在回答面试官问题时,要记住一个要点:关键词。
举个例子,当我问你MVCC的时候,你哪怕整个过程都可能不太清楚,但你一定要说出关键词:隐式字段、回滚日志、版本链和 Read View(一致性视图),面试官听到这个就已经满意了,并不会太在乎你其余的话。
相反,我见过有的同学说半天,内容不能算错,但是就是说不出关键词, 让人感觉很不舒服,好像你的学习都流于表面了,不够深刻。
手撕代码:
一方面如上文所说,多刷刷牛客,看看同一场面试的人,被问到了什么问题。
另一方面,刷力扣hot100,刷代码随想录。
时间够多就多刷几遍代码随想录,绝对没问题。
手撕代码比笔试简单太多了,而且如果面试官对你前面的表现满意,就不会给你出太难的题。
面试会考的题除了算法,还会有简单的SQL题、简单的多线程的题,后面两个也需要稍微做些准备,但都比较基础。
如何应对hr面:
首先,别太老实。
很多同学学生思维太重了,老把自己当好学生,不撒谎不欺骗不敢提意见,但其实出了社会就要转变心态,没人会把你当学生。
问你什么时候能到岗?能说早就别说晚,除非你强到离谱,不然别人说自己下周就能到岗,你拿什么跟人竞争。
有同学说那我下周到不了岗啊,到时候怎么办?其实只要 邮件 下来了,有很多方式可以跟hr解释到岗时间的延后,因为offer邮件发下来之后再取消其实很麻烦,往往不会有人闲得无聊因为你晚一点到岗就取消你的实习offer的,大家都很忙的。
问你实习时长?往长了说,大不了随时能跑,实习你最大,怕什么。你真以为别人说6个月的中途不跑?大家都撒谎的情况下你不撒谎你就吃亏!
注意,近些年毁offer的情况频发,所以千万不要半场开香槟,同理,在邮件下来之前,要不择手段。
哪怕是oc的电话,也不代表你就稳了,你要做的就是尽可能稳住hr,让他相信你诚心想来,千金不换,别傻不啦叽地说自己的心里话,你以为你诚心对公司,公司能诚信对待你?邮件没下来之后,一切都是虚的。
如何应对offer邮件:
今年环境太差了,如果你手上没有offer,建议直接接受,后面有更好的再拒绝,不要让自己手上一个也没有。
有同学说怕接受了再拒绝,会进秋招黑名单。我认为这就跟不敢面试怕脏面评一样可笑:大佬根本不会在意这个,菜鸟你在意也根本没用。
最后:
每次面试都尽可能复盘,找到自己的不足并修正,你面得越多,你就越有经验。
甚至面到后面,你都可以引导面试官了,你也能大概猜到他接下来要问什么,以及他想听到什么答案。
我还记得我当时某一次面试,锁升级我没答上来,第二次面别家的时候,我主动在八股环节提到锁升级,面试官赞赏地说我基础很扎实,但其实我也只是临时背了相关内容。
记住,如果你成功拿到了一个offer,不要骄傲,很有可能只是运气好,你仍然需要继续努力,在下一次面试的时候全力以赴,为秋招好做准备。