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 语言底层开发如何?
第一份工作选会的,还是选不会的?

11949 次点击
所在节点    程序员
149 条回复
hello2090
2022-03-19 12:16:03 +08:00
@hu8245 而且 hashmap 是基本的数据结构吧,既然 C/C++的目标是深耕底层的专家,算法导论肯定会看过,hashmap 书里就有哇😁
xylophone21
2022-03-19 12:22:42 +08:00
C 的门槛确实高,奈何做的方向几乎不怎么赚钱,而且需求少,所有收入也一般
James369
2022-03-19 12:30:52 +08:00
如果说语言是一座雄伟的宫殿,那么 C/C++就是宫殿的根基。
如果说语言是一顶皇冠,那么 C/C++就是皇冠上的明珠。
如果说语言是满天繁心,那么 C/C++是那一颗闪亮的恒星。
如果说语言只是工具,那么 C/C++就是制造工具的工具。
tousfun
2022-03-19 18:35:21 +08:00
楼主是去的字节吗?
tousfun
2022-03-19 18:40:49 +08:00
能不能➕vx 交流下,我目前只会 go 也想做数据库开发的工作
bugfan
2022-03-19 20:52:57 +08:00
@hello2090 😄老哥 666 ,每次说的都是精髓呀
bugfan
2022-03-19 20:57:38 +08:00
@hello2090 😄 突然想起来,上大学时候,编程老师说,建议你们在纸上写程序,,,
mrzhu
2022-03-19 21:24:45 +08:00
@nevin47 请问一下“操作系统和体系结构研究”具体是什么工作和方向?
mmdsun
2022-03-19 22:57:55 +08:00
如果不想卷的话,选 C 。现在 Java 是卷王语言
nevin47
2022-03-19 23:25:34 +08:00
@mrzhu #128 举几个例子

CXL 、CCIX 、Intel 的 Optane 系列,这些都是操作系统和体系研究领域的成果

然后类似 PSI 、OOMD ,都是 Facebook (现在叫 Meta )开源出来的内部项目,还有现在容器的鼻祖 cgroup 和基座 cgroup v2 ,都是 Google 开源的成果。这块基本是系统的软件部分

这些都是 C 语言垒出来的教堂
ch2
2022-03-19 23:53:33 +08:00
@Kasumi20 #52 一个例子:机器码不支持 32 位立即数的,汇编就能支持。汇编也有语法糖的,只是一行汇编翻译成了另外几个指令的组合,编译原理编译到汇编就够了,没必要直接到机器码
ch2
2022-03-20 00:12:35 +08:00
@nevin47 #130 真正使得 Control Group 有实际应用场景,还是得 Go 写的 Docker 跟 K8s 出马。C 语音写的沧海遗珠多了去了,要是没有能用得上的伯乐,就只是个普通的砖头。教堂再宏伟,跟你能成为哪块砖哪块瓦是两回事。
fatigue
2022-03-20 00:20:08 +08:00
赚不赚钱是和业务相关的,和语言无关啊,铁汁们,看你们争论看的我脑瓜子疼
mikewang
2022-03-20 00:28:47 +08:00
@919615766 我不在字节,倒是有几个认识的同学在字节实习。交流的话可以 base64 留下您的 vx:)
tousfun
2022-03-20 04:24:35 +08:00
@mikewang UGh1b2h1YQ== 非常感谢
levelworm
2022-03-20 08:40:04 +08:00
@nevin47 (118 楼)

多谢分享。这种“能深入芯片、操作系统甚至新的体系结构”,我估计指的是类似给新的体系结构移植基础软件这种?
m0yBPjyX3475syS4
2022-03-20 09:49:46 +08:00
我全都要.jpg
lechain
2022-03-20 10:43:17 +08:00
C 是最简单也是最复杂的高级语言:)
作为一个 8+年的 C 语言选手,我个人建议是看 OP 你自己的想法走,
选 C 的工作,可以学到很多底层基础的东西,例如操作系统原理,计算机组成结构等,这个方向可以让你在编程方面更好的掌握细节和原理。
反之如果选 java 的话,可以学的东西就是软件工程方向了,如果构建稳定的大型应用程序系统,如何保证高可用高并发等等,这个方向可以让你更好的掌握上层设计以及大型软件的设计架构,和 C 不是同一个方向的。

至于楼上的各种 C 门槛高,C 难之类的论调,可能是因为很多人没法真正沉下心去学习吧,讲道理 Java 在某种方面来说门槛也很高,就单拿一个 JVM 来说,有多少人能说自己精通的。

只能说两个语言各有优劣,但没有本质的高低之分,不能简单的捧一踩一,那样也太反智了。
就目前这个世界上的编程来看,Java 仍然处理上层大型应用软件系统的统治地位,而 C 也是一样的情况,同样处于底层基础开发的统治地位
juzipeek
2022-03-20 11:04:53 +08:00
别选 C, 岗位太少
railgun
2022-03-20 11:25:37 +08:00
@fkue587 我就是这个意思→_→

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

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

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

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

© 2021 V2EX