2018年宇视科技智能交通-嵌入式软件开发线上笔试题

一,选择题

  1. 下列代码的输出结果是()
    int i = 2;
    void main()
    {
    int i = ++i;
    printf(“i = %d\n”, i);
    }
    A. 编译出错
    B. i = 2
    C. i = 3
    D. i 等于未知值

解析【D】当在调用变量时有多个同名变量起作用的时候,则使用作用域离自己最近的变量。因此在main函数中使用的是局部变量i,而c语言中未初始化的局部变量的初始值是随机分配的。

2.下列代码的输出结果是()
void main()
{
int a, x;
for(a=0, x = 0; (a <= 1) && !(x++) ; a++ )
{
a++;
x++;
}
printf(“a = %d, x = %d \n”, a, x);
A. a = 2 , x = 2
B. a = 2 , x = 3
C. a = 1 , x = 1
D. a = 1 , x = 2
解析【A】
第1步:初始化定义a=0,x=0。
第2步:a小于等于1,(x++)的非为1,符合循环条件。
(注意此时x++后,x=1,x++为0)
第3步:进入循环体,a++,a自增为1。x++,x自增为2
第4步:执行for(a=0,x=0;a<=1 &&!x++;a++)中的a++,a自增为2。
第5步:a现在是2,已经不符合小于等于1的条件了,所以“&&”后面的“!x++”不执行,x还是2,不执行循环体。

  1. 下列代码的输出结果是()
    #define SUM(a, b, c) ++a + (b + c++)
    void main()
    {
    int a = 2, b = 3, c =4;
    int d = SUM(a, b, c) / SUM(a, b, c);
    printf(“d = %d\n”, d);
    }
    A. d = 1
    B. d = 12
    C. d = 13
    D. d = 6
    解析【B】SUM(a, b, c) / SUM(a, b, c) 套入宏定义展开如下
    int d = ++a + (b + c++)/++a + (b + c++)
    注意运算符号的优先级和后++的特性后,计算为3+7/4+8 %d取整为12
    4.解析略
    2018年宇视科技智能交通-嵌入式软件开发线上笔试题
    5.解析略
    2018年宇视科技智能交通-嵌入式软件开发线上笔试题
    6.下列代码的输出结果是()
    void main()
    {
    char s1[] = “\01\02\03” ;
    char s2[10] = { ‘\0’ , ‘1’, ‘\0’ , ‘2’, ‘\0’, ‘3’};
    printf("%d, %d, %d, %d\n", sizeof(s1), strlen(s1), sizeof(s2), strlen(s2));
    }
    A. 10, 9, 10, 0
    B. 12, 12, 6, 10
    C. 9, 12, 6, 6
    D. 9, 9, 10, 6
    解析【A】

7.假设某台主机建立了如下路由表,那么目的地址为192. 168. 40. 124 的报文将从网卡()转发。
192. 168. 40. 0 255. 255. 255. 254 eth0
193. 168. 40. 5 255. 255. 255. 128 eth1
194. 168. 1. 1 255. 255. 0. 0 eth2
0. 0. 0. 0 0. 0. 0. 0 eth3
A. eth0
B. eth1
C. eth2
D. eth3
解析【】
8.以TCP/IP四层协议体系结构为例,下列说法错误的是()
A. TELNET, FTP, HTTP协议工作在应用层
B. TCP, UDP协议工作在运输层
C. ARP, RARP协议工作在网际层
D. ICMP协议工作在网络接口层
解析【】
2018年宇视科技智能交通-嵌入式软件开发线上笔试题
解析【】
2018年宇视科技智能交通-嵌入式软件开发线上笔试题
解析【D】简单的逻辑推演,逐个选项去验证
2018年宇视科技智能交通-嵌入式软件开发线上笔试题
解析【B】 考察基本的中序遍历的基本概念
2018年宇视科技智能交通-嵌入式软件开发线上笔试题
2018年宇视科技智能交通-嵌入式软件开发线上笔试题
2018年宇视科技智能交通-嵌入式软件开发线上笔试题
2018年宇视科技智能交通-嵌入式软件开发线上笔试题
二,问答题
2018年宇视科技智能交通-嵌入式软件开发线上笔试题
2018年宇视科技智能交通-嵌入式软件开发线上笔试题

2018年宇视科技智能交通-嵌入式软件开发线上笔试题
解析【****上有很多这个问题的详细博客,大家可以去查找,思想其实很简单,我这里就贴上网民ANT1903的博主的解析】
根据题意,我们只能喂一次小白鼠(一次可以喂多只)。首先可以先把这个问题的规模减小,如果是2瓶水,那1只小白鼠就够了,如果是4瓶水呢?假设是A、B、C、D四瓶水,我们可以这样做A+B混合喂给一个小白鼠1号,A+C喂给一个小白鼠2号,如果1号和2号都死了,那么就是A有毒,如果都没死,那是D有毒,如果只有1号死了,那么是B有毒,如果只有2号死了,那么是C有毒。嗯,有点意思了。给一只小白鼠喂水后最终的结果是生或者死两种状态,也就是说2只小白鼠最多可以表示的状态是4种(根据排列组合原理)。那么要表示255种状态需要多少只小白鼠?8只,因为2的8次方是256>255,剩下的问题是怎么组合这些瓶子来给小白鼠喂水了。
首先,把255瓶水从0到255编号,然后用8位二进制来表示这些瓶子,8只小白鼠从1-8编号

0 0 0 0 0 0 0 0 |0号水瓶
0 0 0 0 0 0 0 1 |1号水瓶
0 0 0 0 0 0 1 0 |2号水瓶
0 0 0 0 0 0 1 1 |3号水瓶
0 0 0 0 0 1 0 0 |4号水瓶
0 0 0 0 0 1 0 1 | 5号水瓶
0 0 0 0 0 1 1 0 |6号水瓶
……
1 1 1 1 1 1 1 1 |255号水瓶
1 2 3 4 5 6 7 8 |小白鼠
然后把1-8号小白鼠按上面的8个二进制位对好,每只小白鼠喂水规则是:如果某个瓶子的对应小白鼠编号的2进制位为1,则喂给该小白鼠,如果对应的2进制为0则不喂,譬如8号小白鼠,则会喝到1号水瓶,3号水瓶,5号水瓶,……和255号水瓶的混合水。
死了的小白鼠标记1,没死的标记0。如果只有8号小白鼠死了,那么就是0 0 0 0 0 0 0 0 0 1,结果是1号水瓶有毒。如果是6,7号小白鼠死了那么就是0 0 0 0 0 0 0 1 1 0,结果是6号水瓶有毒,如果都没死,那就是没有喂过的0号水瓶有毒了。

拓展一下:在网上搜索了一下发现腾讯也考过一样的题目,不过是2的10次方,且时间固定,只有一次尝试机会。而宇视这题时间有多余1小时,也可以尝试依据小白鼠喂药的时间不同来判断毒药。
2018年宇视科技智能交通-嵌入式软件开发线上笔试题
解析【第一问:参见https://blog.****.net/s04103037/article/details/11671063】
第二问:参见https://blog.****.net/zhusongziye/article/details/83690588
2018年宇视科技智能交通-嵌入式软件开发线上笔试题
2018年宇视科技智能交通-嵌入式软件开发线上笔试题
2018年宇视科技智能交通-嵌入式软件开发线上笔试题
本人是刚入门的小白,有些题目还没有能力去解析,只想着第一时间把题目分享给大家,对看到帖子的朋友的面试有帮助于万一,就十分高兴。另外,看到帖子的朋友也可顺手把自己的答案贴上来共同交流进步。