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

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

   
🔗
illi_504 2021-9-30 23:34:06 | 只看该作者
全局:
学校上那么多课完全是给你打好一个foundation,以至你今后工作再新学东西时候会比非CS专业的快很多;同时你刷那么多题,和那么多debug,都是很好的训练,debug能力绝对是学校给你的很重要的一个东西。 至于那些天花乱坠的data structure,肯定是需要了解掌握的,但不会都用的上,我现在顶多就array,其他的没了。。。 (我前端,可能没有那么多data structure)
回复

使用道具 举报

🔗
tiany7 2021-10-1 00:09:07 来自APP | 只看该作者
全局:
maristie 发表于 2021-09-30 00:49:11
大部分核心课程的知识都是有用的。但也不代表自学是不可行的。-baidu 1point3acres
我简单不完全地枚举一下:
老哥,那个strlen如果在循环没有改动的话会被优化成常数的
回复

使用道具 举报

🔗
maristie 2021-10-1 01:23:35 | 只看该作者
全局:
本帖最后由 maristie 于 2021-10-1 03:22 编辑
tiany7 发表于 2021-10-1 01:09
老哥,那个strlen如果在循环没有改动的话会被优化成常数的

也许有优化策略相对激进的编译器能检测出这这点吧。不过一般来说,不实际运行程序是不知道指针s指向的字符串的长度是否改变。
比如假设 char s[] = "abcde", 我在loop body里每次都令 s[strlen(s)] = '\0'
C语言比较难办的一点是,我们没办法知道s到底有没有被修改,因为任何指针都可以指向任意位置。假如通过另一个指针修改了s,编译器除了运行一遍以外几乎不可能检查改动与否。
包括gcc在内的编译器,对这种情况一般是采取保守策略,不会进行优化。即使某些特殊case下编译器优化了,那这段代码也就会依赖相应的编译器和目标平台,牺牲可移植性——而这一切都可以用一个局部变量储存strlen(s)的结果轻松解决。
------
我简单写了一段代码,用gcc -O2优化级别编译成x86-64的汇编语言:
  1. #include <stdio.h>
  2. #include <string.h>. 1point 3acres

  3. int main()
  4. {
  5.     int i;
  6.     char s[] = "abcde";
  7.     for (i = 0; i < strlen(s); i++) {
  8.         s[strlen(s)] = '\0';
  9.     }
  10.     printf("%s", s);
  11.     return 0;
  12. }
复制代码
这段代码实质上没有改动 s,但是得到的程序显示它每次都调用了strlen。. 1point 3acres





补充内容 (2021-10-01 02:26 +8:00):
P.S. 为了避免内部的strlen call干扰,用下面这段可能更有代表性:

  1. #include <stdio.h>
  2. #include <string.h>. From 1point 3acres bbs
  3. . 1point 3 acres
  4. int main()
  5. {
  6.     int i;
  7.     char s[] = "abcde";
  8.     char *t = s;
  9.     for (i = 0; i < strlen(s); i++) {. check 1point3acres for more.
  10.         *(t + 5) = '\0';
  11.     }
  12.     printf("%s", s);
  13.     return 0;
  14. }
复制代码
回复

使用道具 举报

全局:
其实数据库,计算机组成原理,操作系统都是很好的课程,深入浅出的告诉你一个庞大的系统都要考虑哪些问题,如何权衡利弊,如何优化解决,这些对系统设计还是很有帮助的。
回复

使用道具 举报

全局:
network有什么帮助 感觉都是硬件啊

很重要啊,在哪儿都想要好的网络,强的WIFI,安全的访问,这都是NETWORKF需要解决的问题。
回复

使用道具 举报

🔗
张智玮 2021-10-1 06:09:59 | 只看该作者
全局:
我要是懂NETWORK是不是就能解决房间和图书馆信号不够强速度不够快的问题了。
回复

使用道具 举报

全局:
楼上都有道理,学校的内容大纲确实重要,但有个前提,就是老师教得好。这个目前遇到的大部分情况都需要自己去学习,说真的感觉网上油管,b站的课程讲得好多了。除了比较牛的学校,其他最有价值的部分可能只是一张纸文凭,其他的内容需要你自己去看书上网去学。
为什么上面有人会说工作后才发现那些内容重要,因为CS是实践性很强的,需要场景来考虑用什么技术解决什么问题。大部分学校的实践其实是短板,不仅没法给学生好的简历项目,还浪费了很多时间。
当然不排除一些牛校可以给学生非常硬核的学习实践机会,甚至有自己写个内核,网络rpc协议什么的项目,其他真心很烂,数据库课就是做个什么校园管理系统,ood结果就是做个什么做个计算器。这种没啥意义。
回复

使用道具 举报

🔗
wsu49 2021-10-1 10:41:18 来自APP | 只看该作者
全局:
algorithm感觉只有面试会用上

其余的基础知识有的可能工作上用不到,但是对事情的理解会不一样,例如你觉得network不重要 但是你看到handshake不成功你会知道是什么意思

还有OS的话就是你不了解你的系统的heap memory, cpu load,process thread count这些 做parallel programming 你怎么去优化你的系统?

个人觉得基础课用处很大
回复

使用道具 举报

🔗
ujenita 2021-10-1 13:44:12 | 只看该作者
全局:
回答之前求加米!! 我觉得最有用的就是 java 数据结构 software develop之类的 如果你以后想做SDE的话!

评分

参与人数 9大米 +9 收起 理由
ShawnILUV + 1 给你点个赞!
消瘦 + 1 给你点个赞!
1nv0ker + 1 赞一个
七七7700 + 1 给你点个赞!
FayZ + 1 赞一个

查看全部评分

回复

使用道具 举报

🔗
豹豹 2021-10-2 07:33:39 | 只看该作者
全局:
宏观地讲,学校里所学的东西应当是你前几份工作的super set。 学的越广工作的选择范围就越广。为啥要追求缩小学习的范围呢? 往后的人生实在很难拿出整块的时间系统的学习一个东西了。 能学的时候尽量多学一点才比较好。

具体的来说,我觉得最主要的是学思维。怎么用CS的方式去解决一个问题才是最重要的。而大学里面最有用的我认为是在学这些进阶课程的时候做的project。很多思维方式真的要自己应用一遍,走一遍才能领会的。
回复

使用道具 举报

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

本版积分规则

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