首页 > java后端学习经验分享(大三进大厂版)
头像
头头本头
发布于 11-02 22:43 上海
+ 关注

java后端学习经验分享(大三进大厂版)

大家好,我是西安邮电大学的2027届学生。和很多人一样,我只是一个双非,而在现在这样一个卷学历的时代,我想要找到一份好的实习必然是很困难的。我先说一下我自己的情况,我是软件工程专业,学的是Java后端开发,在今年10月找到了美团的一份后端开发实习,也是我大学的第一份实习。那就有人要问了,java现在不是卷爆了吗?没错。所以如果还有一次选择的机会,我一定学前端(懂的都懂,现在前端学的人没有后端多,而且很多大厂对于前端的岗位开放了很多,属于是需求量增加了,而我们后端依旧在卷来卷去,不推荐哈,起码就是如果要进大厂,相当于你学后端要付出的努力是一定要比学前端多很多的,性价比这块很明显的差异)。那又有同学要问了,主播主播那你怎么双非大三就去大厂了?那我就给大家好好讲一下我的整个学习经历,面试经历,以及一些经验总结和建议

我是大一的时候就加入了我们学校的一个实验室,当时就已经确定好了要学后端。然后就是在大一的寒假,先学习了java,之后就是按照学长学姐布置的阶段性的任务和路线去学习,大概是这样的:

阶段一:java语言学习,了解Java中基础的概念:对象,类,方法,实例变量(先了解,有大概的意识就行) 从基础的语法开始,先了解java中上述的基本的概念,同时兼顾学习变量类型,基本数据类型,变量的命名规则,修饰符和运算符,条件判断语句,循环控制语句。Mysql的学习(先了解什么是sql语言以及sql语言的特点),再安装并且使用Mysql的图形化工具(Navicat或者datagrip或者新建IDEA窗口作为Mysql的图形化工具),并掌握数据库操作的语句(查询所有数据库,创建数据库,删除数据库,使用数据库),使用命令行启动和停止Mysql服务器。Javaweb(不需要特别熟练掌握,要求是能看懂和写一些简单的网页),HTML简单了解(基础结构,基本语法,常见标签)。学习git的使用和简单概述,git的下载和安装,本地基本使用(初始化仓库,添加文件,提交文件,修改文件,删除文件,回退历史版本)。

阶段二:对于java,掌握和了解面向对象编程的思想和概念:多态,继承,抽象,类,对象,实例,方法,重载。掌握基本的数据类型以及他们的包装类,了解什么是自动装箱和自动拆箱。对于String类的函数重点掌握,学会数据类型转换,包括自动类型转换,强制类型转换和隐含类型转换,掌握访问控制修饰符的用法,包括default,private,public,protected的访问权限,学习StringBuffer和StringBuiler类,学习Java 数组的声明、创建和初始化。对于mysql,学习Mysql中用户管理语句,包括查询创建修改和删除以及权限的管理 (本机Mysql没必要设置复杂密码,以及经常只有自己使用 123456 就可以) 。对于javaweb,简单了解CSS是什么,以及一些简单的应用。对于git,在掌握本地git基本命令和玩法同时,尝试将本地的代码托管到GitHub上,先尝试使用用命令行。命令行熟练掌握后,可以尝试使用图形化工具,或者IDE中集成的git插件一键PUSH。

阶段三:对于java,继续学习面向对象部分(封装继承和多态),以及一些非常重要的概念:异常、反射、注解、I/O、并发。对于mysql:Mysql数据库是应用几乎最为广泛的数据库,同时也可以学习sql语句的通用语法。现阶段学习的核心为 DCL DDL DML DQL 4种语句。随后掌握函数和事务的功能实现。 在学习数据库的过程中,尽量减少图形化工具的使用,使用代码控制数据库以及对数据的操作。对于javaweb,简单了解JS是什么,以及一些简单的应用。对于静态网页的要求本身不是很高,在网上下载模板,自己会往html文件中插入自己想要的信息即可,如果自己能改样式更好,要求可以看懂代码,会修改。对于git,继续学习,学会使用git命令提交推送文件,以及git clone等常用命令 。然后对于JDBC,这个技术栈已经比较原始,可以不用熟练掌握,但是要了解和简单应用(就是跟着学的时候写写代码就好了,以后有老的项目,你要看的出来是JDBC)。

