西邮Linux2020年面试题(上)

简介: 西邮Linux2020年面试题

西邮Linux2020年面试题

1运行下面代码,输出结果是什么?解释其原因。

2执行下面代码段,谈谈你对宏的理解。

3分析下面程序的输出结果

4在程序中执行此函数,其输出结果是什么,在同一程序中执行多次该函数,输出结果是否相同?

5分析以下程序,推测并验证其作用。

6下面程序的执行结果是什么,请解释说明

7 以下程序段运行的结果是什么,你知道怎么判断两个浮点数是否相同?

8 运行下列代码,解释运行结果,谈谈自己的理解。

9分析下列程序的输出,解释其原因

10执行下面程序段,其输出结果是什么,解释其原因。

11 下面程序段的输出结果是什么,若取消第三行的const注释,数组a还能被修改吗?取消6,8行的注释,程序还能正常运行吗?解释其原因

12一个c源文件到一个可执行文件的过程中经历了那些步骤?

1运行下面代码,输出结果是什么?解释其原因。

int i;
int main(int argc,char *argv[]){
    i--;
    if(i>sizeof(i)){
        printf(">\n");
    }else{
        printf("<\n");
    }
    return 0;
}
>
1111 1111 1111 1111 1111 1111 1111 1111
而sizeof的结果为4,二进制表示为
0000 0000 0000 0000 0000 0000 0000 0100
显然在比较中将i当作了无符号整型来与sizeof(i)比较的,所以结果>

2执行下面代码段,谈谈你对宏的理解。

#define A 2 + 2
#define B 3 + 3
#define C A *B
int main(int argc, char *argv[])
{
    printf("%d\n", C);
    return 0;
}
宏进行的是简单的文本替换,题中A*B的替换结果其实是2+2*3+3

3分析下面程序的输出结果

int main(int argc, char *argv[])
{
    char str[] = "Welcome to XiyouLinuxGroup";
    printf("%zu %zu\n", strlen(str), sizeof(str));
    return 0;
}
%zu输出size_t型,size_t在库中定义为unsigned int 。
strlen计算的是字符串的元素个数(不包括结尾的"\0")
而sizeof计算的是其占内存的大小,结尾"\0"也占一字节,所以结果为27。

4在程序中执行此函数,其输出结果是什么,在同一程序中执行多次该函数,输出结果是否相同?

void fun()
{
    int x = 0;
    static int num = 0;
    for (int i = 0; i < 5; i++)
    {
        x++;
        num++;
    }
    printf("x = %d num = %d\n", x, num);
}
x = 5 num = 5
x = 5 num = 10
x输出结果相同,num的不同。
使用static修饰符定义静态局部变量,它的生命周期是整个应用程序的运行时间,它只会被初始化一次。每次调用fun()都会在num原有的基础上再加5,而x每次都是从0加到5

5分析以下程序,推测并验证其作用。

int main(int argc, char *argv[])
{
    int number;
    unsigned mask;
    mask = 1u << 31;
    scanf("%d", &number);
    while (mask)
    {
        printf("%d", (number & mask) ? 1 : 0);
        mask >>= 1;
    }
    return 0;
}
如char a=1,a的二进制为0000 0001,执行a<<3后a的值为8,其二进制数为0000 1000,低位补0。
&是且运算,对应二进制位都为1时该位的结果为1,否则为0。
如a=3,b=7,a&b=2(0011 & 1110 = 0010)
同理mask>>=1是向右移动一位,高位补0。
"?:"是双目运算符,?前面的返回值不为零则返回?与:中间的值,否则返回:后面的值

6下面程序的执行结果是什么,请解释说明

int main(int argc, char *argv[])
{
    char *str = "Xiyou Linux Group";
    printf("%c\n", *str + 1);
    return 0;
}
X的地址为该字符串的首地址,则*str='X',而'X'+1='Y'(ASCII码的加减)
相关文章
|
7月前
|
存储 运维 关系型数据库
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
|
7月前
|
运维 Linux Docker
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
|
4月前
|
Linux 数据安全/隐私保护 Perl
解锁Linux高手秘籍:文件操作+命令解析大揭秘,面试场上让你光芒万丈,技术实力惊艳四座!
【8月更文挑战第5天】Linux作为服务器与嵌入式系统的基石,其文件管理和命令行操作是技术人员必备技能。本文从文件操作和基础命令两大方面,深入浅出地解析Linux核心要义,助你在面试中脱颖而出。首先探索文件系统的树状结构及操作,包括使用`ls -la`浏览文件详情、`touch`创建文件、`rm -r`慎删目录、`cp`与`mv`复制移动文件、以及利用`find`搜索文件。接着掌握命令行技巧,如用`cat`、`more`和`less`查看文件内容;借助`grep`、`sed`与`awk`处理文本;运用`ps`、`top`和`kill`管理进程;并通过`chmod`和`chown`管理文件权限。
84 8
|
4月前
|
监控 Linux 数据安全/隐私保护
Linux大神养成记:掌握这些逆天命令与快捷方式,面试秒变MVP,让你的技术实力燃爆全场!
【8月更文挑战第5天】Linux作为开源领域的核心,熟悉其基本命令对系统管理员和技术人员至关重要。本文精选了面试中常考的Linux命令,覆盖文件管理、文本处理、进程监控及权限调整等关键领域,并介绍了提高效率的快捷方式。通过掌握如`ls -l`、`grep &quot;error&quot;`、`top`、`chmod 755`等实用命令,以及Tab自动补全、历史命令浏览等功能,不仅能显著提升日常工作效能,还能在求职面试时展现出扎实的技术功底。
70 4
|
6月前
|
存储 网络协议 编译器
【干货总结】Linux C/C++面试知识点
Linux C/C++基础与进阶知识点,不仅用于面试,平时开发也用得上!
619 16
|
5月前
|
Linux 编译器 Shell
拼多多面试 Linux下一个应用程序开始执行到main被调用之间经历了什么?
在Linux中,程序启动到`main`调用涉及加载器、内核、动态链接器和C运行时。`execve`系统调用加载ELF文件,内核创建进程,加载段,设置栈和调用动态链接器。动态链接器解析符号,重定位,执行初始化。C运行时初始化堆栈,调用`main`。从`_start`到`main`的流程包括环境设置和函数调用。
76 0
|
7月前
|
运维 Linux 程序员
最全树莓派4B安装64位Linux(不用显示器键盘鼠标),Linux运维面试送分题
最全树莓派4B安装64位Linux(不用显示器键盘鼠标),Linux运维面试送分题
最全树莓派4B安装64位Linux(不用显示器键盘鼠标),Linux运维面试送分题
|
6月前
|
消息中间件 Unix Linux
[高频]Linux中常见的命令及常见面试题
[高频]Linux中常见的命令及常见面试题
|
5月前
|
存储 Java Linux
Java面试之Linux和docker
Java面试之Linux和docker
49 0
|
7月前
|
运维 Linux Docker
ChatGLM3在Docker环境部署(1),Linux运维电话面试技巧
ChatGLM3在Docker环境部署(1),Linux运维电话面试技巧
下一篇
DataWorks