1 、各个大中厂内核网络开发,纯 C 语言开发岗位也要做 leecode 题目吗?
2 、日常用的都是纯 C ,要是做 leecode ,没有 C++的 STL ,应该很难做吧?
3 、有没有面过的指导下?大中厂的纯 C 开发也做题吗?内核网络方向的

linux glib ( GNU C Library )不就是类似 stl 的东西吗,里面各种容器。

这个我没咋用过,用的都是内部一些老员工手搓的各种数据结构

啊? 做题用 python 不行吗

主要是平常就用纯 C 和 shell ,其他的语言没用过,而且 python 一些数据结构和接口也不大熟悉

#1 glib 和 glibc ( GNU C Library ) 可不是一回事啊

你说的是 gtk 的 glib 吧,这玩意没什么刷题网站支持

这种底层的更应该问算法了,要不都没什么可问的了,c 语言感觉就是数据结构、算法、通讯协议这些了

感觉开发纯 c 真的很痛苦 属于石器时代

领域无非:协议栈 内核 嵌入式 驱动

待遇咋样?

缺少一些数据结构和算法,从头开始撸有点麻烦

C 比较重数据结构与算法的东西,我觉得更要掌握好

刷题可以用 c++ stl ,亲测有效,哈哈哈哈

现在没有绝对的纯 C 岗位了,嵌入式都必须要会 C++了,手搓链表、通讯协议、串口协议、网络协议这些,太影响效率了,有这个时间,公司换个 Java 项目,都做完好几个了。

c/c++的岗位,第一考数据结构,
需要你现场手撕红黑树、哈希表,现场背各种协议栈(根据公司做的产品性质决定,如果是工控机,就是串口跟网络协议居多),
第二就是问你用过哪些库,会不会自己封装库,能不能自己写库之类的(根据公司做的产品深度绑定,都是公司内部库的制作跟打包发布),
第三就是问你的过往项目经验,比如在上一家公司做过哪些类型的项目,你用的什么技术栈,用了哪些库、哪些技术、克服了哪些问题、提升了多少效率、为什么要这样搞,
第四就是问你编程语言的熟悉程度,比如 C/C++、汇编、Python ,以及 Linux 、DOS 命令熟悉程度,shell 、bat 脚本也是必须的,部分还会要求你熟悉 Linux 内核驱动定制、构建、裁剪,这部分就偏技术了,基本就那么些,但是 C/C++/LINUX/PYTHON/SHELL 这几个是必问的,所以必须要熟悉。

C 不卷算法我也不知道还能卷啥?

leetcode 的的 C 环境只有标准库外加 uthash ,跟 STL 比起来的确简陋了一点

楼上手撕红黑树是认真的吗?

这么高的要求 待遇多少啊?

8K/月,不能再多了!

#17 纯 C 路过,只能说远不止这个数

招个 5000 的岗位必须匹配 5 万的能力,才有面试资格,这就是现状

C 岗位面如果有笔试环节会考一些语言、算法相关的东西; 面试考的主要还是操作系统相关(进程通信、用户空间、内核空间)、网络相关、 具体行业的一些...

4 万有吗?
直聘上一堆一万多 c/c++

bsp 的纯 c 岗位不少啊,linux kernel 哪怕后面用 rust 了也不可能上 c++的

完了,我司的同事都会 C ,不会 C++,咋整呢。

#21 你看看互联网大厂里面的 Linux kernel 开发和优化的工资。

#13 跟硬件打交道啊,操作系统之类的,稳定性和优化,BSP 。

当然有,嵌入式可不是只有 ARM / Linux 还有更裸的,甚至 romcode 最终要进芯片内部的。

kernel 级别的坑位太少 那还有芯片级别的 比 kernel 高级多了
如果学历低 死命钻 都进不去
直聘上不是一堆 c/c++一万多

不是你们这个方向,不过也做过纯 C 开发。当时面试的时候,除非是面什么都不懂的应届生,不然基本不考算法题,都是问业务问题

蚂蚁 华为啊 内核开发也才 2 万到 4 万 薪资比起技术难度其实是偏低的
随便看了就 vivo 的内核开发专家 6 万到 9 万 15 薪

结论:内核开发也是农民工

学个 python 看半天语法就可以刷了,刷几十道就熟练了。

主要是担心是不是大厂不管什么岗位只要开发都要做题,考虑到纯 C 没有轮子,很难做,除非那种翻转链表啥的,看了一下现在大概放心了,纯 C 这边对操作系统和网络关注关注较多,刷题好像不大关注

单片机不都是纯 C 吗??

当然了,可能有人认为单片机开发者属于电工,,不属于程序员,,这个也有一定道理。。

#29 啥开发都是农民工。

#4 对你而言,学习 Python 还不是分分钟的事情。

  1. C 语言基础/库:指针、多级指针、void 指针、函数指针、一/二维数组、指针数组、各种类型之前的强制转换、位操作等;手搓个双向循环链表、二分查找、哈希表之类的不过分吧(红黑树就算了吧,毕竟我也不会); str(n)cpy 、str(n)cat 、s(n)printf 等到底有没有结束符、最多写多少字节;什么是内存泄漏,什么是内存空洞,什么是 double-free ,怎么排查;各种数据类型在特定 CPU 架构下占多少字节,结构体内存对其。
  1. 网络基础:大致就是《 tcp-ip 详解》那本书,udp/tcp 异同、应用场景,网段划分,广播/单播/组播,七层/四层模型;常见报文( ip/tcp/udp/arp/icmp/dhcp/dns/http/https 等)不需要知道每个细节,但是大体作用是什么,报文里面包含了哪些信息,基本交互流程应该要知道。
  2. linux 基础:系统启动流程,大提有哪些阶段,每个阶段一般处理哪些事情;进程/线程区别;进程/线程间通信;网络通信;常用对称/非对称加密方案、密钥协商、摘要算法;内核/应用层通信;文件系统。
  3. linux 网络子系统,报文如何从驱动传递到网络子系统,子系统收到报文是立即处理还是放队列(如果放队列,又什么时候再处理),如何确定由哪个 cpu 处理,具体如何处理(如何确定接收还是转发,各种虚接口如何接收到报文,如何查找路由表,如何送到 socket ,bridge 如何处理报文,vlan 报文处理等); netfilter 框架( iptables/ipset/ebtables )、链接跟踪、nat 如何处理;性能如何调优;
  4. 调试手段:内核崩溃、应用层崩溃、死锁、栈溢出等,主要调试工具的使用,汇编语言。
  5. 其他 1:I2C 、SPI 、UART 、USB 等协议;其他编程语言;学习能力;模电/数电基础常识; wifi 基础知识等
  6. 其他 2:面试者在面试过程中的表现,比如表达是否流畅,思路是否清晰,逻辑是否通顺。

    华为阿里搞前后端开发的大头兵不也是这个价?

所以才说内核开发 技术难 工资低 也是农名工