注:
- 本题目仅作
西邮Linux兴趣小组
2021 纳新面试题的有限参考。 - 为节省版面本试题的程序源码中省略了
#include
指令。 - 本试题中的程序源码仅用于考察C语言基础,不应当作为C语言代码风格的范例。
- 题目难度与序号无关。
- 所有题目均假设编译并运行
x86_64 GNU/Linux
环境。
Copyright © 2021 西邮Linux兴趣小组, All Rights Reserved.
本试题使用采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
sizeof()
和 strlen()
有什么异同之处?
他们对于不同参数的结果有什么不同?请试举例子说明。
a
为 sizeof(s)
,即字符数组 ['I', ' ', 'l', 'o', 'v', 'e', ' ', 'L', 'i', 'n', 'u', 'x', '\0', '\0', '\0']
的大小;b
为 strlen(s)
,即字符数组 "I love Linux"
的长度。
另外,如果声明 char s[20] = "I love Linux\0\0\0";
,则 a = sizeof(s);
的值变为20
。
test1
和 test2
都含有:1个 short
、1个 int
、1个 double
,那么 sizeof(t1)
和 sizeof(t2)
是否相等呢?这是为什么呢?
解读:
想必在高数老师的教导下大家十分熟悉函数这个概念。那么你了解计算机程序设计中的函数吗?请编写一个 func
函数,用来输出二维数组 arr
中每个元素的值。
补全后:
- 请结合下面的程序,简要谈谈
传值
和 传址
的区别。 - 简要谈谈你对C语言中变量的生命周期的认识。
传值
后,修改形参的值,实参的值不会改变。传址
后,修改形参的值,实参的值会改变。
解读:
请说明下面的程序是如何完成求和的?
通过递归完成求和,每次递归返回的为其先前的数之和。相当于 栈(Stack)
,只有其前的函数的表达式返回值(出栈),新的栈顶函数表达式才能返回值。
特别地,当栈顶元素为 sum(0)
时,会返回 0
以实现从 0
到 n
的求和。
下面有 a
、b
、c
三个变量和4个相似的函数。
- 你能说出使用这三个变量的值或地址作为参数分别调用这5个函数,在语法上是否正确吗?
- 请找出下面的代码中的错误。
const int
和 int const
是否有区别?如果有区别,请谈谈他们的区别。const int *
和 int const *
是否有区别?如果有区别,请谈谈他们的区别。
请编写 convert
函数用来将作为参数的字符串中的大写字母转换为小写字母,将小写字母转换为大写字母。返回转换完成得到的新字符串。
- 请判断下面的三种
Swap
的正误,分别分析他们的优缺点。 - 你知道这里的
do {...} while(0)
的作用吗? - 你还有其他的方式实现
Swap
功能吗?
Swap1()
和 Swap2()
通过宏定义实现两数交换,do {...} while(0)
可以用代码块花括号 {...}
替代,目的是防止宏替换后语句不在同一代码块内。Swap3()
错误,交换形参的值并不能改变实参。Swap4()
利用指针来实现。
你知道 argc
和 argv
的含义吗?请解释下面的程序。你能在不使用 argc
的前提下,完成对 argv
的遍历吗?
argc
指 argument count,即参数计数器,argv
指 argument vector,即参数数组。程序在运行时传入的第一个参数就是程序的启动路径/文件名,因此 argc
最小为 1
。在循环中,整型 argc
会自增到溢出,然后打印 argv[0]
即程序路径。
不使用 argc
遍历 argv
的方法:
这段代码有是否存在错误?谈一谈静态变量与其他变量的异同。
*func3()
返回的是局部变量,在外部赋值时此局部变量已被抛弃,成为了野指针。
- 编辑:创建和修改C程序的源代码
- 编译:将源代码转换为机器语言
- 链接:链接器将源代码由编译器产生的各种模块组合起来,再从C语言提供的程序库中添加必要的代码模块,将它们组成一个可执行的文件
- 执行:运行程序
你了解程序中的栈和堆吗?它们在使用上有什么区别呢?请简要说明。
一个程序在不使用任何头文件的情况下,如何使用另一个文件中的函数。
- 你知道如何在
GNU/Linux
下如何使用命令行创建文件与文件夹吗? - 你知道
GNU/Linux
下的命令 ls
的每一列的含义吗? - 你知道
GNU/Linux
下文件的访问时间、修改时间、创建时间如何查看吗?并简单说说他们的区别。
恭喜你做完了整套面试题,快来参加西邮 Linux 兴趣小组的面试吧!
西邮 Linux 兴趣小组面试时间:
2021年10月25日至2021年10月31日晚8点。
听说面试来的早一点更能获得学长学姐的好感哦。
我们在 FZ103 等你!
评论区
评论加载中...