![]() |
1
zjsxwc 40 天前
linux glib ( GNU C Library )不就是类似 stl 的东西吗,里面各种容器。
|
![]() |
2
ShioWSX OP 这个我没咋用过,用的都是内部一些老员工手搓的各种数据结构
|
3
kingcanfish 40 天前
啊? 做题用 python 不行吗
|
![]() |
4
ShioWSX OP @kingcanfish 主要是平常就用纯 C 和 shell ,其他的语言没用过,而且 python 一些数据结构和接口也不大熟悉
|
7
nanrenlei 40 天前
这种底层的更应该问算法了,要不都没什么可问的了,c 语言感觉就是数据结构、算法、通讯协议这些了
|
8
zhouyin 40 天前
感觉开发纯 c 真的很痛苦 属于石器时代
领域无非:协议栈 内核 嵌入式 驱动 待遇咋样? |
9
iOCZS 40 天前
缺少一些数据结构和算法,从头开始撸有点麻烦
|
![]() |
10
SageXiong 40 天前
C 比较重数据结构与算法的东西,我觉得更要掌握好
|
11
csfreshman 40 天前
刷题可以用 c++ stl ,亲测有效,哈哈哈哈
|
12
sir283 40 天前
现在没有绝对的纯 C 岗位了,嵌入式都必须要会 C++了,手搓链表、通讯协议、串口协议、网络协议这些,太影响效率了,有这个时间,公司换个 Java 项目,都做完好几个了。
c/c++的岗位,第一考数据结构, 需要你现场手撕红黑树、哈希表,现场背各种协议栈(根据公司做的产品性质决定,如果是工控机,就是串口跟网络协议居多), 第二就是问你用过哪些库,会不会自己封装库,能不能自己写库之类的(根据公司做的产品深度绑定,都是公司内部库的制作跟打包发布), 第三就是问你的过往项目经验,比如在上一家公司做过哪些类型的项目,你用的什么技术栈,用了哪些库、哪些技术、克服了哪些问题、提升了多少效率、为什么要这样搞, 第四就是问你编程语言的熟悉程度,比如 C/C++、汇编、Python ,以及 Linux 、DOS 命令熟悉程度,shell 、bat 脚本也是必须的,部分还会要求你熟悉 Linux 内核驱动定制、构建、裁剪,这部分就偏技术了,基本就那么些,但是 C/C++/LINUX/PYTHON/SHELL 这几个是必问的,所以必须要熟悉。 |
13
xy90321 40 天前 via iPhone
C 不卷算法我也不知道还能卷啥?
|
14
neoblackcap 40 天前
leetcode 的的 C 环境只有标准库外加 uthash ,跟 STL 比起来的确简陋了一点
|
![]() |
15
AFOX 40 天前
楼上手撕红黑树是认真的吗?
|
![]() |
17
wangpugod2003 40 天前
@zhouyin 8K/月,不能再多了!
|
![]() |
18
HunterX 40 天前
@wangpugod2003 #17 纯 C 路过,只能说远不止这个数
|
19
wnpllrzodiac 40 天前 via Android
招个 5000 的岗位必须匹配 5 万的能力,才有面试资格,这就是现状
|
20
linyinma 40 天前
C 岗位面如果有笔试环节会考一些语言、算法相关的东西; 面试考的主要还是操作系统相关(进程通信、用户空间、内核空间)、网络相关、 具体行业的一些...
|
![]() |
28
InkStone 39 天前
不是你们这个方向,不过也做过纯 C 开发。当时面试的时候,除非是面什么都不懂的应届生,不然基本不考算法题,都是问业务问题
|
29
zhouyin 39 天前
|
![]() |
30
di94sh 39 天前
学个 python 看半天语法就可以刷了,刷几十道就熟练了。
|
![]() |
31
ShioWSX OP @InkStone 主要是担心是不是大厂不管什么岗位只要开发都要做题,考虑到纯 C 没有轮子,很难做,除非那种翻转链表啥的,看了一下现在大概放心了,纯 C 这边对操作系统和网络关注关注较多,刷题好像不大关注
|
![]() |
32
XIVN1987 39 天前
单片机不都是纯 C 吗??
当然了,可能有人认为单片机开发者属于电工,,不属于程序员,,这个也有一定道理。。 |
35
bfdh 39 天前
1. C 语言基础/库:指针、多级指针、void 指针、函数指针、一/二维数组、指针数组、各种类型之前的强制转换、位操作等;手搓个双向循环链表、二分查找、哈希表之类的不过分吧(红黑树就算了吧,毕竟我也不会); str(n)cpy 、str(n)cat 、s(n)printf 等到底有没有结束符、最多写多少字节;什么是内存泄漏,什么是内存空洞,什么是 double-free ,怎么排查;各种数据类型在特定 CPU 架构下占多少字节,结构体内存对其。
2. 网络基础:大致就是《 tcp-ip 详解》那本书,udp/tcp 异同、应用场景,网段划分,广播/单播/组播,七层/四层模型;常见报文( ip/tcp/udp/arp/icmp/dhcp/dns/http/https 等)不需要知道每个细节,但是大体作用是什么,报文里面包含了哪些信息,基本交互流程应该要知道。 3. linux 基础:系统启动流程,大提有哪些阶段,每个阶段一般处理哪些事情;进程/线程区别;进程/线程间通信;网络通信;常用对称/非对称加密方案、密钥协商、摘要算法;内核/应用层通信;文件系统。 4. linux 网络子系统,报文如何从驱动传递到网络子系统,子系统收到报文是立即处理还是放队列(如果放队列,又什么时候再处理),如何确定由哪个 cpu 处理,具体如何处理(如何确定接收还是转发,各种虚接口如何接收到报文,如何查找路由表,如何送到 socket ,bridge 如何处理报文,vlan 报文处理等); netfilter 框架( iptables/ipset/ebtables )、链接跟踪、nat 如何处理;性能如何调优; 5. 调试手段:内核崩溃、应用层崩溃、死锁、栈溢出等,主要调试工具的使用,汇编语言。 6. 其他 1:I2C 、SPI 、UART 、USB 等协议;其他编程语言;学习能力;模电/数电基础常识; wifi 基础知识等 7. 其他 2:面试者在面试过程中的表现,比如表达是否流畅,思路是否清晰,逻辑是否通顺。 |
![]() |
42
tomychen 39 天前
所以纯 C 的程序员,真的蛮不好找的
特别是熟悉 libc 还有网络及操作系统的(例如系统调用) 35 楼列的这些,如果都能答上来,大部分我感觉都可以直接入职了 |