嵌入式初级面试题
姓名: 日期: 开始时间:
(答题时间60分钟,答题过程中请不要上网查询资料,不可带走答卷)
1:设float a=2,b=4,c=3;,以下C语言表达式与代数式(a+b)+c计算结果不一致的是( )[3分]
A.(a+b)c/2
B. (1/2)*(a+b)c
C. (a+b)c*1/2
D.c/2(a+b)
2:为了向二进制文件尾部增加数据,打开文件的方式应采用( )[3分]
A.“ab”
B.“rb+”
C.“wb”
D.“wb+”
3:下述程序执行后的输出结果是( )[3分]
main()
{int x=‘f’; printf( “%c\n”,‘a’+(x-‘a’ +1));}
A.g
B.h
C.i
D.j
4:C语言中,下列运算符优先级高的是( )[3分]
A.!
B.%
C.>>
D.==
5:数组定义为“int a[4];”,表达式( )是錯俣的是().[3分]
A.*a
B.a[0]
С. а
D.a++
6:执行语句“k=7>>1;”后,变量k的当前值是( )[3分]
A.15
B.31
C.3
D.1
7.定义函数时,缺省函数的类型声明,则函数类型取缺省类型( )[3分]
A. void
B. char
C. float
D. int
8:若main()函数带参数,参数个数多是()[3分]
A.O
B.1
C.2
D.3
9:若有宏定义:#define MOD(x, y) x%y则执行以下语句后的输出结果是()[3分]
int a=13, b=94;
printf(“%d\n”, MOD(b, a+4));
A.5
B.7
C.9
D.11
10:下列各个错误中,哪个不属于编译错误( )[3分]
A.改变x 原值3为5,写作“×==5;”
B.花括号不配对
C.复合语句中的后一条语句后未加分号
D.变量有引用、无定义
11:下列程序段运行后,x的值是( )[3分]
a=1;b=2;x=0;
if(!(–a))x–;
if(!b)x=7;else ++x;
A.0
B.3
C.6
D.7
12:设#define N3;define Y(n)((N+1));则表达式2(N+Y(5+1))的值是() [3分]
A.42
B.48
c.54
D.出错
13:若定义了char ch[]={" abc\0def"},*p = ch;则执行printf(“%C”,*p+4);语句的输出结果是( )[3分]
A. def
B.d
C.e
D.O
14:下列转义字符中错误的是()[3分]
A.‘\000’
B.‘\14’
C.‘\x111’
D.‘\2’
15:算术运算符,赋值运算符和关系运算符的运算优先级按从高到低依次为( )[3分]
A.算术运算、赋值运算、关系运算
B.算术运算、关系运算、赋值运算
C.关系运算、赋值运算、算术运算
D.关系运算、算术运算、赋值运算
16:设define N3;#define Y(n)(N+1)n);则表达式2(N+Y(5+1))的值是( )[3分]
A.42
B.48
C.54
D.出错
17:表达式strcmp(“3.14”,“3.278”)的值是一个( )[3分]
A.非零整数
B.浮点数
C.0
D.字符
18:设 struct
{
short a;
char b;
float c;
}cs;
则 sizeof(cs) 的值是( )【3分】
A. 4
B. 5
C. 6
D. 7
19:若变量已正确定义,表达式(j=3, j++)的值是( )【3分】
A. 3
B. 4
C. 5
D. 0
20:C 语言中运算对象必须是整型的运算符是( )【3 分】
A.%
B./
C.!
D.**
21:多态类中的虚函数表是 Compile-Time 还是 Run-Time 时建立的?说说这两种的区别【5分】
22:给出下面这段程序的运行结果【5 分】
#include
void main()
{
int c;
while((c=getchar())!=‘\n’)
switch(c-‘2’)
{
case 0:
case 1:putchar(c+4);break;
case 2:putchar(c+4);break;
case 3:putchar(c+3);break;
default: putchar(c+2);break;
}
printf(“\n”);
}
运行时输入:2473,输出结果是:
23:写一语句实现x是否为2的若干次幂的判断。[6分]
24:请简单描述一下什么是IIC总线?标准速率是多少?快速速率是多少?总线设备地址是几位?通信总线有几根,分别是什么?[6分]
25:请问SPI通信总线有几根,分别是什么?[6分]
26:请问USB通信总线的通信速率有几种?分别是多少?[6分]
27:OSI模型是指哪7层?TCP和UDP是OSI模型的第几层,说说他们的区别是什么?[6分]
c++测试题
一、程序阅读题
(1)下面程序的输出结果为
#include <iostream>
using namespace std;
void fun(int x, int *y, int &z)
{
x = *y + z;
*y = x + z;
z = x + *y;
}
int main()
{
int a = 1, b = 2, c = 3;
fun(a, &b, c);
cout << a << "," << b << "," << c;
return 0;
}
(2) 下面程序的的输出结果为
#include<iostream>
using namespace std;
int foo(int n)
{
int temp;
switch(n)
{
case 0: return 1;
case 1: return 1;
default:temp = (n - 1)*foo(n - 2);
cout << temp << " ";
return temp;
}
}
int main()
{
foo(6);
return 0;
}
二、编程题
(3)实现字符串类“-”运算符的重载,给定两个字符串 str1 和 str2,str1-str2 的输出两个字符串的最长公共子串。(30 分)
(4)给一个01矩阵,1代表是区域像素,0代表空白,如果两个1相邻,那么这两个1属于同一个区块。我们只考虑上下左右为区块,判断区块个数。例如:以下输入数组,对应的输出为3。(30分)
[1,1,0,0,0],
[0,1,0,1,1],
[0,0,0,1,1],
[0,0,0,0,0],
[0,0,1,1,1]
武汉开目软件c++软件工程师考题
一、选择题(前10题每题2.5分,后5题每题4分,共45分)
1:设整型变量n=2,则执行下列语句后,浮点型变量b的值不为0.5的是()
A)b=1.0/n B) b=(float)(1/n) C)b=1/(float)n D)b=1/(n*1.0)
2:在C语言中对一维数组的正确定义为()
A)int a(10); B) int n=10,a[n]; C) int n:a[n]; D)#define N 10 int a[N];
3:若有说明:int n=2; *p=&n; *q=p; 则以下非法的赋值语句是()
A)p=q B)*p=*q C)n=*q D)p=n
4:在函数调用时,以下说法正确的是()
A)函数调用后必须带回返回值
B)实际参数和形式参数可以同名
C)函数间的数据传递不可以使用全局变量
D)主调函数和被调函数总是在同一个文件里
5.设有以下语句: int x=10; x+=3+x%(3),则x的值是()
A)14
B)15
C)11
D)16
6.在C语言中,以下叙述不正确的是()
A)在C程序中,无论是整数还是实数,都能被准确无误地表示
B)在C程序中,变量名代表存储器中的一个位置
C)静态变量对生存期与整个程序的生存期相同
D)C语言中变量必须先定义后引用
7、若执行下面面对程序从键盘输入9,则输出结果是()
#include<stdio.h>
void main()
{
int n;
scanf(“%d”,&n);
if(n++<10) printf(“%d\n”,n);
else printf(“%d\n”,n–);
}
A)11
B)10
C)9
D)8
8、以下哪个结构可以用来存储图?()
A) 栈
B) 二叉树
C) 队列
D) 邻接矩阵
9、设栈S和队列Q的初始状态为空,元素e1, e2, e3, e4, e5, e6依次通过栈S,一个元素出栈后进入队列Q,假设出队的顺序为e2, e4, e3, e6, e5, e1,那么栈S的容量至少应该为()。
A) 2
B) 3
C) 4
D) 5
10、设某算法的时间复杂度函数的递推方程是T(n)=T(n-1)+n(n为正整数)及T(0)=1, 则该算法的时间复杂度为()。
A) O(log n)
B) O(n log n)
C) O(n)
D) O(n*n)
11、为了统计一个非负整数的二进制中1的个数,代码如下:
int CountBit(int x)
{
int ret=0;
while(x)
{
ret++;
_______;
}
return ret;
}
则空格内要填入的语句是( )
A) X>>=1
B) x&=x-1
C) x|=x>>1
D) x<<=1
12、对于入栈顺序为a,b,c,d,e,f,g的序列,下列( )不可能是合法的出栈序列。
A) a,b,c,d,e,f,g
B) a,d,c,b,e,g,f
C) a,d,b,c,g,f,e
D) g,f,e,d,c,b,a
13、给定含有n个不同的树的数组L=<x1, x2,…, xn>。如果L中存在xi(1<=i<=n)使得x1<x2<…<xi-1< xi >xi+1>…>xn,则称L是单峰的,并称xi是L的“峰顶”。现在已知L是单峰的,请将a~c三行代码补充到算法中使得算法正确找到L的峰顶。
a. Search(k+1,n)
b. Search(1,k-1)
c. return L[k]
Search(l,n)
- k<-[n/2]
- if L[k] > L[k-1] and L[k] > L[k+1]
- then ___________
- else if L[k] > L[k-1] and L[k] < L[k+1]
- then ___________
- else ___________
正确的填空顺序是( )
A) c, a, b
B) c, b, a
C) a, b, c
D) b, a,c
14、一个平面的法线是指与该平面垂直的直线。过点(1,1,1)、(0,3,0)、(2,0,0)的平面的法线是:
A) 过点(1,1,1)、(2,3,3)的直线
B) 过点(0,1,0)、(-3,2,1)的直线
C) 过点(2,0,0)、(5,2,1)的直线(答案)
D) 过点(1,1,1)、(3,2,1)的直线
15、有 A、B、C、D、E、F 6 个集装箱,准备用甲、乙、丙三辆卡车运送,每台卡车一次运两个,若卡车甲不能运 A 箱,卡车乙不能运 B 箱,此外无其它任何限制,要把这 6 个集装箱分配给这 3 台卡车运送,则不同的分配方案的种数为()
A) 168
B) 84
C) 56
D) 42 (答案)
二、填空题
1、输入一个字符,判断该字符是数字、字母、空格还是其他字符(6分)
main()
{
char ch;
ch = getchar();
if (__________)
{
printf("这是一个英文字母");
}
else if (__________)
{
printf("这是一个数字");
}
else if (__________)
{
printf("这是一个空格");
}
else
{
printf("这是其他字符");
}
}
2、用指针做函数参数,对输入对两个整数按大小顺序输出(7分)
void swap(int *p1, int *p2)
{
int p;
p = ________;
________ = ________;
________ = p;
}
main()
{
int a, b;
scanf("%d,%d", ________);
if(a<b)
swap(________);
printf("\n%d,%d\n", a, b);
}
3、写出下面程序的输出结果。(7分)
int main()
{
int a[6]={
1,2,3,4,5,6};
int pi=0;
int pj=5;
int t,i;
while(pi<pj)
{
t=a[pi];
a[pi]=a[pj];
a[pj]=t;
pi++;
pj--;
}
for(i=0;i<6;i++)
{
cout << a[i] << ",";
}
cout << endl;
return 0;
}
三、编程题
1、编写一个求解最大公约数的函数。(10分)
int gcd(int a, int b)
{
}
2、编写一个int类型的动态数组“追加”方法(10分)
3、编写一个函数,实现标准C语言atoi函数的功能(字符串转换成整数)(14分)
外包公司面试题
题目1:编写一个函数,输入为一个字符率,将其逆序后输出
题目2:编写一个函数,统计在一个输入字符串中各个不同字符出现的频率
题目 3: 当前有如下 Json:
json
{
"IP": "XXXXXXXXX",
"Port": "XXX",
"Info": {
"name": "XXXXXXXX",
"phone": "XXXXX"
}
}
请创建一个线程,接收来自192.168.8.1:8000的UDP报文,内容为上述Json。
解析报文内容,将其中的“Info”信息转发至报文指定的“IP”(IP地址)和“Port”(端口)上
C++软件开发工程师笔试题(NOKOV度量)
一、填空题(30分)
数组的分类主要是:____、____两类。(2分)
程序运行时的内存分区为:——、——、——、——、——。(5分)
<