一、填空题(共17题,每题3分,总共51分)

1.设有int a = 5, *b, **c,执行语句c = &b, b = &a后,**c的值为________

答:5

2.以下程序是否有误,如果无误,请写出执行的次数________

x = -1;
do
{x = x * x;
}while(!x);

答:1

3.设有如下定义:

struct sk
{int a;float b;
}data;
int *p;

若要使p指向data中的a域,正确的赋值语句是________

答:p = &data.a;

4.用变量a给出下面的定义,一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型________

答:int (*a)[10](int)

5.若有语句:int array[2][3][4],则数组array的元素个数为________

答:24

6.已知int a[5], *p = a,则(p+1)等价于________

答:a[1]的地址

7.一个C源程序必须包含一个________函数

答:main

8.Intel X86 PC上以下程序运行的输出值是________

int main(int argc, char *argv[])
{union{struct{unsigned short s1:3;unsigned short s2:3;unsigned short s3:3;}x;char c;}v;v.c = 103;cout<<v.x.s1<<endl;return 0;
}
答:7
103转换为8位的二进制为01100111,存储方式如下:
01|100|111
__|___|___
s3|s2 |s1

9.请用文字说明p是何种类型变量:int (*p)[n];________

答:p是指针一个二维int型数组的指针。注意,p不是函数指针数组,如果是函数指针数组,应该写成int (*p)[n]()

10.编程实现两个数互换

int main(int argc, char *argv[])
{int temp, x, y;cin>>x>>y;temp = x;________________cout<<x<<','<<y;
}

答:x = y; y = temp;

11.32位系统中,size_SA值是________

struct
{int a1:8;int a2:8;char a3[2];char a4[2];
}sA;
int size_SA = sizeof(sA);
答:8
以最大数据类型为准进行对齐,与位域无关。本例中最大数据类型是int,对齐大小是4B。
a1和a2共4B,a3和a4共4B。一共8B

12.以下程序输出结果m是________

int w = 1, x = 2, y = 3, z = 4;
m = (w < x) ? w : x;
m = (w < y) ? w : y;
m = (w < z) ? w : z;
cout<<"m="<<m;

答:1

13.函数t()、f()的定义如下所示,若调用函数t时传递给x的值为3,并且调用函数f()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,则函数t的返回值为________

int t(int x)
{int a;a = 3 * x - 1;f(x, a);return a+x;
}
void f(int r, int &s)
{int x;x = 2 * r + 1;s = s * r;r = s - x;return ;
}

答:27

14.下述程序的运行结果是________

int main(int argc, char *argv)
{short unsigned int a = 5;int b = 7;int c = b + a > 0 ? a + b : a - b;cout<<a+b<<' '<<b+c<<' '<<c+a<<endl;return 0;
}

答:-2 5 17

15.下述程序的运行结果是________

int main(int argc, char *argv[])
{int a, b, c;c = a = 0x30, b = 0x60;a = c | b >> 4;cout<<a<<' '<<b<<' '<<c<<endl;return 0;
}
答:54 96 48
移位运算符的优先级较高,先执行移位操作,得a=0x36,即54

16.下面程序的运行结果是________

char *p = "abcdefgh";
p += 3;
cout<<strlen(strcpy(p, "ABCD"))<<endl;
答:运行出错
因为p的对象存储于文字常量区,不能对其进行修改

17.下述程序输出结果是________

#define CAL(x, y) (x * x - y * y)
int main(int argc, char *argv[])
{int a = CAL(4, 3);int b = CAL(3, 2);cout<<a<<' '<<b<<' '<<CAL(a+1, b-1)<<endl;return 0;
}

答:7 5 4

二、编程题(第1题10分,第2题15分,总共25分)

1.已知一图像数组unsigned char Image[m][n],其中m>2000,n>1500;编写函数计算Image数组中所有元素的中间值,并返回计算得到的中间值。
2.已经两个矩阵数组double Src1[x][y]和double Src2[y][z],编写函数计算矩阵Src1和矩阵Src2的乘积值矩阵Dst,假设Src1,Src2和Dst的内存都已经申请好了并且够用

三、专业题(简答题)(嵌入式、windows和算法三个方向请根据申请岗位选择一个方向答题)(每小题8分)

嵌入式平台方向

1.简述多线程和多进程之间各自的优点和缺点

