计算机怎么找第一份实习
针对计算机学生分享首份实习找寻策略,涵盖简历项目优化、投递时机及大厂面试注意事项。
UP主: 进击的小波 · 时长: 14:01 · 🔗 B站原视频
标签: 计算机实习 · 求职技巧 · 简历优化 · 程序员 · 职场经验
找第一份实习的两个核心条件
最近B站有一个大二还是大三的211学生问我,想找一份日常实习怎么找。他给了我几个项目让我帮他选,或者问实习怎么投、有没有什么技巧。我大概给他讲了一下,先简历搞出来去投试试。但是回答太笼统不够具体,他还是比较迷惑。那我就出一期视频大概讲一下,如果你想找第一份日常实习,需要满足两个条件。
第一个就是这家公司、这个团队缺一个干杂活的,你要在缺人的窗口期。第二个你需要获得面试官的认可,或者先获得HR筛简历的那个人的认可,然后才能到面试官这一关。因为那个面试官大概率是和你一组的,可能是带你的那个人。如果团队不缺人,第一个条件就不满足,你怎么投都没用。所以这东西很看运气,看你能不能碰上这个窗口期。
警惕海投:大厂面试留痕机制
你可以选择海投,比如在Boss直聘、实习僧或者牛客上。但是要注意,不管是什么渠道,如果收你简历的人让你在Moka,或者这家公司有自己的招聘平台(比如阿里、腾讯、百度都有自己的招聘平台),就意味着你的面试是留痕的。
你的每一场面试,面试官都要写面评。规模稍微大一点或正规一点的公司,对面试官是有要求的,如果面试官表现很随意甚至diss你,对公司形象有影响。所以你要给面试官留下一个好印象,觉得这家公司是不错的。既然面试留痕,如果你表现很差、没有通过面试,面评写得“捞得一匹”,面试官没有手下留情的话,这个面评可能会伴随你一年左右。有的公司可能会保留更久,直到你换平台。如果你今年投了,明年再去投其他部门的岗位,面试官一看你去年面过,把面评翻出来一看感觉不咋地。所以说,如果你没有准备好,请不要拿这些有自己招聘平台的公司去练手。
简历项目优化:学会做减法
第二点就是获得面试官的认可。这就像你跟一个人处不处得来,非常玄学。一般来说,如果你没有实习过,没有接触过商业化项目,为了简历上有东西你会在网上找,比如在GitLab、Gitee或者B站上翻项目。只要是在公司干过活的,一眼就能看出来,因为网上的项目就是那几个场景来回折腾。你再怎么包装,面试官对你的第一印象就是“没有实习过的学生”,这就定性了。
我给一个方法:项目做减法,砍功能。不要做登录、查询、关注好友,全部删掉。把项目的描述点聚焦于业务功能上。比如常见的论坛评论,多级评论怎么设计?父子表怎么做?如果还有并发层级呢?比如我发了一条主评论,另一个人去评论这条主评论,在主评论被删的一瞬间,另一个人去提交了子评论,这种情况怎么办?会不会出现空指针?主评论删了,子评论是全部删掉,还是置为不可见?你是怎么设计这种业务场景的?
还有状态变化的并发问题。比如订单状态从“待支付”置为“已支付”,如果两个操作同时过来,操作数据库的同一条数据,会不会出现并发问题?会不会出现两个操作执行过后,这条订单的数据还是待支付?比如状态由1更新到2,和置为1的操作同时发生,会不会导致流转有问题?这种判断是在代码层做,还是在数据库层做?
业务场景深挖示例(以毕设爬虫为例)
拿我毕设的一个功能来讲,我毕设是做推荐算法,数据集和训练集都挺折腾。比如我要把招聘网站的岗位信息全部扒到数据库的一张表里。网站那么多,比如美团、小红书、携程、腾讯、阿里,阿里还分那么多子公司。如果我用Java写爬虫,是一个一个编吗?执行定时任务时,想执行某一个网站,是不是要写if判断执行哪一个?那我能不能用反射加策略模式,把配置全部写到MySQL里面去?执行的时候从MySQL捞出ClassName,用反射去创建这个Bean,再去Invoke它的某个方法,增强一下扩展性。
第二个,编爬虫是不是很累?来一个编一个。能不能抽象出一个通用的逻辑?我只需要配置一些定位参数,比如用XPath、Class定位或者标签定位,把这些招聘网站的数据捞出来。最后达成的效果是,我只需要配置参数就能把网站的招聘数据全拉出来。第三个问题,我怎么判断录入的岗位已经在表里面了?这些都是可以商榷的业务点。
所以项目就做减法,围绕几个核心业务功能去聊,要把帽子变小。面试官是根据你的简历去问的,不要给自己挖坑。如果你写什么都做了,面试官一问全是几张表的增删改查,他也尴尬你也尴尬。
实习面试技术栈准备指南
剩下的技术栈要求就快一点过:
Spring:你只要会声明Bean、注入Bean,然后直接调用方法就够了。基础概念理解一下,比如控制反转IOC,能扯几句就行。其余的面试遇到没见过的,背下来就行,千万不要去深入。
MySQL:这是重点。你的SQL要熟,把上数据库课的SQL题拉出来写一写。八股文要理解,比如B+树、隔离机制(脏读、幻读在隔离机制下有什么表现)、锁(行锁、间隙锁、表锁)。像Redo log、Undo log这种直接背就行,因为你目前实操也用不到。
Java基础:重点研究一下HashMap和ConcurrentHashMap的源码。注意是自己去读源码或者debug,理解它的抽象思维。比如ConcurrentHashMap是怎么控制并发的?锁的粒度是怎么拆分的?是每个put方法都加Synchronized把整个Map锁死,还是里面有拆分?至于红黑树,了解一下背下来就行,没必要深挖。
算法:高级排序算法一定要会写,比如快速排序等,要在高级排序上下功夫。LeetCode上常见的简单、中等题刷个100来道。但如果是小公司面试,大概率遇不到太难的,顶多让你用非递归方法写个树的中序遍历就顶天了。
不要去深挖的技术:不要去研究微服务,不要研究消息队列,不要研究Redis。遇到不会的或者常问的,背一下常见八股文就行,不需要去深入研究,要把重点放在基础功能上。
计算机网络:全都是理解然后背一下。特别是TCP三次握手和四次挥手,理解一下握手和挥手时Client和Server的状态变化。比如第二次挥手完,我变成了什么状态,对方变成了什么状态。其他网络知识稍微背一下,因为你平时实操真的遇不到,背下来应付面试就够用了。