一文讲清后端学完哪些东西就可以找实习了
学习路线:
https://www.nowcoder.com/discuss/711506045692137472?sourceSSR=users
我们以我之前写的学习路线作为标准。需要注意的是:我这里聊的是最低要求。
什么时候能找实习?
从学习路线上看:
Java基础+少量JUC+少量JVM+Spring Boot + 两个后端项目 +MySQL+Redis+消息队列+少量的计网知识
微服务不重要,微服务不重要。
从技术要求上看:
Java基础:
基本语法能玩明白,写代码不至于磕磕绊绊的。一些基本的八股要能背出来,比如HashMap这种烂大街的集合源码要看过。重点主要是线程池这一块的知识,线程池的运行流程,核心参数等等知识要知道,以及并发相关的知识。
JUC:
看过几个常用的工具类就行。比如ReentrantLock的源码。面试的时候能扯一些源码级别的内容就行。
JVM:
能把双亲委派机制和JVM内存模型 背顺溜就行了。
Spring Boot:
能把AOP和IOC背出来就行了。还有就是三级缓存,自动配置这些特性要知道。会用这个框架是基本要求。
两个后端项目:
两个项目能多熟悉就多熟悉。最起码要能清晰的阐明每一个功能点的设计以及边缘情况的解决方案。
比如你用了Redis,那么Redis对应的缓存穿透,击穿和雪崩你就要清楚。
用了MQ,那么对应的消息丢失和堆积以及重复消费的解决方案你就要清楚。
在这里你要明白一个点:除非是真实的开源/商业项目,否则面试官不会对你的项目本身多感兴趣的。如果你没有实习的话,那么你的项目有且仅有一个作用:方便面试官基于你的项目切入相关的八股内容。
MySQL:
常见的SQL语句要能写顺溜,常用的ORM框架Mybatis的XML层要会写。
<select id="selectUsers" parameterType="map" resultType="User"> SELECT * FROM users <where> <if test="name != null and name != ''"> AND name = #{name} </if> <if test="age != null"> AND age = #{age} </if> <!-- 默认过滤条件 --> <if test="1 == 2"> AND 1 = 2 </if> </where> </select>
而从面试的角度讲,MySQL的索引,事务(脏读,幻读,不可重复读以及对应的隔离界别,MVCC),三个日志这块的相关内容必须清楚。
能在网上学一些SQL调优的经验也是加分项。
Redis:
常见的数据结构要清楚,大概知道对应的应用场景。知道这些数据结构的底层数据结构是加分项。
常见的线上事故:击穿,穿透和雪崩要知道对应的解决方案。Redis的两个日志AOF和RDB要清楚。最好还可以知道Redis和MySQL的一致性问题。
消息队列:
常见的消息队列的区别要知道:Kafka,RocketMQ,RabbitMQ。要有一个自己主要学习的消息队列中间件。
对于这个消息中间件的基础概念要知道,以Kafka举例,你最起码要知道Topic,Broker,Partation是什么。
并且消息队列的常见问题:消息幂等性,消息丢失和消费堆积要知道大致的解决方案。不追求绝对的可用性,只追求你面试的时候能大致扯出来一些东西。
计网知识:
TCP的三次握手,四次挥手要背的顺溜。TCP和UDP的区别,应用场景要知道。
HTTP和HTTPS的区别要知道。HTTP从1.0到3.0的版本更新所带来的新特性要知道。八股典中典《一条URL从输入到浏览器到网页显示界面都发生了什么》要背的足够顺溜。
计网这一部分的话,小厂问的少,大厂问的多。
杂乱知识:
简历上面涉及到的所有知识能多熟悉就多熟悉。
闲聊内容:
1.思考自己的竞争力
当你搞完这些的时候,从代码能力的角度出发,你大致已经满足条件了。我说白了这些东西要搞得话,三四个月就搞完了。
那你觉得你相比较于其他人来讲,你的竞争力是什么?
就好比如果你是老板,现在在你面前摆着两份技术差不多的简历。一个是双非,一个是985。你会约面哪一个?
我也遇到过很多大一大二的学弟学妹对自己已经学到了微服务二沾沾自喜。但是你切记:就业市场上从来不缺比你学得快的人。面试官在面试的时候可不会在意你是大几的。
所以学的进度快不是优势,一定要记住这一点!学的进度快不是优势。学的进度快只是能给你更多的时间去培养自己的优势而已。
所以大家在学校的时候,不要认为按照路线学就好了。这样是拉不开差距的。大家如果都跟流水线上的产品一样同质化,那最终必将进入拼学历的环境。
所以除了单纯的技术之外,你还需要一些其他的证据来证明自己的核心竞争力。
可以是开源项目,也可以是真实的商业项目,也可以是自己的博客。
2.大胆投递
社会是一场开放游戏。只要你愿意,所有人都是你的NPC。
所以大胆的投递就完事了。投递了又不一定过,过了又不一定去。面试对于你来讲其实就相当于免费找一个几年工作经验的面试官帮你看简历的问题。
所以不要害怕面试。面试的本质是交流。自己面试越多,复盘越仔细。你后面就会越来越熟悉面试的流程。
不要担心面试被挂。反正你也不会影分身。所以对于你来讲只需要在面试这件事上赢一次就好了。前面所有的失败只要做好了复盘,就会变成你最后成功的养料。
最后:
文章来自我的学习笔记《小牛八股》。目前正在完善中,估计今年八九月份会写完。提前放出来一些文章引引流。
关注我,带你了解更多代码之外的生存之道。欢迎订阅我的专栏(目前免费),后续也会持续更新。如果这篇文章帮到了你的话,就送我朵花花吧。
#牛客激励计划##Java##简历中的项目经历要怎么写##找工作,行业重要还是岗位重要?##牛客创作赏金赛#我们的生活不止有代码