(1)多线程的优点:
无需跨进程边界;
程序逻辑和控制方式简单;
所有线程可以直接共享内存和变量等;
线程方式消耗的总资源比进程方式好;
(2)多线程缺点:
每个线程与主程序共用地址空间,受限于2GB地址空间;
线程之间的同步和加锁控制比较麻烦;
一个线程的崩溃可能影响到整个程序的稳定性;
到达一定的线程数程度后,即使再增加CPU也无法提高性能;
线程能够提高的总性能有限,而且线程多了之后,线程本身的调度也是一个麻烦事儿,需要消耗较多的CPU
(3)多进程优点:
每个进程互相独立,不影响主程序的稳定性,子进程崩溃没关系;
可以尽量减少线程加锁/解锁的影响,极大提高性能,就算是线程运行的模块算法效率低也没关系;
通过增加CPU,就可以容易扩充性能;
每个子进程都有2GB地址空间和相关资源,总体能够达到的性能上限非常大
(4)多进程缺点:
逻辑控制复杂,需要和主程序交互;
多进程调度开销比较大;
需要跨进程边界,如果有大数据量传送,就不太好,适合小数据量传送、密集运算
2.Linux环境编程中线程间通信都有哪几种?

1.套接字(socket)
2.共享内存(share memory)
共享内存实现分为两个步骤:
(1)创建共享内存,使用shmget函数。
(2)映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数。
3.信号(signal)
(1)信号类型,下面是几种常见的信号:
SIGHUP:从终端上发出的结束信号
SIGINT:来自键盘的中断信号(Ctrl-C)
SIGKILL:该信号结束接收信号的进程
SIGTERM:kill命令发生的信号
SIGCHLD:标识了进程停止或结束的信号
SIGSTOP:来自键盘(Ctrl-Z)或调试程序的停止执行信号
(2)信号处理:
1.忽略此信号
2.执行用户希望的动作
3.执行系统默认动作
(3)信号发送:
发送信号的主要函数有kill和raise。kill既可以向自身发送信号,也可以向其他进程发送信号。与kill函数不同的是,raise函数是向进程自身发送信号。
4.消息队列(message queue)
(1)定义:unix早期通信机制之一的信号能够传送的信息量有限,管道则只能传送无格式的字节流,这无疑会给应用程序开发带来不便。消息队列(也叫做报文队列)则克服了这些缺点。
(2)发展:消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式。进程可以向中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。
(3)持续性:系统V消息队列是随内核持续的,只有在内核重起或者人工删除时,该消息队列才会被删除。
(4)键值:消息队列的内核持续性要求每个消息队列都在系统范围内对应唯一的键值,所以,要获得一个消息队列的描述字,必须提供该消息队列的键值。
5.管道(pipe)和有名管道(FIFO);
当一个管道建立时,它会创建两个文件描述符:filedis[0]用于读管道,filedis[1]用于写管道。
管道关闭:关闭管道只需将这两个文件描述符关闭即可,可以使用普通的close函数逐个关闭。
命名管道和无名管道基本相模同,但也有不同点:无名管道只能由父子进程使用;但是通过命名管道,不相关的进程也能交换数据。
3.ARM Linux中的Bootloader主要起到什么作用?

Bootloader(引导加载程序)是系统加点后运行的第一段代码。在嵌入式系统中,通常并没有香BIOS那样的固件程序(有的嵌入式CPU会在芯片内部嵌入一段短小的程序,一般用来将Bootloader装载进AM中,因此 Bootloader的作用于PC机上的BIOS类似),通过Booloader可以完成对系统板上的主要部件如CPU,SDRAM,FLASH和串口等进行初始化,也可以下载文件到系统板,对FLASH进行擦出于编程。在一个基于ARM的嵌入式系统中,系统的在上电或复位时通常都从地址 0x00000000处开始执行,而这个地址安排的通常就是系统Bootloader。通过这段小程序可以初始化硬件设备,建立内存空间的映射。从而将系统的软硬件环境带到一个合适的状态,一边最终调用操作系统内核准备好正确的环境。Bootloader一般包含一下几个必备功能(1)初始化处理器。这个动作都是用汇编语言完成的,当电源接通就会执行这个动作,通常只有两三个汇编指令,目的是将CPU的控制权转交给硬件初始化的程序。(2)初始化一些必要的硬件,这个动作都是汇编语言完成的。主要是初始化CPU,SDRAM等,其他硬件,例如串口,可以由C语言等比较高级的语言来完成后续动作。(3)设置处理器的寄存器以及内存,关掉所有输入管脚(包括终端管脚),以防突然有信号进入妨碍我们接下来的硬件初始化动作。然后初始化串口,以便后续运行的程序能够同Host端进行通信,便于调试。(4)从特定的位置把操作系统和文件系统调入内存,并设置一些必要的初始参数。然后把CPU的控制权交给操作系统。有的Bootloader会先从串讲偶或者网络其他路径得到内核的映象文件。然后把这些文件写入到target系统的Flash或者其他的存储介质,然后把内核载入到RAM执行,同时交出控制权。

windows平台方向

