楼主: 匿名
跳转到指定楼层
上一主题 下一主题
收起左侧

[职场感言] 学校上的CS课有多少当码农能用得上

   
🔗
JerryLi 2021-9-30 09:56:07 | 只看该作者
全局:
真的很开心 发表于 2021-9-29 18:06
我在大厂做product infra的组,最近在做个项目要自己写cpp code generator,到处都是递归

🆘太高端了你们组的代码 我从来都没在代码库里见到过递归 可能要很底层了
回复

使用道具 举报

🔗
charles8star 2021-9-30 10:19:59 | 只看该作者
全局:
除了刷题没用,其他的基础课肯定全用上了
回复

使用道具 举报

🔗
Washingtonwei 2021-9-30 11:24:24 | 只看该作者
全局:
其他专业转计算机的话,建议认真学习数据结构和算法+操作系统+数据库,软工的话看看敏捷开发,熟悉代码规范,会用Git和GitHub差不多了,再有时间就学学OOP and Design Patterns,可以提高代码质量(复用性,扩展性等)。
回复

使用道具 举报

🔗
Edify 2021-9-30 12:01:50 | 只看该作者
全局:
那些基础课程能让一个人对计算机整体有个基本的认识和了解吧,可能绝大时候都用不上但没准某个时候会用上。
回复

使用道具 举报

🔗
vtiaocao 2021-9-30 14:15:18 | 只看该作者
全局:
有用,也没用

大部分必修课没什么直接用,但读大学不是读技术学院,没有直接用也是正常吧……
回复

使用道具 举报

全局:
计算机是很少见的专业课都用得上的专业了,别说楼主列出来的那些硬课程,哪怕是在学校里感觉水的课程也是这样。我本科是软件工程的,还开了一门课叫项目管理,当时读书的时候感觉是门水课,只想写代码。工作几年后开始带项目才越来越感觉到这门课的重要性。
而leetcode刷题仿佛才是除了面试就没啥用了:)
回复

使用道具 举报

🔗
maristie 2021-9-30 15:49:11 | 只看该作者
全局:
大部分核心课程的知识都是有用的。但也不代表自学是不可行的。
我简单不完全地枚举一下:
.google  и
1. 编程语言
C / C++, Java, Python.--
大部分同学的第一门语言应该是 C 或 Python。作为编程的 building block,编程语言的重要性不言而喻。
各个语言提供的机制、抽象、runtime、范式等等都值得深入学习。

2. 算法和数据结构
和楼上一些同学的观点不同,我认为这非常重要。
举个例子,有的C语言初学者会写出下面这段程序:
  1.     int i;
  2.     char *s;
  3.     for (i = 0; i < strlen(s); i++) {
  4.         // loop body
  5.     }
复制代码
strlen 运行时间是O(n),上面这段程序就需要在循环头部消耗 O(n^2) 的时间。一旦要处理长字符串,这段代码就会成为性能瓶颈。. ----
不理解自己所写程序的时空复杂度会带来潜在的性能隐患,即使它是正确的。而使用正确的算法和数据结构去解决这类性能瓶颈,当然是重要技能。. 1point3acres

3. 计算机系统 / 体系架构.
对一般程序员而言,硬件的详细设计和原理不需要深入了解,但是需要知道硬件提供的抽象、模型以及其他对程序正确性和效率有影响的性质。.--
这点对于偏底层的系统编程非常重要,对于编写应用程序的程序员来说也比较重要。
. Waral dи,
4. 操作系统
操作系统是连接硬件和user application的桥梁。操作系统在硬件的基础上又简化了硬件本身的复杂性,提供了若干非常有用的抽象,比如进程、线程、虚拟内存、文件等等。了解它们的性质、实现并且比较tradeoff是每一个程序员的必备知识。. From 1point 3acres bbs

