C 语言底层开发怎么样?

2022-03-18 13:18:23 +08:00
 mikewang

应届生春招拿到了某大厂 offer 。当时选的 Java 语言面试的。
面试通过后,HR 说虽然面的 Java ,也可以考虑别的语言开发。
我了解了一下有 C 、C++、Java 、Python 等,然后对方说我基础不错,推荐去做 C 语言从事偏底层的开发。

现在我比较疑惑的是,大学期间没有接触过这一方面( C 语言教的十分简略,其他知识也都是在 Java 基础上学的),心里很没有把握。不过公司说,没接触过底层没关系,会有导师带。
然后底层开发还要熟悉汇编,现在也几乎是 0 基础(《编译原理》课写的汇编都是伪代码)

认识的同学和毕业生,从事底层的好像也比较少,还没了解到具体是要做些什么工作,前景如何。

HR 说,最终意愿看我,如果坚持 Java 开发也 OK 的。
所以我想问一下,现在 C 语言底层开发如何?
第一份工作选会的,还是选不会的?

11947 次点击
所在节点    程序员
149 条回复
hello2090
2022-03-19 06:38:16 +08:00
@xsen 你应该是回复错了,做 C 的都是高精尖,极致追求性能,追求卓越是这个帖子里某些人打造的人设,你仔细看看,我当然不同意这种说法。

还有人说 10%的程序员才能做 C, 能做 C 的去做 Java 是浪费真是笑死我了😄
hello2090
2022-03-19 06:41:42 +08:00
@xsen 是的,我同意
1. 很多做 C 做很久的不会 C++
2. 我就是例子,C++ Linux 手机 App, 到音视频,到 web 开发。

那些嚷嚷着 C 好不卷,工资高的我估计 8 成是连 C 们口中最简单的 Java 都搞不好的
documentzhangx66
2022-03-19 06:43:41 +08:00
@Mirage09

1.请问你能代表整个湾区 /西雅图嘛?但有消息说,日本与你说的这个情况类似,程序员与其他工种没有因门槛差异而拉开收入差距。另外你说大厂里,C 组很少,这事我在 67 楼,给楼主的回复里,也提到类似问题。

2.你觉得不需要熟练各种语言,但我看法相反,因为我提出了一个前提:不缺钱,又对技术有追求。我觉得如果你不是这个情况,无法感同身受的话,应该思考一下为何会存在这个情况。

3.我在 97 楼的第三点,是回应你在 95 楼的最后一段。这并不是鸡同鸭讲。你想通过亚马逊的大部分业务都用 Java ,来证明 Java 在工程上够用,我觉得你可能只是软件工程,不熟悉网络设备,自然也看不到网络设备的重要性,更别提网络设备里用哪种编程语言开发的。
xsen
2022-03-19 06:43:45 +08:00
@hello2090 #101
1. 用来做基础设施、中间件的
这可能是如你说的追求性能,实际上性能只是一个方面;更主要是对编译器版本、系统版本要求低;因为比如做数据库的,你是要支持几乎所有的系统(老旧系统)、不同的 CPU 架构

2. 大多数(如嵌入式、单片机)
这个主要是没有选择;当然,目前又个趋势是越来越多嵌入式的会用 C++、Go 或 Rust 来开发
Mirage09
2022-03-19 06:49:58 +08:00
@documentzhangx66
算了算了,我跟你真的是鸡同鸭讲...
不过当我看到“程序员与其他工种没有因门槛差异而拉开收入差距。”这句话还是笑出声了,真以为自己学个 C 就是门槛了?
documentzhangx66
2022-03-19 06:57:18 +08:00
@Mirage09

鸡同鸭讲....你是鸡还是我是鸡?

在除开外貌、情商、家庭背景等因素外,程序员的门槛,本来就比其他行业要高,收入高也是理所因当,不信你让前台或行政去写 C 试试?

我说这事并不是贬低或看不起其他行业,你如果不是程序员,也不需要对号入座。

门槛高,对应收入高,这是很正常的事情。就像你在前面提到供需关系一样,至少国内与欧美大部分地区,也是公认这个情况。

但日本就有点奇怪,可能不在这个大部分之内,具体原因我不清楚。
Mirage09
2022-03-19 07:05:07 +08:00
@documentzhangx66
“在除开外貌、情商、家庭背景等因素外,程序员的门槛,本来就比其他行业要高,收入高也是理所因当,不信你让前台或行政去写 C 试试?”

哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈笑死我了
yzbythesea
2022-03-19 07:43:25 +08:00
@Mirage09

赞同,语言只是一门工具,重点还是看你做的方向。天天用 C 给 Linux 打补丁,也成长不起来啊。
jackchenly
2022-03-19 08:49:44 +08:00
c 那点东西太简单了,而且不好找工作,工资低。
一个过来人的感受。
teenagerold
2022-03-19 09:27:02 +08:00
无脑 Java 。互联网,银行,小企业办公系统,那家不用 Java? 市场需求量大,后面跳槽要容易的多。相比较来看,C 的坑位少很多,而且上面的老哥也说了,C 和所做的方向是强绑定的,导致做嵌入的积累在音视频方向根本用不上,选择面更少了。
liufish
2022-03-19 09:35:29 +08:00
这个大厂是 HW 吧
northernlights0
2022-03-19 10:16:46 +08:00
感觉身边比较厉害的人,能去造轮子尽量去造轮子。成长周期长,跳槽难倒也是真的。
gowk
2022-03-19 10:49:36 +08:00
赞同 64 楼
secondwtq
2022-03-19 11:03:53 +08:00
@Kasumi20 不要小看汇编器 ... 汇编“翻译”成机器码不是那么“直接”的过程 ... 更别说楼主还没说他写的是啥汇编
seakingii
2022-03-19 11:37:04 +08:00
选 C,打好基础后转学 RUST
hu8245
2022-03-19 11:39:06 +08:00
C/C++ 没有那么卷,面试的时候不用背太多被太多八股文,也不用说 HashMAP 的原理。
abutter
2022-03-19 11:46:43 +08:00
C 语言本身没有那么复杂,是因为应用的场合比较复杂。

底层软件开发要想做的那么回事,少不了对操作系统和编译链接的知识,如果做驱动还要了解硬件接口、网络协议等地等,debug 的话还需要了解许多的工具和知识,做优化就需要知道 CPU 、cache 和一些算法。

这是门槛高、积累周期长的原因。

无论什么语言,甚至什么职业都是有市场规律的。如果需要的人数一定,那么候选人越少,价值就越高。
nevin47
2022-03-19 11:47:03 +08:00
过来人的经验之谈:

做 C 的话,务必确认是写业务软件还是写系统软件

如果是业务软件的话,除非写高性能中间件,要不然基础的嵌入式开发没啥意思的

如果是做系统软件的话,尽量避开写驱动这种调参工程师的工作,能深入芯片、操作系统甚至新的体系结构是最好的

C 语言作为主力语言,做操作系统和体系结构研究,职业寿命和职业回报真的巨长无比,我最近两年和我司内部的一些系统专家打交道,有的人真的是几十年沉浸在这个领域深耕,完全没有任何职业寿命的危机感,基本上只有自己主动跳去新的领域,没有说被企业给优化掉的说法……
hello2090
2022-03-19 12:11:19 +08:00
@hu8245 一样的吧,我 10 年前面试 autodesk 问的就是 effective C++ 里的那些问题。只不过 Java 还需要知道框架,数据库,各种中间件。
yousabuk
2022-03-19 12:15:25 +08:00
选 C ,其乐无穷

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/841252

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX