非科班的转码学习历程

个人背景:双非本华五硕,本硕均某管理专业,字节美团两段实习,期实习拿了携程、美团、腾讯的offer,最后去了团子实习(转正给了个白菜)。秋招拿了两个B厂的ssp还有一些华为手机厂等各类offer。

作为本科双非加本硕非科班的双重debuff,秋招拿到这些已经纯属运气爆棚,从今年3月暑期开始就一直混迹牛客,也非常感谢各位大佬的面经指导,我也分享一下个人的学习路线以及职业规划供大家参考。

我的学习路线

作为非科班,大部分人首选语言应该是Java,就业面广,网络资源多,八股文全面,这也在一定程度上导致了当前的就业环境越来越卷。其实作为非科班而言,大部分人在转码后都会成为CRUD boy去做业务的而不是os、数据库一类的底层,我选择Java是因为目前大部分公司也一般都用java或者go来写业务,像大部分国企银行也都使用Java,而就我个人互联网面试考察重点业务理解>=基础知识掌握>语言能力,所以语言的还需根据自身未来赛道去选择。

基础知识学习

个人学习时间:半年左右

推荐学习资源:B站大学、力扣

起步篇:

1、Java语言基础:转码准入门槛,可以去B站上找各类知名资源,如尚硅谷、黑马等,基础资源教程大同小异,可以放倍速2倍、3倍,尽快熟悉语言特性,能够会敲会写。

2、数据结构面试和八股文准入门槛,同样可以去B站大学,或者自己看学校数据结构的书,重点数据结构如链表、树、栈等一定要理解概念,是后续学习的基石。

必备技能篇:

1、Spring框架CRUD必备技能,事实上我对Spring各类源码学习比较浅,目前也局限于了解部分基础会使用而已,这一类框架的学习建议同样寻找网络资源,可以找一个比较感兴趣的小项目边敲边学(这可能就是实际工作中天天做的事情),同样至少也应当有一个项目去填补去填补一下简历。

2、Mysql:涉及到Spring就肯定离不开数据库,目前主流学习都是Mysql,一方面可以结合自己边敲项目边学习(比如项目涉及到数据库,那就先看一星期的数据库课程,大致了解具体功能之后再继续写项目),另一方面就是专门寻找数据库专门资源。

重点中间件篇:

1、Redis:Redis的学习就看书就行了,学习一下具体使用场景,也是比较容易在项目当中有所涉及,涉及的时候多了解了解

2、消息队列、ES:这一部分在个人项目可能比较有较少的涉及,大家可以在实习当中或者网课资料当中略加学习,消息队列我个人推荐kafka或者rocketmq,可以略作了解。

其他基础必备

计算机网络和操作系统:对于非科班以及应聘通常业务开发类的工作时,面试官对于这两部分考察的内容其实也相对较少,主要就是常见的热门问题,网络部分集中于握手挥手,网络结构,而系统方面则集中于一些进程、线程相关知识。

学习方式

对于我个人而言,怎么学比学什么更加重要,Java内容太多,涉及面太广学习内容与实践脱节总让人觉得浮在空中不知所以,面试却一问三不知,我也只能给大家大致去梳理一下学习路线

Java语言基础和数据结构作为基础非常重要,不会或者印象不够深刻就多看看

1、算法:每天刷刷力扣,培养一下手感,刷hot100题或者常见题目,刷算法不仅仅是要学习解题思路,更多的是加深对于数据结构的认识,也能为背八股文做准备

推荐学习网址:labuladong算法小抄随想录某Code题库

2、计网、操作系统:这一部分需要个人多看看书并进行理解了,多看看牛客面经之类的去查漏补缺,这部分我感觉没啥好方法,一般来说单纯做业务开发的话,对这方面考察基本都是那些热点问题

推荐学习网址:xiaolinCoding

3、敲项目吧,边敲边学:推荐B站大学,尚硅谷黑马的项目都可以,在敲项目的过程当中,你会学习到诸如SpringBoot、SpringCloud、Mybatis、Git、Maven等工程知识,小白在敲项目的过程当中,建议遇到了便可以抽几天系统学习一下,然后再继续敲项目。同时,在敲项目的过程当中也多点点源码看一下,比如用到某类数据结构,线程池等,多点点源码学习一下(当然主要看的是常考内容加深印象),如果了解某些比较冷门的有意思的源码实现肯定会是一个大的加分项。

这三步是完全可以并行学习的,通过项目熟悉语言以及需要用到的各种中间件、框架,要学会使用IDE的快捷操作、看源码等,在后续八股学习中也会经常使用到这些,一定有操作能力。

八股学习

强推Guide哥的文章,这篇文章当中涉及到的知识点已经足够全面,对于个人而言完全可以按照他的学习路线来,但是部分内容可能直接学习会摸不着头脑,可以在有需要进行一下系统性学习,再回头看便会豁然开朗

Java语言相关内容:JavaGuide、各类网上公开课等,一方面需要对语言本身了解,另外一方面则是对Java当中一些类的实现熟悉,如ArrayList、ConcurrentHashMap等,也是对数据结构的深入学习。

JUC:有关于Java并发方面,推荐书籍《Java并发编程的艺术》,学习JUC的过程相当于学习Java多线程、数据结构、锁等方面的知识,如线程安全集合的特点、AQS队列等等,顺带复习基础知识

JVM:Java虚拟机相关内容,主要涉及到垃圾回收等内容,推荐书籍《深入理解Java虚拟机:JVM高级特性与最佳实践》,这本书对我刚学习的时候简直如天书一般,建议多看看网上资料或者看看面经,尽量多百度“为什么xxx”,理解着去记忆。

