25秋招小结以及心得
先来个简单的自我介绍,双9科班,方向是Java语言后端开发,暑期在某Java大厂实习3个月,没转正,秋招卡着11月拿到了几家大厂(中厂反而都挂了),最后选择了鹅。之所以说BG,是因为如果你希望能拿到大厂offer,考虑到我的BG算是中上水平,那么你需要做得比我好,而不是仅仅达到基本要求。
对于刚刚大一、研一的新生,倒也不必要直接选择语言和方向,可以参考诸如 *******************这一类的学习网站快速建立计算机体系逻辑或者加入到学校的实验室/兴趣小组中,而不是直接落入到互联网民工中。回想到读研之前本科混了4年,我对互联网还只停留在算法、前后端开发、测试这几个方面,也不知道具体各个岗位都是负责什么内容,算法分为哪些方面,选择面无疑窄了很多,看到今年同门拿到大模型的天价总包也很是羡慕,所以如果你还有时间(即不是现在的大三、研二),都是可以考虑了解更多的方向找到你所热爱的。如果找不到或者学习之后发现不感兴趣怎么办?当然是回来看帖子的后续内容。并且现在的开发也不仅仅只是开发,很多研究生同学都是做算法的,对于涉及到算法的开发岗位也会有额外的加分。
扯淡结束,如果你是现在的大三、研二还是0准备的话,从现在开始也不晚,我和几个朋友的观点是,保证每天6h学习时间,1个月足以学完Java的绝大多数内容,更多的细节内容和复习可以留到之后再去补充。我觉得一共分为三方面,规划排期、具体执行以及是实践,对应学习规划、如何学习内容以及如何面试。
Java开发的面试内容包括八股[ Java基础(语言特性 +集合 + Juc + Jvm + Spring) + 数据库(Mysql, Redis/或其他nosql如MongoDB)+ 计算机基础(计网 + 操作系统 + 基本的Linux) + 额外内容(消息队列 + 高并发、可用、分布式、系统设计)] + 项目拷打 + 算法题。我会给出学习路线以及建议和资料,注意,对于提到的资料,我都是白嫖的,没有冲过会员之类的内容,我觉得白嫖的内容足够大家用了,如果你确实有需要再去考虑会员/知识星球。
先从八股说起,对于具体的面试题内容,这里空白太小,我写不下,各位可以去牛客上搜索,但切记,一切的八股都仅供参考,这些是他人的问题,和你可能完全不同,不可全信,不同公司、小组、面试官以及你们之间不同的简历都会影响到八股问题。将其看作高考/考研前的模拟题即可,这不是你的真正试卷。有用的是你面的部门甚至小组的面经,你可以推测出面试官偏好的倾向(但也不排除面试官从一个题库中选题,这种没救了)。
我个人的学习路线是Java基础(B站上很多视频,我看的是韩顺平,尚硅谷、黑马的也都可以 - 注意,这部分只是基础,快速了解基本的语法即可,没必要抱着本书或者多个课程深入学习),练习的话就是学了一下集合内容直接去刷力扣熟悉语法(集合常用的只有List, Set, Map, Queue, 初步学习不会可以直接看题解,再去百度/GPT对应语法的含义),有了基本的语言基础建议此时去学习Spring,准确来说是Spring + SpringBoot + Mybatis(SSM),时间紧直接学SpringBoot, 建议按部就班学习,这部分直接看B站视频即可,涉及到很多设置,视频更加流畅。这部分面试常见的只会问(Ioc/Aop/Spring事务/SpringBoot启动流程)之类的,八股不算多,甚至可以直接背,但没有这个你就无法后续推进项目。
学完基本的SSM后,可以直接去做练手项目了,可以直接B站找各种商城、牛客的仿牛客网、黑马的外卖等,这个其实是熟悉基本的Spring使用以及项目开发过程,做完之后也可以作为自己的项目。有人会问,这些都烂大街了,怎么办?最好的自然是用实习项目或者实验室项目顶替(我个人是实验室项目)或基于自己的爱好去开发,之前所学的知识用于过度的练手。其次可以考虑去Github或者B站上找相关的项目,选一个文档相对好一点且你觉得不烂大街的,最后还可以考虑套皮改写项目描述。
有了项目之后,就是八股盛宴了,基础的资料网站主推小林,可以将数据库、计算机基础学的很扎实,不过内容是有部分缺少的(例如Redis中没分布式锁,也没分布式等内容),这些可以自己去找内容补上,学习的时候又不是只会看一份,建议多个对比学习。现在也多了面试题板块,有了Java的内容,个人感觉深度和广度都有了。Java基础的直接JavaGuide即可,以及https://pdai.tech/ 但这里内容太多了...,此外还有***********************这些都是大而全的,免费的部分足够你学习了。
Java基础 + 集合 : 基本的语法、反射、面向对象三大特性、包装类, 直接看课和资料即可。熟悉语法可以自己写写小demo或者直接刷力扣。
Juc : 建议B站黑马Juc , 结合https://github.com/RedSpider1/concurrent一起学习,更深入的可以考虑博客,书也可以去看。
Jvm: B站黑马Jvm。之后看周志明老师的《深入理解Java虚拟机》书中有些内容过时,但总体很完整。Jvm主要分为内存、垃圾回收、类的加载三部分,很常见的一个问题是GC, 可以结合大厂的技术博客https://tech.meituan.com/2020/11/12/java-9-cms-gc.html,查看更加精细化的内容。例如循环依赖已经被解决了,那为什么仍然不是用呢,还有什么缺点呢?
SSM : 八股就是AOP,IoC等老生常谈的内容,实际还是要去看怎么使用,B站找个播放量不低的SSM课程即可。后续的学习直接跟项目走就好。
数据库:Mysql 直接小林 + 45讲(极客时间的课程,盗版很多,看了后一本不需要看这个了) + Mysql是怎样运行的(很多,很细,我没看完..) , 以及声哥的手写Mysql,总体来说小林的足够了,在掌握的基础上,再去考虑深入。 Redis直接小林即可
基础知识同理看小林,也可以看大黑书来补全知识体系(CSAPP至今只看完了100页,听说HIT考研考这个,看完的可以去试试),或者网络是怎样连接的/计算机是怎样跑起来的这类通俗一点的。Linux对于普通的Javaer同学而言,大部分只熟悉一点命令,很少去主动部署服务,可以去尝试部署服务运行,并排查对应的问题,Steam有个Hacket的游戏也能帮你提升能力(确信只是为了学习命令,毕竟这游戏太枯燥了)。
对于额外的内容,消息队列会在项目中遇到,需要时直接学对应的八股即可,系统设计以及三高等内容,都可以在JavaGudie中找到,对于深入的内容,一方面是看网上的博客与帖子,例如带篮子的帖子(举个例子,我自己也没细看), 以及参考大厂的技术博客(例如B站就有点赞系统设计的文章) , 还可以去Github上寻找。
最后到了力扣,top100足以,找个你能看得懂的题解,自己去实现,逐步理解即可。对于新手,可以参考卡哥的代码随想录系统学习数据结构,以及你的数据结构教材、普林斯顿的《算法》足以。此外,英文能力较好的可以试试CS61B, 使用Java语言的数据结构课程,全英课程。这里提一嘴,笔试和面试的题目是不同的,笔试的遵循难度分布,很少原题,这部分大部分人基本只能做出来1-2/3题(例如美团5题就是能做出4题),这里其实都是参考价值,鹅就不看重笔试(甚至都没有),字节我也是没做笔试,美团和阿里系还是需要的,如果想去华子,华子笔试有个及格线,应该是150,至少1.5题的水平,还是需要多练练。关于笔试题解可以参考万诺coding。面试的题很多都是力扣原题,大部分都是hot100,看面经也有很多奇奇怪怪的题目,有余力准备一下就好。
提一下设计模式,这玩意平时用不到,但实习过程中看到很多优秀的代码都用到了这部分内容,可以初步学习一下,看大话数据结构即可,能应用到项目中也是一个亮点。
最后是实战部分啦,我个人水平一般,offer拿的都比较晚,暑期5月末,秋招11月,只能给一点愚见。
1 水平较好的 + 学历可以(至少一个211), 可以尽早投,尽可能早,晚点就没offer了,只能等补录,不要等来你学校开宣讲会了再去投,我秋招9月末回学校参加宣讲会投递,赶上10.1等了3周才有笔试,10月中下旬才开始面。有人觉得,我没准备好,实际上你投了,HR还有筛选,部分公司还有笔试,约面后还有延迟,一般起码1周左右,足以复习了。如果BG差一点,可以考虑晚一些投,今年是2月末开始暑期,8月初各家都开始了,可以等到8月末开始投(这部分纯属个人臆测,不构成建议)。
2 面试是一个你和面试官沟通的过程,这是个双向的,不是你问我答的电视节目,是一个你要展示出自己的能力,不管是学习、沟通、思考深度(体现在项目和实习)甚至颜值等,都是需要的,毕竟面试官是在选将来要从事的同事,不是AI机器问答官。
3 做项目和实习的过程中,即使记录亮点和文档,作为你之后的资本,我就是实习摸鱼,最后实习完花了一周整理实习内容,但很多资料都在内网,我自己只能猜测当时的想法,拖到9月中才开始投,导致9月没面试,10月中间一周,一天2-3场面试或笔试,周末还有银行的笔试,快累死。 很多公司那时候offer都发完了,例如贝壳,美团。
最后提一嘴性格评测,不建议做的太快,以及华子这玩意是会挂人的。
不要因失去太阳而哭泣,这样你也会失去星星,9本中也有诸多混日子的(例如我), 我读研时组里最有水平的大佬是双非本科,互联网已经算是相对公平(不是过于卡学历),有能力也是真的可以展现出来(比赛、开源、项目、实习),希望各位不要给自己设限。
转眼已经写了4000字了,1个半小时,尽可能包括Java开发的方方面面,但也会有疏漏,可以考虑在评论区列出来与大家交流。
#我的实习求职记录#