笔试时间:2020.09.24
时长:90分钟
题目:25道题,全是C语言代码题,问输出结果。
总结:时间紧,任务重,硬核。
#includechar *getstr1() { char s[]="str1"; //static char s[]="str1"; return s; } char *getstr2() { char *s="str2"; return s; } void getstr3(char *s) { s="str3"; return; } int main() { char *s1,*s2,*s3; s1=getstr1(); s2=getstr2(); getstr3(s3); printf("str1:%srn",s1); printf("str2:%srn",s2); printf("str3:%srn",s3); }
第一个,函数内部定义的变量在函数结束时候释放掉了,所以返回会出错,
第二个是str2,
第三个定义是void,没有返回值,打印空,内存非法访问。
str1: str2:str2 str3:null2、
#include#include int main() { char *str="Ruijie"; printf("str1:%drn",sizeof(str)); printf("str2:%drn",strlen(str)); printf("str3:%drn",sizeof(*str)); }
4 6 1
3、#includeint main() { int x=0,y=0;` while(x<15){ y++; x+=++y; } printf("%d %d",y,x); }
8 20
4、#include#define N 3 #define Y(n) ((N+1)*n) int main() { int z; z=2*(N+Y(5+1)); printf("%d",z); }
48(考察宏定义的边界效应)
5、#include#include static int arr[3][3]={0}; void init(int (*ptr)[3]) { int i=0; for(i=0;i<3;i++){ *(ptr[i])=i; } return; } int main(int argc,char **argv) { init(arr); printf("%d,%dn",arr[0][1],arr[1][0]); return 0; }
0 1
ptr[0]是等于&a[0][0],所以*ptr[0]=a[0][0]
所以最后这个二维数组是 000 100 200
#include#include int main() { char str[]={'o','u','l','d'}; printf("%d",strlen(str)); return 0; } #include #include int main() { char str[]={'o','u','l','d',' '}; printf("%dn",strlen(str)); printf("%sn",str); return 0; }
%s 遇到 才会截止输出,遇到 才会截止计算
7、#include#include int main() { char a[]="ABC"; char b[]={'A','B','C'}; printf("%sn",a); printf("%sn",b); printf("%dn",sizeof(a)); printf("%dn",sizeof(b)); return 0; }
如果用%s输出,需要注意打印字符串的时候,他认为’ ‘是结束符,所以你不加’ ‘的时候,他可能会
打印其他乱七八糟的东西
ABC
ABCABC
4
3
#include#include int main() { char a=0xff; printf("%d,%un",a>>8,a>>8); //这里的%d 让它变成了int return 0; }
-1,4294967295
看下面。右移八位全部移走了,然后补了符号位,1111 1111。另外,在内存中,因为是有符号的,所
以1111 1111是个负数,负数在内存中是补码的形式存在,所以11111111-1再取反就是真实的数,就
是-1。
#include#include int main() { printf("%dn",~3&(2&(3^4))); //按位取反 异或 return 0; }
0
10、#includeint main() { int a[3][4]={{10,20,30,40},{50,60,70,80},{90,91,92,93}}; int (*p)[4]; p=a+1; printf("%dn",p[1][-1]); return 0; }
80
11、#includeint main() { int a[2][3]={{1,3,5},{2,4,6}}; int m,*ptr; ptr=&a[0][0]; m=(*ptr)*(*(ptr+2))*(*(ptr+2)); printf("%dn",m); return 0; }
25
12、#include13、#include int test() { static int m=0; int n=0; m++; n++; printf("m=%d,n=%dn",m,n); return 0; } int main() { test(); test(); return 0; }
#includeint main() { int a=0,b=0,c=0; int i; for(i=0;i<5;i+=2){ switch(i){ case 1: a++; b++; break; case 2: c++; a++; case 3: c++; case 4: b++; default: a++; break; } } printf("%d,%d,%dn",a,b,c); return 0; }
4 2 2(没有break的话会一直向下执行)
14、#include#include int main() { char a[7]="abcdef",b[4]="ABC"; strcpy(a,b); printf("%cn",a[4]); return 0; }
e
15、#includeint main() { int y=3,x=3,z=1; printf("%d,%dn",(++x,++y),z+2); return 0; }
4 3(逗号运算符)
#include#include int main() { int y=3,x=3,z=1; //printf("%d,%dn",(++x,++y),z+2); printf("%d,%dn",(++x,++y),z++); return 0; }
4 1
16#include#include int main() { char b='v'; printf("%Cn",b-20); return 0; }
b(ASCII)
17#include#include int main() { char str[]="abcde"; char *p; p=&str[2]; printf("%dn",*p); return 0; }
99(ASCII)
18、什么情况下会编译通过,运行出错A、gcc用-Werror选项,程序组译失败。 B、gcc使用-Werror选项,编译正常,程序运行时崩溃。 C、gcc使用-Werror选项,编译正常),程序正常运行,备份数据输出的为随机数, D、程序正常运行,备份数据输出的为1.19、以下哪些任务不可以放到中断的上半部执行?
A、时间敏感的任务 B、硬件相关的任务 C、进程通信的任务 D、不可被中断的任务20、线程 25、如下所示程序,LINE C 和LINE P将会输出什么?
LINE C: value= LINE P: value= #indlude4、360公司笔试题#indlude #include #include int value=0 void *runner(void *param) { value=5; pthread_exit(0); } int main(void) { pid_t pid; pthread_t tid; pthread_attr_t attr; pid=fork(); if(pid==0) { pthread_attr_init(&attr); pthread_create(&tid,&attr,runner,NULL); pthread_join(tid,NULL); printf("LINE c: value=%dn",value); } else if(pid> 0) { wait(NUL); printf("LINE P: value=%dn",value); } return0;
投递的嵌入式Linux软件开发相关岗位,给的软件综合卷A卷(许多大公司笔试给的都是软件综合)。
因为是软件综合,所以各种知识都考查,java、C++、数据结构、算法、Linux等全部考察,所以要求你
基础扎实。
笔试时间:2020.09.11,20:00——22:00
选择题40个,一共80分。
编程题2个,一共40分。
选择题:
1、Java中GUI菜单的设置规则
2、一段C++代码的运行结果
3、例图
4、E-R图的规则有哪些?
5、C类IP地址192.168.2.0/24,16台主机时的子网掩码是多少?
6、socket编程中so_pcb 结构体的定义是哪个?
7、DNS定义是什么?
8、下列不是 NP 问题的是?
9、面向对象编程中:类,对象,实例的关系?
10、贪心算法适用于解决哪些问题?
11、LP问题是什么?
12、linux中查看路径变量的命令?
回答:echo $PATH
13、linux中kill -9 什么意思?
14、linux中grub的配置文件哪里?
回答:在/boot/grub/grub.conf目录下
15、linux中mysql数据库默认的端口是?
回答:3306
mysql的默认端口是3306,可以编辑用户目录下的 .my.cnf 文件进行修改。
sqlserver 默认端口号为:1433 oracle 默认端口号为:1521 DB2 默认端口号为:5000 PostgreSQL 默认端口号为:5432
16、序列图是什么意思?
17、原始数据类型自己可以更改吗?
18、类的继承方式中,基类共有成员,保护成员,派生类有哪些不同?
19、使用游标的5个步骤?
20、下列系统调用中,不会导致进程阻塞的是?
21、多进程中临界区的概念如何解释?
22、有三个并发进程共享变量S,则与变量S相关的临界区有几个?
23、C++中,一个函数的返回值类型由什么决定?
24、由二叉树变成树的规则?
25、链栈?
26、n个顶点的有向图,所有顶点的出度之和为S,则所有顶点的入度之和为?
27、考察Java的语法?
28、举证
29、一段C++代码运行结果
30、一段C++代码运行结果
31、关系的三种类型?
32、考察分治法
33、如何用DFS遍历一个无环有向图
34、一段C++代码运行结果
35、一段C++代码运行结果
36、char数组强制转换成 int 命令是哪一个?
37、
38、一段C++代码运行结果
39、设串长为n,模式串长为m,则KMP算法所需的附加空间为?
A、O(m)
B、O(n)
C、O(m*n)
D、O(nlog2m)
KMP算法时间复杂度为O(m+n),空间复杂度为O(m)。因为KMP算法涉及到next数组的存储,且next数
组是基于模式串长度计算的。
40、关于标准形线性规划表述正确的是?
编程题:
1、企业管理:根据打开记录推算工号(具体忘了)
2、编写密码复杂性验证程序:输入几组字符串,要求有大写字母,小写字母,数字,符号,长度大于
8,则输出pass,否则提示错误
笔试时间:2020.09.03,19:00-21:00
题型:
单选15道×3=45
不定项选择题5道×3=15
编程题3道×20=60
单选:
1、反转链表的代码补全(嵌入式笔试链表类题目必考,比如双向链表的插入删除。字符串翻转考察的也
不少)
2、二叉平衡树(AVL)树,插入30,重新平衡后,某个数的左右孩子节点是多少。
3、数据查询指令是哪一个?
4、如果IP是212.212.77.55,子网掩码是255.255.252.0,那么它在自己组的子网广播可以达到的目的地
址是哪个?
5、一段php脚本运行结果是哪一个?
6、一段代码的时间复杂度和空间复杂度是多少?
7、给出一个二叉树的遍历方式(前、中、后)。
8、一段C++代码,判断一段程序是内存泄漏、编译出错还是运行出错?
9、用户线程和内核线程的区别和联系。
10、简单逻辑题。
11、linux中让磁盘大小从小到大排列的命令是?
12、某算法的时间复杂度是多少?
13、一段java代码,让你判断while循环的时间复杂度?
14、一段伪代码的同步和互斥,以及PV操作补全代码
15、排序算法会一个即可完成(冒泡,选择,快排,二分)
不定项选择题:
1、while循环的时间复杂度判断。
2、ping、tcpdump、strace、wireshark工具分别是用来干吗的?
3、C++语言中static变量的作用域是什么?
4、C++中:类重写、纯虚函数、虚析构函数的编译错误和内存泄漏问题该如何?
5、一段C++代码的运行结果。
编程题:
最后的编程题,三道都没有看懂,好像全是动态规划,没思路。
总结:
百度考察的范围比较广,数据结构考察的比较多,C++考察的也比较多,C语言反而少一些,所以大家要
好好准备。
以上题目没有列出选项,大家主要关注百度考察的知识点,自己总结一下,把知识点归类。不同企业的
嵌入式岗考察是有技术偏向性的,大家要针对性准备。



