---
开篇寄语
这是我关于秋招经历的最后一篇总结,也是最为详尽的一篇。秋招,不仅是我研究生生涯的答卷,更是未来职业生涯的起点。在此,我想将这份心得分享给所有正在求职路上奋斗的朋友们,也为了不忘初心,铭记这段宝贵的经历。
从迷茫到坚定
我曾是一名电子信息工程专业的本科生,初入计算机领域时,只接触过浅尝辄止的C语言。大三时,我尝试涉足Java、Android及前端开发,但那时的我,仍是一个入门菜鸟,对软件开发的世界知之甚少。初次应聘公司,连简历筛选都未能通过。
那时的我,对游戏开发怀有浓厚兴趣,特别是网易游戏。但看到网易游戏研发工程师的招聘要求时,我才明白自己的不足。这个契机促使我决定考研,并选择了华科作为目标院校。那一年,我全心投入学习,仿佛与世隔绝,每天稳定地在图书馆度过8小时以上,那段时光是我为梦想努力的见证。
研究生时期的方向抉择
读研后,我面临选择导师和方向的重要决策。由于我倾向于在大公司锻炼,选择了以实习为导向的导师。在选择研究方向时,我经历了长时间的迷茫和摇摆。经过深入了解和对个人兴趣、学习经历的考量,我最终选择了Java开发方向,并在学校的实训项目中开始了我的Java学习之路。
笨鸟先飞,勤能补拙
尽管我的入学成绩优异,但与科班出身的同学相比,我仍有一定差距。为了弥补不足,我利用一切空闲时间自学,从操作系统、计算机网络到数据库等本科课程,我都一一涉猎。我还曾偷偷旁听本科生的课程,以解决自学中的困惑。尽管自学的过程中有许多困难,但每一周的进步都让我更加坚定自己的方向。
除此之外,我还积极参与各种项目和实践,通过实际操作来加深理解和应用知识。每一次的成功都让我更加自信,也让我更加明白自己的不足和需要努力的方向。
回首过去,秋招的经历是我人生中宝贵的经历。它不仅是我研究生生涯的答卷,更是我未来职业生涯的起点。在此,我想将这份经验和心得分享给所有正在求职路上奋斗的朋友们,希望你们能从我的经历中汲取力量,坚定自己的方向,不断前行。
---
研一下半学期,我意识到自己的不足。Java Web项目实训让我意识到技术实践的重要性。面对挑战,我选择了坚守实验室,将学习气氛发挥到极致。从早上9点到晚上9点,Java书籍成为我的日常陪伴。《深入理解JVM虚拟机》、《Java并发编程艺术》等书籍的研读,让我对Java有了更深的理解。技术博客的浏览也让我收获颇丰。面试前的准备,让我对每一个知识点都了如指掌。笔记、面经、面试技巧,都成为我求职路上的得力助手。经过数月的努力,我从面试小白成长为面霸,最终获得了心仪的实习机会。
实习之路,让我真正接触到大公司的开发流程。在猪场的实习经历让我快速成长,但也让我看到了自己的不足。为了熟悉部门技术栈,我在熊厂更加努力。通过请教导师、阅读代码和文档、与同事交流,我逐渐熟悉了部门的项目架构和私有云技术栈。为了深入理解每一块代码的作用,我甚至为一些模块的代码写了注释。底层技术的挑战让我更加坚定自己的方向。这段实习经历让我更加成熟,也让我更加坚定了自己的职业追求。
这段经历让我明白,无论遇到什么困难,只要努力就会有收获。从旁听课程到实习面霸,从菜鸟到成熟开发者,每一步都充满了挑战和机遇。实习路上,我不仅学到了知识,更学会了如何面对挑战、如何成长。这段经历将成为我人生中最宝贵的财富之一。作为一名不断追求知识和技术进步的学者,我的学习旅程充满了挑战和收获。为了深化对虚拟化技术和Linux内核的理解,我不仅阅读了众多博客,还实际操作了虚拟机和容器,深入研究了《OpenStack设计与实现》和《docker技术入门实战》等书籍。但我深知,这些只是知识的冰山一角,真正的挑战在于如何将知识深入,融入自己的知识体系。
我深知实习生活的欺骗性,即使佩戴着和正式员工相同的工牌,做着类似的工作,也不能代表我已经达到了他们的知识水平。事实上,转正之前,我还有很长的路要走。我不断前进,不断学习,珍惜在公司里的每一刻,充分利用公司提供的资源。
在研究生期间,我坚持做笔记和写博客,这是我做知识积累的两种方式。在春招结束后,我发现自己遗忘了很多知识,尤其是那些理解不深的知识点。这使我意识到,虽然记录的内容很多,但真正消化吸收的内容很少。我决定重新学习Java后端,推翻原有的知识体系,重建新的知识框架。
面对即将到来的秋招复习,我已经做好了充分的准备。“具体可靠的学习计划”是我取胜的法宝。在三个月的时间里,我会按照Java后端的路线图安排好复习计划。我会整合各种资源,制定清晰的学习目标,并且严格按照计划执行。我发现,一旦有了清晰的计划,我的学习效率和执行力都会大大提高。
我的复习方法主要是结合高质量的博客和代码实践。我会花时间去寻找和解读高质量的博客文章,尤其是那些关于源码解读的博客。然后我会对博客进行整合和补充,确保自己掌握了所有的知识点。我还会通过写博客来巩固知识,整理出系列文章。这种学习方式不仅让我能够深入理解知识,还能够将知识系统化地融入我的知识体系。
在写博客的过程中,我吸取了之前的教训,注重深度阅读。我会花时间去深度理解和消化每一篇文章的内容,而不是像读快餐文章一样一带而过。我知道只有这样,才能让这部分内容真正融入我的知识体系。
我的学习之路虽然充满挑战,但每一步都充满了收获和成长。我深知学无止境,只有不断学习,不断进步,才能在技术的道路上走得更远。我会继续前行,不断探索新的知识和技术,为自己的未来打下坚实的基础。 深化项目实践,巩固实战经验
在实习期间,我接触的项目规模庞大,涉及模块众多,虽然让我收获颇丰,但也发现对项目整体架构的把握能力仍需加强。为此,我决定利用这段时间来巩固我的项目实践能力。这里的实践能力主要是指对项目架构的掌握能力、业务开发的熟练度以及后端技术的熟悉程度。
我花了大约一个月的时间,通过模仿两个开源项目,完成了两个项目的开发。这两个项目主要使用SpringBoot进行快速开发,并涉及了redis、云存储等常用后端技术,以及solr、爬虫等技术的运用。虽然项目难度并不算高,但在这段时间里,我迅速熟悉了完整项目开发的流程。每天进行迭代,通过Git跟进版本,每个版本都有明确的更新内容,这使我对项目架构有了更深刻的理解。
我还尝试了一些常见的后端组件的demo,如dubbo、zookeeper、消息队列等,以便更直观地了解这些技术。这些实践让我在实践中更加深入地理解了它们的原理。
刷题攻略:坚持与方法并重
算法题在秋招笔试面试中占据重要地位,对于非科班出身的我来说,更是挑战重重。我放弃了大量刷LeetCode题目的方法,转而选择了更有效的刷题方式。
我重新刷了剑指offer的题目,并对每道题目进行总结,确保能够熟练掌握每一道题目。因为我知道剑指offer中的题目是面试时的热门题目,所以掌握这些题目至关重要。
接下来,我开始刷LeetCode题目。我没有按照标签或顺序刷题,而是参考了一位大佬的LeetCode刷题指南。他将各类题目进行了归纳,只选择每部分比较经典的题目。我前后刷了大约100多道LeetCode题目,并在第二遍复习时进行了总结。
我还着重刷了大厂的历年真题。这部分主要通过牛客网的历年真题题库来完成。真题非常重要,因为公司出的题目可能非常独特,所以提前适应是很重要的。
完成所有内容的复习后,我迎来了秋招的提前批。由于战前准备充分,我对秋招持乐观态度。但秋招不仅是一场攻坚战,更是一场持久战,要想笑到最后并不容易。
重建知识体系:减法与深化理解
在秋招前,我完成了知识体系的重建。我的知识体系主要包括Java后端技术的重新学习和整合。我对Java基础、Java集合类、Java并发编程、Java网络编程以及JVM虚拟机等方面进行了深入学习和总结。
在Java基础方面,我写了20多篇原创博客,对Java核心技术进行解析。在Java集合类方面,我整合了一些优质文章,特别是关于hashmap的文章。在Java并发编程方面,我深入学习了并发编程网和一些优质博客的文章,并参考了并发工具类的JDK源码解析文章。我还在IDE中运行了相关的demo以加深理解。在Java网络编程方面,我从最基础的socket开始,逐步学习NIO、AIO,并整合了Linux IO模型解析的文章,还探讨了Netty在Java网络编程中的应用。为了更好理解这部分内容,我参考了很多客户端和服务端通信的demo。在JVM虚拟机方面,我按照《深入理解JVM虚拟机》这本书的结构进行了文章的整理,并特别关注了JVM调优和实践中的问题。JavaWeb探索与秋招闯关之路
在JavaWeb领域,我逐步深入理解了各种相关技术。从JSP、Servlet、JDBC到Spring等,我逐一探究了它们存在的价值与意义。特别地,我深入研究了Spring和SpringMVC的源码,并对Tomcat的工作原理进行了详细的探索。除此之外,我也涉及了JavaWeb项目中常用的maven、日志组件以及测试组件等内容。
在数据库与缓存方面,我主要学习了MySQL和Redis的应用与优化。对于MySQL,我深入了解了其存储引擎、索引机制、事务处理及锁策略,还探索了复杂的主从复制、分库分表等技术。对于Redis,我则从底层数据结构入手,逐步学习其持久化方法、缓存技术要点以及分布式锁和集群方案。
在分布式领域,我主要学习了相关理论和技术。理论方面,我掌握了CAP、BASE等原则,并深入研究了分布式一致性协议和算法,还探讨了分布式事务的处理方式。在分布式技术方面,我涉及了分布式session、负载均衡、分布式锁等内容。对于分布式缓存、消息队列以及分布式服务等领域,我投入了大量时间学习和总结。尽管这些知识在实际项目中的应用有限,但为我的知识体系增添了重要一笔。
秋招之旅,是一场知识与能力的双重考验。在面试准备阶段,我致力于简历的完善与熟悉,持续刷题以保持对算法题和笔试真题的手感和熟练度。我还重视从面试经验中学习和进步,不断查缺补漏。
面试过程中,我经历了从小公司到阿里、蚂蚁金服、百度、腾讯等大厂的一系列面试。阿里的提前批面试让我意外又惊喜,蚂蚁金服的offer让我有了明确的选择方向。百度的面试虽难,但让我算法手写速度得到提升。腾讯的面试则对操作系统和网络知识有深度挖掘。我也参加了今日头条等公司的面试,最终收获了BAT和头条、网易的意向书。
整个秋招过程中,我经历了大大小小的面试挑战,最终成功获得了心仪的offer。这段经历不仅检验了我的知识储备,也锻炼了我的应变能力和心理素质。回望这段旅程,我深感砥砺前行的重要性,也为自己的成长感到自豪。我的求职历程与未来选择:锁定阿里,启程职业新篇章
时至今日,经过深思熟虑,我婉拒了多数offer,终于决定踏上与阿里的职业旅程。我深知这是一个重要的决定,而最终选择阿里是因为部门符合我的兴趣所在,给予的评级也让我倍感欣慰。尽管腾讯的SP让我心动,但考虑到未来的发展方向,我还是选择了放手。百度和头条的offer虽好,但在我心中并未达到理想的预期,因此我选择了继续等待。
回首这次秋招之旅,可谓收获颇丰。接下来,我想与大家分享下面试经历。
面经分享
一、阿里面经
在阿里的中间件研发部门,我经历了提前批面试,四轮技术面试后,我收获了口头offer。与蚂蚁金服中间件部门的面试也让我印象深刻,虽然最终未能走完流程,但体验依然宝贵。最终,我选择的是蚂蚁金服财富事业群,经过四轮面试,包括一次交叉面,我收获了蚂蚁金服的意向书,评级为A。阿里的面试体验良好,注重Java基础,但不必过于担心手写算法。
二、腾讯面经
对于腾讯,我应聘的是后台开发工程师岗位。经历了四次技术面试和一次HR面试后,我正在等待结果。腾讯的面试始终如一地注重网络和操作系统的考查,并喜欢探究Linux底层知识,虽然我在这方面仍有不足,但这次经历对我而言是一次宝贵的学习机会。
三、百度面经
在百度,我应聘的是研发工程师岗位,涉及百度智能云的三个分部门以及大搜索部门。由于百度提前批面试的流程特殊,我参加了多次面试,并收到了两个部门的offer。百度的面试风格统一,每次面试都需要在电脑上写算法,那段时间的挑战不小。
我还参加了网易和头条的面试。网易的面试深入且结合实践,让我收获颇丰。而头条的面试风格类似腾讯,也注重底层知识的考查。此外还参与了一些公司的笔试,虽然算法基础一般,但我在努力提升自己。
探索Java核心技术之旅
大家好,欢迎来到我的技术博客。在这里,我将带领大家走进Java的世界,一起探索后端技术的奥秘。
我的博客专栏涵盖了Java基础的方方面面,从入门到精通,应有尽有。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。
深入浅出Java核心技术:这个专栏将带你领略Java基础知识的魅力,结合实例和原理讲解。我们将深入探讨Java集合类、设计模式和Java 8的新特性。
深入理解JVM虚拟机:这里,我们将一起走进JVM的世界,揭开虚拟机的神秘面纱。通过整合高质量文章,阐述虚拟机的原理及相关技术,帮助大家更好地了解Java的底层运行原理以及性能调优方法。
Java并发指南:本专栏将带你领略Java并发编程的基本原理和进阶知识。我们将深入探讨Java多线程基础、并发编程原理以及JUC并发包的使用和源码解析。
Java网络编程与NIO:网络编程是Java的重要部分,涉及socket的使用、IO模型(BIO、NIO、AIO)以及Linux网络编程模型。我们还会深入探讨两个重要的NIO技术:Tomcat和Netty。了解这部分知识对于掌握网络编程至关重要。
JavaWeb技术世界:这里将为你打开JavaWeb世界的大门,带你了解J2EE、JavaWeb以及生态中常用的技术如Maven、Spring、Tomcat等。我们不仅要知道如何使用它们,更要了解它们背后的原理和实现。
Spring与SpringMVC源码解析:Spring作为最流行的Java框架之一,本专栏将深入解析Spring和SpringMVC的实现原理,包括IOC、AOP、事务的源码分析以及SpringMVC的源码解析。
重新学习MySQL与Redis:本专栏将带你学习MySQL的基本知识,如基本架构、存储引擎、索引原理等。我们还将探讨SQL语句优化知识。还将介绍Redis的基本实现原理,包括数据结构、主从复制、集群方案等。
分布式系统理论与实践:本专栏将介绍分布式的基本理论和相关技术,包括CAP和BASE理论、一致性算法以及ZooKeeper等分布式协调服务。在实践方面,我们将探讨负载均衡、缓存、分布式事务、分布式锁等技术,并涉及Dubbo微服务、消息队列和数据库中间件等内容。
我的博客还涵盖了后端技术的杂谈,包括Hadoop生态、云计算技术、搜索引擎以及数据挖掘和AI等相关内容。这里选取了一些不错的基础类文章,帮助你更直观地认识大后端技术。
我想向大家推荐一些Java工程师必备的书单。这些书籍包括《计算机网络:自顶向下》、《图解算法》、《啊哈算法》、《剑指offer》、《Java编程思想》、《Java核心技术卷一》以及《深入理解JVM虚拟机》等。这些书籍是Java开发者必备的读物,无论你是初学者还是资深开发者,都能从中获得宝贵的知识和经验。希望我的博客和这些书籍能对你的学习之路有所帮助!《Java并发编程艺术》这本书,是一本由国内作者撰写的Java并发书籍。其语言简洁明了,深入浅出,尤其适合作为想要踏入并发编程领域的初学者的入门指南。要想深入理解并发原理,首先得熟练掌握Java的多线程技术,这本书正是你绝佳的引导。
《深入JavaWeb技术内幕》可谓Java Web开发的集大成之作,几乎涵盖了Java Web开发的所有重要知识点。虽然一本书无法穷尽所有细节,但对于初学者或希望进一步提高自己Web开发技能的开发者来说,它无疑是一本非常有价值的参考书。
《Redis设计与实现》一书,全面深入地剖析了Redis的内部运行机制。无论是其单机功能还是多机功能的实现原理,都进行了详尽的介绍。阅读本书,你将能清晰理解Redis的数据结构、持久化机制以及集群运作原理。
《大型网站技术架构》这本由淘宝系技术团队撰写的技术指南,对大型网站的现代架构进行了简洁明了的总结。它涵盖了各个方面的技术要点,尤其适合对架构概念不熟悉的初学者。阅读完本书后,你会对后端技术的博大精深有更深的认识。
《分布式服务框架原理与实践》专注于分布式服务的原理讲解和实际应用。它很好地阐述了分布式服务的基本概念、相关技术和解决方案。对于想要深入学习分布式服务框架的读者来说,这是一本不可多得的好书。
从Paxos到Zookeeper的《分布式一致性原理与实践》,让你了解分布式系统的核心原理和相关技术。这本书不仅介绍了分布式系统的一些常用概念,还详细介绍了分布式领域的领军者Zookeeper,是希望学习分布式技术的读者必读的书籍。
《大数据技术原理与应用》作为一本大数据领域的教材,由厦大教授撰写,备受推崇。本书从最基础的原理出发,讲解了Hadoop生态系统以及各组件的原理。还涵盖了Spark、Storm等内容,是大数据入门者的理想选择。
在两年的Java后端学习过程中,我接触了许多资料、网站和课程。推荐给大家一些优质的学习资源:CSDN和博客园是主流的技术交流平台,虽然广告较多,但其中不乏优质博文;importnew适合Java初学者;并发编程网适合Java进阶学习;推酷、segmentfault、掘金等都是不错的技术分享社区;开发者头条则整合了优质技术博客;v2ex是一个极客社区,除了技术交流还有生活话题分享;GitHub上也有不少优质项目和技术分享仓库。
秋招结束后,我将主要精力投入到公众号运营上。我还有毕业论文、毕业旅行以及工作前的知识储备等任务需要完成。人生就像是一场不断修行的旅程,刚闯过一关就会迎接下一轮挑战。我们不能停下脚步,必须不断前进。希望还在求职路上的朋友们加油,顺利拿到心仪的offer!
关于本文中提到的链接,我已汇总如下方便大家查看:CSDN技术博客、知乎、牛客网以及GitHub等。 |