阶段四:对于java,学习java中的线程,包括线程的创建方式,常用方法,多线程,同步锁,显示锁,线程安全的类,线程死锁,线程特性和状态。 学习java中基本的网络编程的知识,包括 TCP/IP网络模型 OSI七层网络模型,web服务器构成分析,http协议详解,socket和tomcat(这个最最重要),包括tomcat服务器的部署,启动,必须特别熟练的掌握。还有一些动态页面技术,建议熟练掌握:java Servlet,JSP 或者 PHP,一般是JSP,Cookie和session,过滤器Filter和监听器Listener。对于后台核心内容,必须特别熟练掌握:数据库连接池 Druid (学两遍,第一遍学会用,第二遍学习为什么用他,怎么实现的,有什么好处,为以后面试打好基础)。注解(核心内容) 。Mybatis 持久化层的核心技术,必须狠狠的精通,有两种实现方式,都必须精通官方文档地址(https://mybatis.org/mybatis-3/zh_CN/index.html)(https://mybatis.net.cn/getting-started.html)。spring 依赖注入和控制反转,xml实现方式和注解实现IOC和DI。AOP 面向切片编程。springmvc (servlet技术的替代品) 。maven 项目的管理工具。这些学完后,可以去尝试写个小项目了,spring+springmvc+mybatis 就构成了ssm框架,有兴趣可以了解以下mybatisplus(不能实现多表联查的功能)。

阶段五:springboot框架 (boot框架是spring的进一步封装,提供了自动化装配,条件注解等,吃透spring,boot上手很快) (以下为常用搭配的组合) Thymeleaf页面模板。mybatisPlus ORM 简化开发。Nosql redis(必学) MongoDB(看兴趣,介于关系型数据库和非关系型数据库中间) Elasticsearch(必学,可以先了解,等后面其他技术栈跟上了再系统学)(redis很重要,先系统学习redis的基本语法和安装虚拟机一些简单的操作和简单的linux命令,缓存穿透,击穿,雪崩等可先不了解,后期学,先掌握基本语法和用法)。spring Security或者Shiro 暂时选择先掌握其中一个,另一个后面有空学(安全框架,用于登录验证,身份管理之类的) 。swagger自动生成接口文档技术 。常用的第三方提供的功能:sms短信服务(可以先用aliyun免费服务体验学习) ,boot集成邮箱验证码服务,谷歌的kaptcha图片验证码,oss对象存储服务(aliyun可免费试用学习,或者GitHub上免费的图床功能)。了解和学习一些linux系统的使用,可以先Vmware安装虚拟机体验试玩(建议先玩ubunto系统或者centro OS,注意下载镜像的时候下载长期版本,推荐ubunto22.04.3)。学习vim或者nano的文件编辑方式(linux中不是你鼠标点到哪里然后在哪里改了)。 然后是云服务器的使用,可以先免费试用三个月阿里云云服务器。另外还可以服务器宝塔页面的使用,可然后去宝塔官方给自己的云服务器下载宝塔页面。finalShell或者xshell(两个软件,选其一即可)远程登录服务器。安全组配置。尝试服务器安装mysql数据库(用宝塔或命令行都要会) 。尝试部署一个静态页面。微服务也可以稍微了解一下,看一下设计的组件,可以做一个小demo。

上述就是后端的整个的学习路线了,然后对于项目来说,先做单体项目就好,也不用专门去做关于微服务的项目,这个涉及的八股太多了,面试容易被问穿。具体来说就是比特的论坛项目可以先看一看敲一敲练练手,然后抽奖项目也不错,也可以学习一下设计模式。然后再B站大学上,可以看一下黑马程序员的经典外卖项目和点评项目,这俩属于是当代大学生简历上的标配,含金量就不用多说了,大家就是可以去练手,但是最好不要往简历上写。因为确实是太雷同了,面试官看到可能会失去兴致。

接下来说一说我自己的准备面试的过程。面试的技术问题是分为三个部分:项目+八股+算法(一般中大厂才会有算法)。我是在大二的第二学期做了打算,就是暑期开始找实习的计划,然后项目准备的是某马点评和比特的抽奖项目。就是在这个学期内好好看了看代码以及项目的一些细节整理总结。然后从7月中下旬开始筹备八股的,具体就是有看小林Coding,javaguide,还有小红书上别人发的一些八股整理以及面经(面经中扣出来八股,然后问AI这种总结一下,再看一看背一背)。算法的话,因为之前有参加过蓝桥杯,所以对C++语言写算法比较熟悉,也是从这学期开始,基本上每日一题,力扣hot100。当然刚刷题很容易的就是不会做,没思路,或者看不懂题解。我也是这样的,经常是看了一两个小时才能彻底理解一道题。这个都是正常的,所以才需要去多刷,并总结一些套路和模板,以达到一种“背题”的境界。算法需要慢慢来,最好可以从大一开始就培养,多刷题就好了。

上述一直准备到8.11,我开始了我boss直聘的投递。一开始我投的时候,会遇到一种情况,就是大家都不太会理你,只有0-20人的小厂才会约你面试。我也就这样面试了。体验下来就是,很抽象,小厂他们可能需要的只是一个纯牛马,而且是会全栈的牛马,所以面试甚至问你前端的问题。我感觉就是收获并不是很大,然后就继续投。基本上刚开始能查看简历并要你简历的就是100人以下的小厂,可能也会有500人左右的公司要了你的简历就没有下文了,这些都是正常现象,你想,你一个双非,零实习,找java实习,你又有什么优势呢?只好受着了。这一个月的投递的话,我投了大概有一千份了,毫不夸张的说,性价比并不高。在这期间我有陆陆续续面了快十家公司,有的面试比较草率,营养不高,有的面试还不错,就是能深挖你的项目,跟你一起探讨解决方案这种的,我觉得这种面试才是很有意义的。不过我察觉到一个问题,就是面试官可能对于我的两个项目,问了几个问题就转而问八股去了。

这里我想先声明一点:面试最好的状态是什么?就是面试官可以一直和你聊项目,因为项目毕竟你熟悉,而对于八股,多多少少前前后后就是那么多问题,太多了,万一有些问题比较深入,你一下就不会答了,那对你其实是很不利的。所以要记住,简历要写好,项目是最重要的,要包装,并包装的有亮点,有吸引力,这样面试官才愿意花时间和你去聊,然后你也可以在这个过程中主动引导面试官,去提问和你项目有关的问题或八股,这样其实全局都是在你的掌控之中,把握就会大一点。而且还有一个点,面试官也是人,他们或许只是一个普通的组内的员工,他们也可能没有面试别人的经验或者也会感到紧张。所以你在面试的过程中,要尽量表现得活泼一点,重要的就是全程笑一笑,把这个气氛拉的轻松一点,可能效果会更好。

然后继续回到项目的话题上,既然我已经发现了我的问题,那我是怎么做的?我换了点评项目。因为我在今年三月,和实验的一个前端同学,一起参加了计算机设计大赛(大家也可以参加一下),然后一起做了一个web项目,最后得了西北地区二等奖。这是关于旅游平台的项目,相对于网上的什么商城呀点评呀外卖呀会小众很多,这其实就是一个选题上的新颖点。然后我包装它,就是借鉴了网上的一些简历,就像引入了websocket呀或者oss呀这种的(大家可以多去参考一下网上的),然后最重要的是什么?有加入AI相关的东西。这里我是真心建议大家可以给项目掺杂一点AI,毕竟AI已经是互联网时代的一个趋势了,如此风口之下,这热度不得蹭一下?而且现在几乎每个互联网大厂都有自研AI工具,还有招AI相关的人才,无疑可以看出AI的地位很重要。其实在B站上一搜就有很多关于AI的视频,对于后端来说就是可以学一下框架,像SpringAI和Langchain4j都比较优秀,然后可以自己做一个智能小助手这样的,在简历上会很加分。然后对于第二个项目,我也从抽奖项目换了一个AI项目,就是自己写了一个AI工具,看着也非常小众了。所以我只需要把项目好好整理,提前准备可能会被问的问题,其他都问题不大。

在换了项目之后,所有基本准备完就是国庆之后了,然后我就投了一些大厂,幸运的是美团约面了。当时真是很惊喜,然后我就好好准备了两天,面试的过程也很愉快。归因于项目有亮点,面试官基本全程都在和我聊项目,这也规避了我八股可能准备不是很充分的问题。所以对于面试官的每个问题,我都有很多废话去讲出来,感觉也是一顿猛输出迷惑了面试官,在最后面试官也对我的表现做出了比较好的评价,并且在当天晚上就接到了offer的电话。终于解放了,准备面试,从8月一直到10月,整整3个月的时间。我几乎每天都是坐在电脑跟前,除了上课吃饭睡觉,都在实验室泡着。当然很累了,也很焦虑的,焦虑没有面试,焦虑没有机会。所以我才说,运气是非常关键的。它决定着你是否有机会面试,以及组内缺不缺人,缺人的话可能你恰巧合适就直接进去了。

总结一下,找了三个月实习确实很累很坎坷。初期自己思维闭塞,简历的项目很老套,也没有面试经验,每次就是面无表情的人机。经过一次次的失败和负反馈,再通过身边同学的经验分享和帮助鼓励,一点点的在改变自己的思维,并且研究出了较好的面试经验,也改了很多次简历。每天除了总结项目就是看八股,确实是意志力在支撑,找实习真的是对耐心和心态的严格拷打。在此期间我多次崩溃边缘迷茫,只希望我的运气可以好一点,就一点点。挺过来了啊,终于是好运来了。这个结果我在很久之前就有幻想过了,可是命运一直在告诉我,我还差很多,我只好继续学习,继续找方法,试错,试错,试错。一定要告诉自己坚持下去,会有希望的,只不过这个时间是未知的,不能放弃。

最后写给大家,找实习是一个实力与运气都很重要的环节,如果你能做到我上面说的那些,那接下来你要做的就是放平心态,静待面试机会的到来希望我们的运气都不会太差!

全部评论

(4) 回帖
加载中...
话题 回帖