当一个【最优解】出现时,不同的人有不同的解释
普通程序员:能跑
高级程序员:能跑是基础,代码命名要规范,设计功能可拓展
大神程序员:满足上面几个需求外,还需解决方案的时间/空间复杂度,考虑数据的存储问题,关注底层性能逻辑,并不断优化。
对于CS专业的你而言,我认为不存在哪条路是最优解,你永远也不知道毕业后流行什么语言,什么框架。建议把握当下,学到手的知识都算数。
回到问题本身,因为你的提问覆盖范围很广,我尝试从以下两个方面帮你解答:
计算机专业的未来趋势
有数据显示,目前国内计算机专业毕业的应届生中,他们的就业薪资普遍高于其他非计算机专业的人,但即便如此,也有一半的人在毕业后放弃IT行业。
我想,出现这种情况的主要原因是:
1、部分应届生有了其他的职业规划(转专业,考公,考研)
2、部分应届生不具备足够的计算机专业知识,被所行业抛弃
但不管你未来是否从事计算机行业,你都需要不断学习,让自己拥有更多选择权,这是最优解的前题。
具备何种技能能让你获得更多选择权
这是我从北大学长的《九章算法班》整理出的计算机专业知识必知必会,内容难度不大,不会花费太多时间,就能轻松帮你梳理出来一整条思路来,逐步提升编程水平。
大一:熟悉一门编程语言
大一你至少需要掌握一种编程语言,把他的基础,操作系统,组成原理学扎实,这是日后拉开差距的第一步。
目前市面上就业岗位最常用到的语言就是java/python,如果你在语言上的基础不扎实,或者说学的不够深入,你可以通过《算法基础班Java+python》来免费学习巩固。带你通过伪代码更快理解算法思路,帮助形成良好的代码风格。
大二:巩固算法与数据结构
1、最直接的方法是刷题
巩固算法与数据结构最直接的方式就是刷题,这里说的刷题不是海量去刷,而是有针对性的刷题。这里分享一份在线OJ【新手必刷编程50题】,题目由ACM铜牌选手编撰。
主要涵盖的知识点有:**基本数据类型、判断语句、数组与循环、字符串与循环、栈与队列、简单递归。**题目由易到难,刷完这套题后,或许你会有新的理解.
2、最扎实的方法是提升自己的算法质量
在刷题的基础上,你需要不断的提升自己的coding质量,避免在面试中遇到隐形坑。对于还没有找到合适的方式提升代码质量的同学,推荐去听一下《九章算法班》,FB架构师亲授,手把手教你coding。感兴趣的朋友可以先白嫖两章。
大三:熟练掌握操作系统,系统设计,最好拥有项目经验
如果希望在学会更多核心项目的同时,应对面试,追求去更大的公司工作的话,可以来体验下系统架构设计 System Design 2022 版。
在应对面试官可能提出的问题时,常见的错误是面试官给出问题后,候选人就开始怼各种关键词,什么Load Balancer,Memcache,NodeJS,MongoDB,MySQL……
实际上,针对系统设计问题,九章算法有一套4S分析法,即使完全不知道的问题也可以按照这个方法一步步去回答。
所谓4S分析法中的4S是指Scenario(场景),Service(服务),Storage(存储),Scale(扩展)。
第一节的免费试听课程就会讲到设计Twitter和系统设计的通用解题法则,不妨去感受一下,简单入个门。
当然如果你有时间,可以沉下心从0到1去做一套工业级项目,即使不翻墙,去面BATJ也绝对加分!
可以跟着Facebook资深架构师免费学习《Twitter项目课》,带你从零设计Twitter,最终搭建一个P8(L5)水准的项目。项目涉及万行代码,最终成果是一个可上线的工业级别的项目,而不是像市面大多数项目课程简单做个demo。
大四:提升应试能力/选择发展方向
这个过程中你需要思考的不是单纯的刷题敲代码背答案,而是站在面试官的角度思考他爱考什么。这样在面试中的表现才会更好。
这里分享北大学长整理好的大厂面试常考知识点及考察频率感兴趣的也可以移步《九章算法班》学习更多应试小技巧。
① 字符串处理:考得很多,主要注重代码实现能力,算法上没有太多难点,通常是处理麻烦。
② 双指针算法:高频算法之王,变形特别多,算法不算特别难,但能快速想到和写好不容易。
③ 二分法:考察频率中等,能写好写对不容易,二分答案的问题甚至很难想到算法,要背模板。
④ 分治法:考察频率中等,一般和二叉树一起出现和考察,题一般不难。
⑤ 动态规划:国内大厂基本都考、北美主要是G/F喜欢考,其他公司考得比较少。
⑥ 拓扑排序算法:考察频率中等、但每个公司基本都有一个这个算法的题。
⑦ 链表:中小公司考得多,大公司近年来考得少,题目一般不难,主要考察reference。
⑧ 堆:高频,经常会用到,原理必须掌握,但不用掌握代码实现,应用必须掌握代码。
⑨ 树状数组:不太考,与其学这个不如学线段树。
⑩ 红黑树:只有G可能会问到,也只是问大致原理,能干啥,Java会用TreeMap就行。
在了解了面试常考知识点后,有针对性的精刷算法题,能否更好的帮助你通过面试,我把最近常考的题搜集整理在了《BAT高频面试题》,这里展示部分,需要自取。
- 最长回文子串
- 字符串解码
- 员工的重要度
- 最长字符串链
- 小行星的碰撞
- 等差切片 II - 子序列
- 最短的唯一单词缩写
- 统计全为 1 的正方形子矩阵
- 满足要求的子串个数
- 基础计算器
- 会议室4
- 合并区间
- 直方图最大矩形覆盖
- 赛车
- 课程表
九章算法,国内外一线工程师在线直播授课,已经帮助30000+人成功拿到心仪offer。