这些 C 语言的题,各位不用电脑纯手写的话,能做到什么程度呢?

10 天前
 AFOX

这些 C 语言的题,各位不用电脑纯手写的话,能做到什么程度呢?

今天下午笔试被挂了,题目如下:

1. 下面的输出是什么,请说明原因(钓鱼执法.....很容易就做错了)

int main() {
     int a[5] = {1, 2, 3, 4, 5};
     int *p = &a + 1;
     printf("%d, %d", *(a+1), *(p - 1));

     return 0;
}


2. 请用一个 C 语言表达式判断某个数是否为 2 的 N 次幂 (没搞懂如何用一个表达式计算,这道题不谷歌真的做不出吧.....)

3. 计算某个数的质因数(例如:12 = 2 * 2 * 3 ) (这里想太多了,空在那做后面的去了)

4. 写出单链表反转的过程(写太多遍了,直接秒)

5. 写一个函数判断回文数(没写出最优解,我转换成字符串用双指针判断了)

6. 删除字符串中的数字并压缩字符串的空间,例如: 输入为 "abc123de45fg" ,输出 "abcdefg" (这里也是双指针做的,不需要开辟新的空间,判断字符串结尾是'\0')

 下面的 7 和 8 选一道做
7. 微积分题,计算 y=x 和 y=x^2 围成的面积(想了一下怎么求积分)
8. 在[0, 2Π]的区间内,计算 y=sinx 与 x 轴围成的面积

9. 矩阵计算,这里具体数字记不清了,随便填一下不影响
A = [[1,2,3], [4,5,6], [7,8,9]]
B = [[3,2,1], [6,5,4], [9,8,7]]

a. 计算 AB 的值 (还记得怎么算)
b. 计算 A 的逆矩阵(不记得相关概念了,没做对)

10. 写出 TCP/IP 的系统调用函数及用法(之前的工作基本不用 tcp/ip ,这里写不出)
11. libudev 的设备通信过程(这个也不了解)
12. 讲一下 linux 的进程间通信(这个就是八股文那几个了)
13. 讲一下 linux 系统从开机到出现登陆界面的详细过程(讲了下 cpu 会从某个地址加载 bootloader ,然后 bootloader 会初始化哪些环境,然后把控制权交给内核了,最后内核从 init 函数开始启动,这里我了解的其实也不是很详细)
14. 还有一道题和前面几道类似的题,记不起来了

15.一道英语翻译题,应该是 I2C 总线手册上的(正常阅读没啥问题)

我看了下我大概写出来了一半的题,被 hr 狠狠的羞辱说题目很基础,认为我大学没认真上 qwq...

然后面的岗位是嵌入式工程师,没有要求必须要相关经验,之前做过三年机器人相关的开发。

我这水平是不是菜到家了?

4181 次点击
所在节点    程序员
52 条回复
agagega
10 天前
第一题有问题。
第二题,2 的 N 次幂意味着二进制表示里只有一个 1 ,这种数减 1 就是后面的位全为 1 ,所以是 n!=0 且 n&(n-1)==0 (假设 n 是 unsigned )
longlonglanguage
10 天前
人形编译器
mooyo
9 天前
哈哈哈哈想起大学的考试就是这样手写代码,太特么抽象了
Greendays
9 天前
别说手写了,让我用记事本写我也写不出什么东西。
kneo
9 天前
面试是需要刷题的。把不会的都刷明白了。面试一次就是成长一次,别沮丧。
nenseso
9 天前
第 2 题考虑 N 是负数的情况吗,如果考虑的话还挺复杂的
AFOX
9 天前
@nenseso 没说考虑不考虑
panda1001
8 天前
第一题主要意识到 c 语言变量的 type 是啥,对应 type 指针的+1-1 的步长是多少 byte 。gdb 打印可以看得到,确实是 c 工程的基本功
题目看起来越界算是 hack 写法,觉得不规范不影响考察的重点,可以换成多维数组或者嵌套结构体,多级指针一样可以考察

第二题搜搜 github 的 awesome bit
dode
8 天前
第二题一直循环除 2 ,%2 呢
yanqiyu
8 天前
1. UB ,&a 加减直接就 UB 到家了
2. x ^ (1 << N) == 0 (如果是给定的 N ,否则 x ^(x-1) == 0 ),但是我不会写这种代码,读代码自己也坐牢
3. 2, 3~sqrt(N)的奇数逐个除法?不过遇到质因数 q 就马上迭代 p/q, 从已经找到的质因数开始往下走,不知道有没有高效的算法
4~5: 同
7~8: 微积分我能不能直接写原函数进去,还是必须写数值方法,数值方法要老命了
9. 基础代数,这我熟()
10,11:我写这种东西离不开文档,记不住
12,13:八股文
yanqiyu
8 天前
草,才写完就发现第二个写错了是
x ^ (1 << N) == 0 (如果是给定的 N ,否则 x & (x-1) == 0 )
ccpp132
7 天前
第二题其实搞嵌入式感觉挺常用的,位运算在别的领域看起来是 trick ,但底层一点还蛮常用的

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

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

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

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

© 2021 V2EX