Mysql:数据库相关内容,主要设计存储结构、日志、隔离级别等等,推荐数据《MySQL技术内幕 InnoDB存储引擎》

Redis:主要有关于Redis的数据结构,持久化等,也是相关类似内容,推荐书籍《Redis设计与实现》

以上内容差不多能覆盖到八股的80~90%左右,对以上内容在八股的考察方面个人认为都遵从一个逻辑->"XXX的功能是什么?、它的功能是怎么设计的?、这样的设计有什么好处? + 可能存在的额外问题扩展",所以在对这些内容学习的时候一定要加强一下自身理解,甚至可以在面试中添加自己对于这些内容的看法,也就避免了背诵忘词的情况。

我在学习上述书籍一般都会先过一遍,有个大致的印象,之后在看大佬的面经或技术文章的时,如果发现某些不会的地方,然后再次翻阅书籍去加深一遍印象,一遍一遍翻书的过程,也就慢慢把所有的都看完了,前期的学习枯燥乏味,会感觉自己只能靠背,量变引起质变,八股背的多了,也会发现很多地方知识点会是如此的相似,八股文考察的是对技术的理解,重点都在于讲清楚某类技术是如何实现的,为什么这么实现?

一些想法

如果一心想去互联网或者私企挣钱的话,实习经历还是比较看重的一个点,还是建议能早出去就早出去,只要过一遍基础知识,常见八股能答上来就可以慢慢去找了,在面试中学习。一般来说年底或者快过年了的时候实习生离职会比较多,在缺人的时候找实习也会相对容易一下

有关求职:就我个人的学习和求职经历来看,运气>>努力和实力,不同的面试官,不同的面试时间都会大大影响面试时候的临场发挥,所以不必气馁,每次面试尽自己所能,剩下的交给天意。

有关定级:其实很多时候面试者之间的差距并没有很大,这种情况下定级or定薪往往是外界因素影响,如竞对offer、面试官眼缘、学历实习经历等,只要能通过面试就要相信自己的能力。

后面的看情况慢慢补充吧

#转码##java学习##求职##offer#
全部评论
非科班跟非科班之间的差距是否太大了😅我要remake了
2 回复 分享
发布于 2024-02-12 18:02 湖北
大佬,我今年研一,还能入行Java么
1 回复 分享
发布于 2024-04-29 16:50 湖南
m
1 回复 分享
发布于 2024-01-26 23:06 湖北
点赞 回复 分享
发布于 2024-03-07 13:17 广东
很棒的分享,多来点儿
点赞 回复 分享
发布于 2024-01-27 19:45 山东
🐮
点赞 回复 分享
发布于 2024-01-25 00:45 北京
请教一下简历上写黑马尚硅谷的项目是否足够呢?或者有什么项目推荐呀😭
点赞 回复 分享
发布于 2024-01-23 12:45 广东

相关推荐

04-23 20:36
门头沟学院 Java
1. 自我介绍。2. 实习的系统大概是一个什么样的系统?3. 实习中主要负责了哪些内容?4. 你觉得这个系统的技术难点在哪里?5. 这个系统里需求开发和迭代的整体流程是怎样的?6. 拿到需求之后,你们是怎么做技术方案评估和评审的?7. 开发完成之后,code review 是怎么做的?8. 测试是怎么配合的?你自己会不会写单测?一般测到什么程度?9. 你参与的这套系统整体架构是怎样的?10. 从入口层、业务层到存储层分别是什么形态?涉及哪些中间件和组件?11. 服务是怎么部署的?是容器化部署还是其他方式?12. 这个 AI agent 项目主要是解决什么问题?为什么要做这样一套东西?13. 这个项目想解决的痛点是什么?为什么普通大模型方案不够?14. 这个项目是真实被使用的系统,还是偏学习性质的项目?15. 系统设计题:如果有一个告警系统,里面有 10 万条告警规则,要定时扫描并判断是否触发告警,这个任务怎么设计?16. 规则很多、扫描频率固定时,怎么优化读取和扫描性能?17. 多实例下怎么协同完成规则扫描任务?18. 怎么决定某一条规则该由哪个实例来扫描,且保证不重复、不遗漏?19. 如果实例数会扩缩容,这种规则分配方案要怎么设计?20. 一致性哈希在这种分布式任务分配场景里怎么落地?21. 这个规则扫描任务能不能借助 MQ 来做?如果可以,整体方案怎么设计?22. 如果用 MQ,谁来生产待扫描任务?定时任务、数据库、MQ 三者怎么配合?23. HashMap 底层是怎么实现的?24. JDK 1.7 和 1.8 的 HashMap 有什么区别?25. 数组、链表、红黑树在 HashMap 里是怎么配合工作的?26. HashMap 为什么读写平均复杂度能比较低?27. Hash 冲突是怎么解决的?HashMap 主要采用了什么方式?28. 概率题:有一枚正反面概率不均匀的硬币,怎么公平地决定两个人谁去做一件事?29. 如果只能抛两次硬币,能不能设计一个公平方案?30. 从浏览器输入一个 URL 到页面最终展示,中间经历了哪些过程?31. Redis 为什么快?32. 如果 Redis 内存满了会怎么办?33. 算法题:无重复字符的最长子串。34. 你之前项目里提到过 MCP,你怎么理解 MCP?35. MCP 和 skill 这类能力分别解决什么问题?36. MCP 这种协议的优点和缺点分别是什么?37. MCP 在工具很多的时候,会不会也带来上下文膨胀或者性能问题?38. skill 是什么?为什么会有 skill 这种设计?39. skill 越来越多时,会遇到什么问题?怎么理解上下文过长、成本升高这些问题?40. 你平时是怎么学习 AI 相关内容的?41. 反问
我的求职进度条
点赞 评论 收藏
分享
评论
31
153
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务