{ZZ}IT 民工男的 CS 课程记忆

本文作者回顾了自己的CS学习经历,强调了数学、程序设计、数据结构与算法、操作系统原理、网络、数据库和编译原理等课程在实际工程工作中的重要性。作者指出,这些课程不仅提供基础理论,还培养了分析问题、设计解决方案和理解系统底层的能力。对于面试中的难题,作者认为它们旨在考察候选人对基础知识的掌握和实际应用能力。
摘要由CSDN通过智能技术生成
地址:http://bbs.sysu.edu.cn/bbstcon?board=CS&file=M.1267951351.A
发信人: kyhpudding
 (只要衫除实得~), 信区: CS
标  题: IT 民工男的 CS 课程记忆
发信站: 逸仙时空 Yat-Sen Channel (Sun Mar  7 16:42:31 2010), 转信

先介绍下自己, 03CS 本科
在某更懂中文的地方混了两年多, 做社区产品, 后来做基础平台
带项目带新人前端到后端应用到底层跟各部门死磕无处不折腾
每年都为可以公费回广东回来校招, 据说是杀手, 不过我不觉得
最近在一以企鹅为吉祥物的公司继续折腾
此文仅代表个人观点, 也只包含个人经验

聊聊 CS 本科各种课程对实际工程工作,
更准确点, 对典型互联网行业的工程工作的影响
试图回答: 这些课程有啥用? 以及, 为啥面试会问这种 BT 问题?
不过如果你不希望走技术方向, 或者希望折腾一下技术就"转管理"
请忽略这篇文章

首先是数学, 我本科四年最后悔的事就是没把数学学好. 掩面, 这个问题先不谈.

程序设计, 首先是语言问题. 可能大家会抱怨出来工作基本都是 java C# 了, 为毛
大学还在教 C++, 落后! 好吧, 我最熟悉的语言其实是 C 语言......

我们看程序设计担负的任务. 一方面, 你必须掌握一门跟计算机沟通的语言, 否则后面
的课根本没法学. 另一方面, 通过学习程序设计 --- 而不是某一门特定语言, 掌握一些
基础的设计方法和一些思路, 为进行真正的工程开发做准备.

从掌握计算机原理, 以有效利用计算机的角度考虑, 应该选一门相对低级的高级语言,
这自然是 C, 它对于一些底层问题: 硬件, 数据结构, 底层操作系统机制等
提供了合适程度的抽象, 把我们对计算机的认识从底至上衔接起来: 写汇编时, 你得知道
指令对底层硬件的意义; 同样的, 你需要能把 C 的循环, 数组寻址, 指针在汇编上
到底是什么解释清楚, 你需要知道函数调用压栈的到底是什么数据, memcpy 到底怎么
拷的数据 (经典问题). 到学 OS 时, 如果用 linux (或任何 UNIX-like) 做教材样本,
你得有很扎实的 C 语言功底, 才做得来操作系统实验, 或者至少理解系统调用用怎么
完成. C 是系统底层的标准语言, 扎实的 C 语言基础是了解系统底层原理的
敲门砖, 至于为什么要对这些计算机系统底层如此了解的原因, 我们下面再谈.

另一方面的任务, 涉及到许多人每天的工作 --- 程序设计. 两个分支: 数据结构和算法,
软件设计范式, 抽象, 建模现实世界问题, 提供计算机解决. 这要求有一个能让底层细节
不会阻碍思考, 而且相对实用的语言. 越来越多的大学使用 Java, 当然也有不少人讨厌
这个, MIT 使用 scheme 和 python. 从达到教学要求角度看,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值