1.简述VC中,下面这个错误意思,可能原因和处理方法:
error LINK2005:symbol "xxx" already defined
2.简述SendMessage和PostMessage的差别
3.简述Critical Section、Mutex、Semaphore的功能和差别

算法方向

1.给出水平边和垂直边的边缘检测的soble算子
2.adboost的含义是什么?简单介绍一下定义
3.

大华股份2013届校园招聘软件算法类试题D卷相关推荐

  1. 大华2013届校园招聘 :联合体试题

    8.Intel X86 PC上以下程序运行的输出值是________ [cpp] view plaincopy int main(int argc, char *argv[]) { union { s ...

  2. 2013金山校园招聘Java笔试题

    今年金山校园招聘Java笔试题目,昨天(2012.9.17)参加完笔试的留下来的 第一题 :栈内存与堆内存的特点与区别,java中是怎样分配的? 栈内存中用来存放基本数据类型(8种基本类型)和对象的引 ...

  3. Java学习手册:华为2020届校园招聘——软件题

    一.全量字符集与已占用字符集(AC100) 输入描述: 输入一个字符串,字符串中包含了全量字符集和已占用字符集,两个字符集用@相连.@前的字符集合为全量字符集,@后的字符集为已占用字符集合.已占用字符 ...

  4. 奇虎360 -- 2013年校园招聘技术类笔试题

    照片稍微有点模糊,但仔细看还是能看清楚的! 强烈推荐!!!

  5. 二分法-网易有道2013年校园招聘面试一面试题

    九度:http://ac.jobdu.com/problem.php?pid=1502题目描述: 在印刷术发明之前,复制一本书是一个很困难的工作,工作量很大,而且需要大家的积极配合来抄写一本书,团队合 ...

  6. 最大值最小化(网易有道2013年校园招聘面试一面试题)

    题目描述: 在印刷术发明之前,复制一本书是一个很困难的工作,工作量很大,而且需要大家的积极配合来抄写一本书,团队合作能力很重要. 当时都是通过招募抄写员来进行书本的录入和复制工作的, 假设现在要抄写m ...

  7. 2013豆瓣校园招聘研发类笔试题

    2013豆瓣校园招聘研发类笔试题 转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/11263443 1.将一个递归算法改为对 ...

  8. 2013搜狗校园招聘笔试题

    研习了Linux公社发布的2013搜狗校园招聘笔试题,还是有些收获的. //第一题:以下程序的输出是___________________ class Base { public:Base(int j ...

  9. 2014 360校园招聘技术类笔试题

    接下来的面试题传送门: 2014 360校园招聘技术类面试题 选择题 小毕最近电脑很慢,怀疑是中了病毒,于是找了三款杀毒软件扫描了一下: A软件扫描结果:如果中了病毒X,那么也可能中了病毒Y B软件扫 ...

最新文章

  1. Efficient local alignment discovery amongst noisy long reads
  2. 安卓5.0API的特性,多了些什么
  3. node学习笔记--模块加载
  4. python有哪些作用-你都用Python来做什么,它对你来说有什么作用?
  5. 18-Chain of trust bindings
  6. Linux编程里getopt_long_only函数用法详解
  7. ASP.NET组件设计Step by Step(8)
  8. JS判断日期是否在同一个星期内,和同一个月内
  9. IIS 返回 405 - 不允许用于访问此页的 HTTP 谓词。终极解决办法!!!!
  10. g18 android 4.4,cm11出了最新的android4.4完美的附网址
  11. winform 获取NotifyIcon的位置
  12. 五、网络编程实例:聊天室
  13. pycharm双击打不开,无响应,下列第二种方法我亲测有效
  14. Python获取本机ip地址的两种有效方法
  15. 深度解析!短视频如何成为现象级产品
  16. CentOS 6.4 搭建 Java 开发环境详解
  17. 破解长虹电视不能安装u盘app,快速安装第三方软件
  18. 删除腾讯游戏助手自动生成的文件aow_drv.log
  19. 手机php开发工具_最热门的PHP开发工具
  20. 基于Ubuntu系统调用opencv——在图片上显示汉字和数字

热门文章

  1. python井字棋最大最小算法_python井字棋算法及代码
  2. 既然有 HTTP 请求,为什么还要用 RPC 调用?
  3. C# WinForm应用程序的多语言环境支持
  4. PyCharm使用技巧之设置背景图片
  5. ole db提供程序 mysql_SQL SERVER 链接服务器使用
  6. html怎么显示base64,如何在HTML中显示Base64图像?
  7. 使用Scrapy框架,爬取b站番剧信息。
  8. python中将一组数分成以N个数字为一组实例
  9. 【NVM】NVM 常用笔记
  10. linux 进程调度 内存,linux学习的任督二脉-进程调度和内存管理