这篇文章将从 0 开始帮助你学习编程并找到程序员相关工作,持续进步。

    可以配合视频观看:

    ●在线观看:https://meeting.tencent.com/v2/cloud-record/share?id=c7024f3f-7406-48c7-b79b-668499273fa6&from=3 访问密码:bRzM
    ●阿里云盘:https://www.aliyundrive.com/s/Sdce6Tmf6fd 提取码: ds30
    ●百度云盘:https://pan.baidu.com/s/14A5U4ya6uwV2HNHqmxwR2w 提取码: d3t0

    确定方向

    必须尽早确定求职方向,后续的所有学习和准备都必须朝着该方向前进。

    目前和编程相关的主流岗位如下:

    ●前端开发工程师
    ●后端开发工程师
    ●PC 客户端开发工程师
    ●移动端开发工程师
    ●大数据开发工程师
    ●软件测试工程师
    ●运维工程师
    ●网络工程师
    ●云计算工程师
    ●算法工程师

    选择因素

    1个人兴趣
    2需求量
    3薪资
    4前景
    5岗位和实际能力的匹配度
    6学习时间
    7学历
    8个人发展目标

    方向选择案例

    ●前端还是后端?
    ●算法岗位如何?
    ●编程语言的选择?
    ○C++
    ○Java
    ○Go
    ○Python
    ○PHP

    读研还是就业?

    在准备考研之前,首先要想清楚自己为什么要读研?

    可以看下这个视频,了解一下目前的考研形势、以及自己是否适合读研:https://www.bilibili.com/video/BV1y3411p7Ck

    这两年考研同学的压力的确是很大,一方面是希望星球里准备考研的同学加油拼搏,另一方面是给还没面临这些选择的同学一个建议:不管你之后要读研还是就业,不要 all in 考研,基本的开发技能一定要学会!这样哪怕考研失利依然可以通过几个月的时间在春招拿到 offer。时刻给自己留一条后路总没错的。

    备战考研和直面工作怎么选?鱼皮的回答:https://t.zsxq.com/r7aurni

    参考资料

    大学计算机各专业介绍:https://www.bilibili.com/video/BV1YF411a75Y

    计算机热门话题答疑:https://www.bilibili.com/video/BV1xg411T7c1

    学习技术

    编程学习的套路

    无论学习任何编程技术,都可以遵循以下步骤:

    1首先了解这个技术是做什么的?有什么优点和缺点?适用于什么场景?(不感兴趣或者和目标无关的技术可先不学)
    2能够 被动 使用这个技术来完成项目或解决问题(要多写代码,会用技术),这里的被动是指别人让你用这个技术(比如网上现成的项目或教程视频)
    3进一步了解该技术的特性,并能熟练运用,主动用该技术去解决对应的问题(阅读官方文档、进阶书籍等)
    4了解该技术的核心思想、关键模块、各模块的作用(阅读官方文档、技术文章、进阶书籍等)
    5阅读该技术的源码,由整体到局部逐渐深入(利用开源仓库)
    6能够在该源码的基础上修改源码 / 定制开发,或者给该项目贡献代码或插件(可以多和原作者、项目的 issues 区讨论交流)
    7自己实现类似的技术(推陈出新)

    如果为了找实习或一般的工作,前 2 个步骤完成即可,企业中大多数的工作其实就是复制粘贴,只要进入公司一般不会遇到工作不能完成的问题。

    如果想进大厂,一定要有部分技术能够完成前 4 个步骤,能做到第 4 步之后当然更好了,但要注意时间的把控。

    掌握正确的学习方法

    给大家分享一些帮助大家坚持学习的视频:

    如何逼自己学习?6个方法专治不想学、没动力(杨真直):https://www.bilibili.com/video/BV1Ya4y1W7iT

    如果你是一名大学生,可以看下百大 UP 主【取景框看世界】的视频,考研、就业、学习方法、方向选择都有!(框框也是咱们 编程导航知识星球 的嘉宾)

    学习建议

    1想学好编程,千万别背代码!要多写代码、多练习、多做项目(把这句话刻到脑子里)。很多知识记不住没关系,只要你实践过,下次让你再做同样的事情时,你能够想起来用什么技术 / 什么方法,能通过查阅文档和百度来实现就可以了。
    2现在网上的学习资料非常多(星球内也很多),并不是什么资料我们都需要看一遍。选一个相对完整、自己看的舒服的资料去学习就好了,基本都是大同小异,但注意千万不要看过期的视频(最好看 1 - 2 年内的)。
    3准备好一款在线、随时随地写代码的工具,不用在本地去安装和配置,是初学者的好帮手。推荐菜鸟工具:https://c.runoob.com/compile/10
    4准备一款记笔记的软件(推荐 Typora + Markdown),适当地将学编程过程中老师的思路、自己遇到的问题、解决问题的方法、心得感悟、遇到的好资料等进行记录。好记性不如烂笔头,后期复习时可以帮助你事半功倍。
    5学完一门编程语言后,可以去世界最大的代码开源平台 GitHub 上搜索代码或者项目,看看其他程序员的作品。(GitHub 加速访问教程:https://t.zsxq.com/2V3nQRj)
    6学会自主解决问题以及如何高效地提问(建议阅读 《提问的智慧》

    各方向学习路线

    todo 待补充原创文章链接

    应对焦虑

    1 大目标分解,持续立 Flag
    2 找到自己的成就感(做事的动力)
    3 灌鸡汤:
    https://www.bilibili.com/video/BV1U44y1V7P4
    https://www.bilibili.com/video/BV1sF41137z3
    4 乐观看待事物

    积累经验

    实践经验是求职的核心竞争力!

    项目

    建议

    最好能够独立从 0 到 1 完成至少一个项目,需求分析、技术选型、初始化、增删改查、单元测试、部署上线、不断完善和优化。

    如何获得项目经历?

    ●课堂大作业
    ●视频 / 书籍 / 文章教程(掘金)
    ●参加竞赛
    ●给开源项目贡献
    ○Issues 区答疑
    ○Bug 修复
    ○新增功能
    ○负责模块
    ●开源项目仿写
    ○完全仿写
    ○新增功能
    ○使用另外一种语言实现(比如 zx)
    ●仿站
    ●实验室 / 课题
    ●工作室 / 社团
    ●创新项目
    ●外包
    ●自主实现

    什么样的项目有竞争力?

    ●个人参与度高(负责)
    ●和你要求职的方向高度吻合
    ●用的技术较为丰富,且每个技术用的恰到好处,为了业务而应用
    ●有某个方面或比较全面的优化点,如性能、稳定性、可用性等
    ●设计的算法很巧妙、效果很好,比如大数据推荐算法的执行效率、准确性
    ●能够解决某个问题。比如业务场景:帮忙抢到火车票,技术问题:自动化构建平台、组件库,行业问题:广告计算平台等
    ●前沿,比如区块链、前端流行的低代码平台、后端流行的云原生等
    ●项目影响力,比如 star 数、用户数等
    ●项目创意很好,能做出市面上没有且有一定作用的东西

    项目优化思路

    ●性能
    ●可靠性:这个人很靠谱,但他可能很懒惰。一般不出手,出手不一般。
    ●可用性:这个人很勤快,但他可能不靠谱,99.99999%
    ●成本
    ●系统复杂度
    ●可伸缩性(容器)
    ●稳定性
    ●可维护性
    ●可扩展性
    ●体验
    ●合理性
    ●并发(缓存、性能优化、降级)
    ●容错性
    ●安全性
    ●可观测性(直观清晰地查看系统的运行状态)

    优质项目分享

    todo 待补充外链

    实习

    ●寒假实习
    ●暑期实习
    ●日常实习
    ●远程实习

    科研

    ●实验室
    ●论文

    竞赛

    算法类竞赛:

    ●蓝桥杯
    ●ACM
    ●LeetCode 周赛
    百度之星
    ●CodeM
    ●阿里天池
    ●Kaggle

    作品类竞赛:

    ●计算机应用能力大赛
    微信小程序应用开发赛
    ●三创赛
    ●互联网+
    ●挑战杯

    证书

    ●语言 / 框架认证
    ●华为 / 思科 / 红帽等专业认证
    ●软考(软件设计师)
    ●PAT 认证
    ●计算机等级考试

    求职 - 准备简历

    简历模板

    不用太纠结!从上到下、布局清晰、简洁干净就好。

    制作简历:https://www.wondercv.com/

    写简历技巧

    而写简历的目标是:在真实的前提下锋芒毕露,将有限的积累 无限放大 ,向面试官表达出 “我很主动、我自学能力很强、能够胜任工作” 等信息。

    1内容划分清晰、完整全面,简历通常包括几个部分:个人简介(基本信息、照片、学校、专业、成绩、四六级证书、特长介绍等)、竞赛奖项、个人技术栈、实习经历、项目经历、科研经历等。
    2合理划分各部分的比例,多写经历(实习、项目等),少写正确的废话(自我评价)
    3简历必须一页,排版整洁;色调不宜过暗或过亮,推荐蓝色或淡灰色;色彩不要太丰富,要让人看起来舒服。
    4依据个人优势对内容板块进行排序,把最有亮点的部分放上面,突出自己的优势和亮点,尽量减少和其他同学简历的相似度。和短视频逻辑一样,面试官如果觉得你的简历千篇一律,一下就刷走了。
    5文字内容要精炼,拒绝口语化;用词尽量专业,体现专业性,不用担心面试官看不懂。
    6项目 / 实习经历介绍中,可用 STAR 分析(场景、任务、行动、成果)来梳理自己的核心工作。标准句式:在 xx 公司 xx 项目中,在 xx 情况下,运用 xx 技术,解决了 xx,优化了 xx,达到了 xx 效果,带来 xx 收益等。举个例子:为适应产品特性、加快迭代速度,后端由 Springboot 重构至 Node.js ,数据库由 MySQL 迁移至 MongoDB ,实现了前后一体的 集中式配置中心 ,提高了接近 1 倍 的开发效率。注意每段介绍不宜过长,留给面试官提问的空间。
    7最好给项目附上可直接访问的链接,有个人博客的话也最好写上去,建议多在博客中记录和总结自己学到的知识,让面试官感受到你的努力积累、脚踏实地。
    8学会利用简历去引导面试官。很多面试官都会针对简历中提到的技术去展开提问,因此必须熟悉简历中的项目和用到的技术,提前想好对策。常见的问题有:项目中用了哪些技术?为什么用这个技术不用别的?有什么亮点?怎么去优化等等。
    9可以针对不同的岗位和 JD(岗位描述),准备不同的简历,在部分细节和工作内容上调整。比如你前后端都会,投递后端开发岗位时,把后端技术放在前端技术上面去写,项目经历、实习经历等都要侧重于后端。
    10内容允许夸大,尤其是对于没有特别多项目的同学,在简历的项目部分是需要 适度包装 的。举个例子:用 xx 框架提升了 20% 的查询性能,20% 是一个很不显眼的数字,如果你改成 90%,会更抓眼一些,并且对于大部分场合来说是合理的。但是 杜绝欺骗 ,尤其是工作年限等有准确数字、可被调查的问题,请实事求是,否则后果自负。
    11写完简历后,一定要自己通读几遍。
    12有机会可以多阅读借鉴他人的简历,查漏补缺。

    优秀简历参考

    ●腾讯学弟简历:https://mp.weixin.qq.com/s?__biz=MzI1NDczNTAwMA==&mid=2247498320&idx=1&sn=8af54fb5f9fbcaea0b3f24d0ab45b31d&scene=21#wechat_redirect(不要外传)

    求职 - 投递简历

    投递时间

    完整时间:

    ●2 月 ~ 5 月
    ○春招,面向大四 / 研二等即将毕业的同学
    ○暑期实习,面向非毕业生
    ●6 月 ~ 11 月
    ○秋招,面向大四 / 研二等即将毕业的同学
    ○寒假实习,面向非毕业生
    ●全年
    ○日常实习(如果要参与的话,尽量提前修完一些课程,给自己腾出时间)
    ○劳务实习

    黄金时间(提前批):

    金三银四? 2 ~ 3 月
    金九银十? 7 ~ 9 月

    建议大家利用好提前批,相当于在正式秋招 / 春招之余又多了一次机会。

    投递目标

    建议多投简历,从相对不想去的公司开始投递。

    ●岗位
    ●公司
    ●部门
    ●技术匹配度
    ●地点

    投递渠道

    ●官网(建议先从官网了解各岗位的技术和能力要求)
    ●官方公众号(比如腾讯招聘)
    ●内推(建议部门直推)
    ●宣讲会(线上 / 线下)
    ●绿色通道
    ●找工作的网站
    ○实习僧,鱼皮的第一份实习就是在这里找的,机会很多
    ○牛客网,有很多互联网公司的内推机会(互联网)
    ○智联招聘
    ○Boss 直聘
    ○前程无忧
    ○拉勾招聘

    求职 - 参加笔试

    可以去牛客网查看各公司历年笔试题目。

    笔试内容:

    ●性格测试
    ●算法题
    ●技术类题目(选择题、填空题)

    准备面试

    一般一场面试 30 - 60 分钟,一定要提前准备!

    自我介绍

    1 分钟左右,在自我介绍中突出自己的技术 / 业务 / 项目优势,并且在结尾抛出 “钩子”,吸引面试官提问。

    要讲清楚以下几点:

    ●你是谁?
    ●你的经历:表达出你学过哪些技术?做过什么?
    ●要突出你的优势,自信一些

    项目介绍

    怎么介绍项目?

    1为什么要做这个? 突出 自主性
    2从 0 到 1 实现了这个项目,用了哪些技术?
    3有哪些亮点?做过哪些优化?尽量 引导面试官

    算法

    如何刷题?参考星球内语雀知识库的算法学习路线

    大厂每轮面试基本必考 2 - 3 道算法,建议刷题,刷题时每道题目的时间控制在 40 分钟 ~ 1 小时。

    即使没空刷算法,你也要了解每个算法和数据结构做了什么?

    技术

    八股文,见星球语雀知识库。

    面试软技巧

    ●礼貌精神
    ●不要抢话,想清楚再回答

    面试过程

    自我介绍

    项目考察

    技术考察

    算法考察

    不仅要说出思路,还要能运行,还要能通过。

    智力题

    抛硬币、硬币称重

    业务考察

    举例:

    ●设计一个地铁轨道交通系统?
    ●设计一个实时弹幕系统?
    ●设计一个排行榜、点赞?

    反转问答

    ●对你的建议
    ●“收集” 一些信息
    ●询问一些题目的解法

    面试复盘

    面试之后要做的事

    1快速回想并记录自己面试中遇到的题目和心得,最好可以写面经
    2保证自己没答出的题目在下次面试可以回答出来

    优秀面经

    ●星球同学的分享
    ●牛客网
    ●LeetCode

    Offer 选择

    尽可能多地争取 offer,不要拿到一家后就躺平了。

    选择因素

    ●薪资
    ●地点
    ●技术匹配度
    ●行业
    ●工作时长
    ●公司口碑
    ●部门口碑
    ●领导口碑
    ●业务口碑
    ●稳定性
    ●情怀

    参考平台

    1校招薪水 Offer Show 小程序
    2脉脉职言

    职场生存

    ●先思考再提问
    ●尽可能多地获取信息
    ●日常总结,持续积累
    ●主动承担
    ●学会沟通
    ●礼貌待人
    ●谨言慎行
    ●合理分配需求的时间

    程序员重要能力

    想成为大佬,就是要通过持续学习和积累,提升自己的各方面能力,比较抽象,共勉!

    1团队协作能力
    2高效沟通能力
    3需求分析能力
    4架构设计能力
    5抽象复用能力
    6独立创造能力
    7问题解决能力
    8归纳总结能力
    9自主学习能力
    10工具利用能力
    11高效编码能力
    12信息检索能力
    13开源建设能力
    14源码阅读能力
    15自测审查能力
    16文档编写能力
    17知识表达能力
    18绘图描述能力
    19持续学习(兴趣驱动)
    20保持好奇心

    编程误区

    1我不适合学编程?❌(兴趣比天赋更重要,不要怀疑自己)
    2忽视基础,急于求成 ❌(勿以浮沙筑高台)
    3数学、英语差,就学不好编程 ❌(开发工作基本不用高等数学,英语可以使用翻译软件、工作中提升)
    4编程时,刻意记忆代码 ❌(知道每行代码的意义,能看文档写出来就行)
    5每行代码都要追求完美 ❌(何为完美?每个人的定义不同。先完成,再根据实际情况不断优化才是王道)
    6用百度搜索、复制粘贴的都是菜鸡程序员 ❌(99% 的程序员写代码都离不开搜索和文档,这是很正常的)
    7我做的项目太小了,就不整理了 ❌(自己的每个项目都要整理,可以记录自己的成长)
    8跟别人交流很麻烦,我更愿意自己写代码 ❌(1 + 1 > 2,切勿闭门造车,不过也要找到合适的同学去交流)
    9做别人做过的项目没有意义 ❌(连别人做过的项目都做不出,还想造新轮子?)
    10遇到 Bug,想办法绕过而不是寻找解决方案 ❌(Bug 最能使人成长)
    11遇到问题,第一时间去问别人而非自己解决 ❌(建议阅读《提问的智慧》)
    12花了很多时间、看了很多书,就能学好编程 ❌(编程最忌讳纸上谈兵)
    13只向前学习,不整理学过的知识 ❌(建议每学完一个知识,都去回想、总结、写心得,这个时间的花费是值得的)
    14单元测试不重要 ❌(在实际开发中,越早发现问题越好)
    15写文档不重要 ❌(缺失文档的项目后期会很难维护)
    16和我无关的工作,就不需要了解 ❌(了解团队、同行是很重要的,全局视野)
    17收藏的资源从来不看,就不收藏了 ❌(万一以后用到了呢?)
    18不去考虑需求的价值,而是一味寻求解决方案 ❌(不要成为需求机器,要有自己的独立思考)

    高效法则

    如何高效学习编程、完成工作。

    1不要过分追求完美,完成比完美更重要。
    2有现成的代码,就不要自己写,避免重复劳动(学习除外)。
    3学会使用软件及快捷键来提升自己的编码效率。
    4做项目前,要先想清楚怎么做,做好充分的预研和设计。这样不仅便于后续的程序扩展,也能避免无意义的返工。
    5将大的目标进行拆解,做好计划,分清主次。不要因为觉得目标遥不可及而拖延,也不要盲目乐观而松懈。
    6养成好的作息习惯,找到自己适合工作的黄金时间。
    7记性不好,就多记录、多总结、定期复习。哪怕实在记不住,也可以借助文档、收藏夹软件来当自己的第二大脑。
    8积累属于自己的工具库,配合搜索软件实现随用随取。
    9多和其他同行交流或订阅技术推送,拓宽知识渠道,从而了解更多的工具和方法。有些东西你只要听说过,要用时也许就能节省大量查找时间。
    10找到让自己进入专注做事的状态的方法,比如戴上耳机、嚼口香糖等。
    11做事高效,离不开经验的积累,因此要多写代码、多做项目