西邮Linux2020年面试题(下)

简介: 西邮Linux2020年面试题

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

int main(int argc, char *argv[])
{
    double a = 3.14;
    float b = a;
    if ((float)a == b)
    {
        printf("Xiyou");
    }
    if (a != b)
    {
        printf("LinuxGroup\n");
    }
    return 0;
}
XiyouLinuxGroup
在转换成浮点数时精度有损失,float只能保证最少6位数字有效,而double只能保证最少15位数字有效。
所以a!=b。当a强制转换为float时,a==b。

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

int main(int argc, char *argv[])
{
    int a[6] = {0x6f796958, 0x694c2075, 0x2078756e, 0x756f7247, 0x30322070,
                0};
    printf("%d\n", printf("%s", (char *)a));
    return 0;
}
家用计算机一般都为小端机,即低位在前。例如题中:0x6f796958  在计算机中“58”在前,“69”在后。
先输出十六进制数“58”所对应的字符,后输出十六进制数“69”所对应的字符。

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

int main(int argc, char *argv[])
{
    int a[2][3] = {{5, 7}, {5, 2}};
    int b[2][3] = {5, 7, 5, 2};
    int c[2][2] = {{5, 7}, {5, 2}};
    int d[2][2] = {5, 7, 5};
    printf("%d %d\n", a[1][1], b[1][1]);
    printf("%d %d\n", c[1][1], d[1][1]);
    return 0;
}
2  0
2  0

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

int main(int argc, char *argv[])
{
    int a = 1;
    printf("%d\n", *(char *)&a);
}
1
*(char *)&a是将a的指针改为char类型指针,再取值运算后a实际的值并未变化。

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

int main(int argc, char *argv[])
{
    /*const*/ char a[] = "XiyouLinux\0";
    char *b = "XiyouLinux\0";
    a[5] = '\0';
    // b[5] = '\0';
    printf("%s\n", a);
    // printf("%s\n",b);
    return 0;
}
1)不能被修改
2)不能正常运行
const修饰的数组,其中任何元素都不能被改变。
字符指针是常量字符串,不能被修改。

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

1、预处理
在预处理阶段,编译器主要作加载头文件、宏替换、条件编译的作用。一般处理带“#”的语句。
2、编译
在编译过程中,编译器主要作语法检查和词法分析。我们可以通过使用 -S 选项来进行查看,
该选项预处理之后的结果翻译成汇编代码。
3、汇编
在汇编过程中,编译器把汇编代码转化为机器代码。
4、链接
链接就是将目标文件、启动代码、库文件链接成可执行文件的过程,这个文件可被加载或拷贝到存储器执行。
相关文章
|
6月前
|
存储 运维 关系型数据库
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
|
6月前
|
运维 Linux Docker
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
|
3月前
|
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`管理文件权限。
76 8
|
3月前
|
监控 Linux 数据安全/隐私保护
Linux大神养成记:掌握这些逆天命令与快捷方式,面试秒变MVP,让你的技术实力燃爆全场!
【8月更文挑战第5天】Linux作为开源领域的核心,熟悉其基本命令对系统管理员和技术人员至关重要。本文精选了面试中常考的Linux命令,覆盖文件管理、文本处理、进程监控及权限调整等关键领域,并介绍了提高效率的快捷方式。通过掌握如`ls -l`、`grep "error"`、`top`、`chmod 755`等实用命令,以及Tab自动补全、历史命令浏览等功能,不仅能显著提升日常工作效能,还能在求职面试时展现出扎实的技术功底。
64 4
|
5月前
|
存储 网络协议 编译器
【干货总结】Linux C/C++面试知识点
Linux C/C++基础与进阶知识点,不仅用于面试,平时开发也用得上!
570 14
|
4月前
|
Linux 编译器 Shell
拼多多面试 Linux下一个应用程序开始执行到main被调用之间经历了什么?
在Linux中,程序启动到`main`调用涉及加载器、内核、动态链接器和C运行时。`execve`系统调用加载ELF文件,内核创建进程,加载段,设置栈和调用动态链接器。动态链接器解析符号,重定位,执行初始化。C运行时初始化堆栈,调用`main`。从`_start`到`main`的流程包括环境设置和函数调用。
69 0
|
6月前
|
运维 Linux 程序员
最全树莓派4B安装64位Linux(不用显示器键盘鼠标),Linux运维面试送分题
最全树莓派4B安装64位Linux(不用显示器键盘鼠标),Linux运维面试送分题
最全树莓派4B安装64位Linux(不用显示器键盘鼠标),Linux运维面试送分题
|
5月前
|
消息中间件 Unix Linux
[高频]Linux中常见的命令及常见面试题
[高频]Linux中常见的命令及常见面试题
|
4月前
|
存储 Java Linux
Java面试之Linux和docker
Java面试之Linux和docker
43 0
|
6月前
|
运维 Linux Docker
ChatGLM3在Docker环境部署(1),Linux运维电话面试技巧
ChatGLM3在Docker环境部署(1),Linux运维电话面试技巧