5. 计算机网络
Internet的诞生是足以改变人类历史进程的重大事件,也是我们能享受如今IT行业蓬勃发展的基石。在网络编程已经渗透得越来越广的现在,不了解计算机网络毫无疑问会处于劣势。不论是应用还是网络相关库,它们的设计、实现都需要扎实的网络基础知识。又例如,IP路由协议中的OSPF使用了非常有名的Dijkstra算法,这是算法应用的又一证明;再比如,系统设计环节中,假如要求你设计一个分发视频流的CDN,你至少需要结合网络层、传输层和应用层的知识。

6. 数据库系统
不论是写SQL、设计relation schema、transaction,还是数据库的实现机制,都是值得学习的内容。特别是实现,如果不了解数据库如何存储数据,就无法理解索引的作用;不了解数据库如何parse并执行query和update,就不懂得如何优化它们;不了解事务的ACID及它们的实现,就无法保证程序正确性、提高并发效率、以及如何应对machine failure。
数据库不仅是system design的重要topic,而且和网络一样,在当今各类应用无处不在。它涉及前述的操作系统、网络(e.g. parallel / distributed database)、分布式系统和算法。

7. 软件工程
假如说上面都是属于对“物”的知识,软件工程则涉及对“人”的知识。包括工程管理、开发模式、大型软件工程的开发、重构与维护等等……
软件开发归根结底离不开人,而“人”可以说是软件开发过程中最复杂和不可控的要素之一了。我自己没有管理经验,不便多发表评论,但其重要性可想而知。
. check 1point3acres for more.
8. 信息安全
虽然信息安全似乎最近才成为一个相对热门的topic,但其实不仅信息安全已经有几十年的历史(morris worm是1988年的),而且不论在学术界、工业界还是日常生活中都已经无处不在,比如个人隐私问题。对信息安全常识有基本的理解,并且了解其机制,也在逐渐成为每个程序员的必备素养之一。

评分

参与人数 5大米 +7 收起 理由
kellarh + 1 很有用的信息!
Jefferey + 1 赞一个
solomonking + 2 例子举得很好
heheland + 2 给你点个赞!
hhhh12222222 + 1 赞一个

查看全部评分

回复

使用道具 举报

🔗
david_smith 2021-9-30 21:31:17 | 只看该作者
全局:
我是白白小小白 发表于 2021-9-29 12:50
network有什么帮助 感觉都是硬件啊

首先我肯定没有在工作中用过Network上的每一个知识点。
其次Network上面的那几层协议 HTTP, FTP, TCP TNP 这些都是纯软件。  
最后,给你一个使用Network的知识点的地方, AWS VPC, https://docs.aws.amazon.com/vpc/ ... -is-amazon-vpc.html
. 1point3acres
回复

使用道具 举报

全局:
david_smith 发表于 2021-09-30 06:31:17.
首先我肯定没有在工作中用过Network上的每一个知识点。
其次Network上面的那几层协议 HTTP, FTP, TCP TNP 这些都是纯软件。  
最后,给你一个使用Network的知识点
Ok。谢谢你
回复

使用道具 举报

🔗
fireworks74 2021-9-30 23:02:31 | 只看该作者
全局:
很多啊数据结构与算法啊软件工程啊,尤其是一些有项目的课,刚工作那会有遇上类似的需求还能去项目代码里扒一点东西之类的,当年的同学都是未来的大牛啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
职场达人
  • ↑ 本版用于讨论职场各种干货话题,闲聊请去🔗聊聊或者🔗匿名版
  • ❌ 本版严禁水贴,引战,发布广告,拉群,贴个人联系方式,扣分无警告
  • ☑ 求职、面经等去 🔗北美求职和 🔗回国求职大区,刷题和学习请去 🔗终身学习大区
  • ☑ 请去专版发布 🔗内推, 🔗招聘信息,和讨论 🔗创业内容
  • ☑ PIP / DevList/ Need Support 等话题也已开设 🔗专版

本版积分规则

>
快速回复 返回顶部 返回列表