8、科大讯飞笔试题

笔试时间:2020.09.12,19:00——21:00
岗位:嵌入式软件开发
题型:四道编程题,4*10=40分

1、定义一个n*m矩阵,找到两个不在同一行同一列的数字,使得成绩最大。

2、输入一个数N,求数的二进制中1的个数(已AC)

//写一个函数返回参数的二进制中1的个数
#include<stdio.h>
#include<stdlib.h>
int count_one_bits(unsigned int value)
{int count = 0;while (value != 0){if (value % 2 == 1){count++;}value = value >>1;}return count;
}
int main()
{int num;int ret;printf("请输入一个大于0的数\n");scanf("%d", &num);ret=count_one_bits(num);printf("%d", ret);system("pause");return 0;
}

3、数组的排序(时间复杂度最小),应该是让你用冒泡或者选择排序。
题型是给了一种排序算法的中间过程,让你认出是哪一种排序,然后写代码。

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
void sortA1(int a[], int length){int i, j, temp;for(i = 0; i < length; ++i){for(j = i + 1; j < length; ++j){if(a[j] < a[i]){ //如果后一个元素小于前一个元素则交换temp = a[i];a[i] = a[j];a[j] = temp;}}}
}
void printA1(int a[], int length){int i;for(i = 0; i < length; ++i){printf("%d,", a[i]);}printf("\n");}
void sortA2(int a[], int length){int i, j, temp;for(i = 0; i < length; ++i){for(j = length - 1; j > i; --j){if(a[j] > a[j - 1]){temp = a[j];a[j] = a[j - 1];a[j - 1] = temp;}}}
}
int main(){int length = 0;int a[] = {12, 43, 8, 50, 100, 52,0};length = sizeof(a) / sizeof(a[0]);printf("排序前\n");printA1(a, length);sortA1(a, length);printf("选择排序后\n");printA1(a, length);sortA2(a, length);printf("冒泡排序后\n");printA1(a, length);system("pause");
}

4、字符串左旋(case 20%,不知道是哪里没考虑到,读者可以尝试)
输入 1234abcd , 左旋3
输出 4abcd123

void swap(char *start, char *end)
{while (start < end)
{*start ^= *end;
*end ^= *start;
*start ^= *end;
start++, end--;
}

9、小马智行笔试题

笔试时间:2020.09.20,15:00——16:30
岗位:嵌入式软件工程师
题型:
单选7道
不定项选择题2道
简答1道(10分)
编程2道(60分)
单选:
1、可以作为中断使用的安全同步方式是:

A spinlock 自旋锁
B mutex 互斥量
C semaphore 信号量
D 全局变量

2、linux中改变文件属性的命令:chmod
3、linux中查找文件中匹配字符串的命令:grep
4、下列哪一种协议是靠设备地址的不同区分的:IIC
5、全局未初始化变量存在哪里:BSS段
6、代码题。

#include<stdio.h>
void change(int *,int);
int main(){int a=25,b=50;change(&a,b);printf("a:%d,b %d",a,b);return 0;
}
void change(int *x,int y){*x=100;y=200;
}

答案:100 50

提示:如果把函数写到main之前,那么就不需要声明。而且一般我们都是把main写在文件最下面。
解析:这里只有传的指针才会改变,b没有返回值。
7、代码题。

#include<stdio.h>
struct ponyai{char a;int b;short c;void *d;
};
int main(){struct ponyai hw;printf("%d\n",sizeof(hw));return 0;
}

64位linux下:24,内存对齐8*3=24,(void )=8
32位linux下:16,8
2,(void *)=4

8、答案:7

#include<stdio.h>
int main(){unsigned char a=2,b=5;printf("%d",(int)a^b);return 0;
}

不定项选择题:
1、OSI网络模型中,下列不属于应用层协议的是


2、进程间通讯:
(1)管道/无名管道(2)信号(3)共享内存(4)消息队列(5)信号量(6)socket
注意:临界区则是一种概念,指的是访问公共资源的程序片段,并不是一种通信方式。
线程通讯(锁):
(1)信号量(2)读写锁(3)条件变量(4)互斥锁(5)自旋锁

简答题:
linux内存碎片化的定义,可能的原因以及可以避免或者缓解的方式?
定义:内部碎片与外部碎片在页式虚拟存储系统中, 用户作业的地址空间被划分成若干大小相等的页面, 存储空间也分成也页大小相等的物理块, 但一般情况下, 作业的大小不可能都是物理块大小的整数倍, 因此作业的最后一页中仍有部分空间被浪费掉了. 由此可知, 页式虚拟存储系统中存在内碎片.在段式虚拟存储系统中, 作业的地址空间由若干个逻辑分段组成, 每段分配一个连续的内存区, 但各段之间不要求连续, 其内存的分配方式类似于动态分区分配.由此可知, 段式虚拟存储系统中存在外碎片

换一种问法也是一样的:
在内存管理中, “内零头”和”外零头”个指的是什么?在固定式分区分配, 可变式分区分配, 页式虚拟存储系统,段式虚拟存储系统中, 各会存在何种碎片? 为什么?
解答:
在存储管理中内碎片是指分配给作业的存储空间中未被利用的部分。
在固定式分区分配中, 为将一个用户作业装入内存, 内存分配程序从系统分区表中找出一个能满足作业要求的空闲分区分配给作业, 由于一个作业的大小并不一定与分区大小相等, 因此, 分区中有一部分存储空间浪费掉了. 由此可知, 固定式分区分配中存在内碎片.外碎片是指系统中无法利用的小存储块。
在可变式分区分配中, 为把一个作业装入内存, 应按照一定的分配算法从系统中找出一个能满足作业需求的空闲分区分配给作业, 如果这个空闲分区的容量比作业申请的空间容量要大, 则将该分区一分为二, 一部分分配给作业, 剩下的部分仍然留作系统的空闲分区。由此可知,可变式分区分配中存在外碎片

简言之:
在固定分区管理算法中, 分给程序的内存空间往往大于程序所需的空间, 这剩余部分的空间不能被其他程序所用, 这就是”内部碎片”随着存储区的分配和释放过程的进行, 在各个被分配出去的分区之间会存在很多的小空闲区, 暂时不能被利用, 这就是”外部碎片”.
避免方式:
1、依据可移动性组织页是防止物理内存碎片的一种可能方法.
2、虚拟可移动内存域避免内存碎片

编程题:
1、用C写一个function,可以获取一个文件名的宏定义。
输入 filename.h
输出 FILE_NAME_H

#include <stdbool.h>
#include <stdio.h>
#include <string.h>
char *GetFilenameDefine(char *filename, char *target_str, int
target_str_size) {//获取头文件的宏定义字符串
}
int main() {char target_string[1000] = {0};char filename[1000] = {0};scanf("%s", filename);printf("%s\n", GetFilenameDefine(filename, target_string,sizeof(target_string)));
}

大家可以自己实现。
2、比较字符串是否相等。
case 90%,有什么我没考虑到的吗?

#include <stdbool.h>
#include <stdio.h>
#include <string.h>
bool CompareString(char *str1, char *str2) {// 请判断两个字符串是否相等int ret;ret = strcmp(str1,str2);if(ret == 0){return 0;}else{return 1;}
}
char str1[1000];
char str2[1000];
int main()
{scanf("%s", str1);scanf("%s", str2);printf("%d\n", CompareString(str1, str2));return 0;
}

11、商汤科技笔试题

笔试时间:2020.09.18,19:00——21:00
岗位:嵌入式软件工程师
题型:单选4道,不定项选择题2道,填空2道,编程2道。
单选:
1、在一棵二叉树上第5层的结点数最多是:16

第1层1个 2^0
第2层2个 2^1
第3层4个 2^2
第n层 2^(n-1)
//就是2的层数-1次方.

2、一根长度为a的木棒折成三段,求能构成三角形的概率:1/4

3、两堆硬币,分别为100和200枚,两人可从一堆取任意枚或从两堆取相同枚,不可以不取,取到最后一枚赢。怎么赢?(先手还是后手,后手从哪一堆取?)

4、权值为8.6.4.11的四个叶子节点构造一棵哈弗曼树,该树的带权路径长度为?
不定项选择题:
1、十进制小数55.125对应的二进制数是?
2、以下关于static说法正确的是?
回答:经典考察,另外还有const、volatile等关键字。
填空题:
1、此程序崩溃,为什么?

#include<stdio.h>
char *f()
{char str[512];sprintf(str,"AI helps world!");return str;
}int main(){printf("%s",f()+3);return 0;
}

2、求输出

#include<stdio.h>
int fun(int x,int y){return (x>>2)*(y+4);
}
int main(){int a[4];int i = 0,value;a[0]=1;a[1]=18;for(i=0;i<2;i++){value = fun(a[i++],a[i++]);a[i-1]=value>>1;a[i-2]=value-4;a[i]=value;}printf("%d-%d-%d-%d",a[0],a[1],a[2],a[3]);return 0;
}

编程题:
1、给定一个多边形P,是一个(n,2)的数组,表示按顺序每个顶点的坐标,和一个点A(x,y),请计算点A到多边形P上的所有线段中,最短的举例的数值(点到多边形的最短距离理论)

2、有一个人在迷宫里,要从入口s抵达出口g,迷宫里的“x”表示墙壁,"."表示道路,大写字母比如A表示门,小写字母比如“a”表示钥匙。求能不能走出来?(应该是考的广度优先搜索)

嵌入式面试常见问题(十一)—各大公司面试题相关推荐

  1. 一些大公司面试题整理

    腾讯面试题 1.int a = 1; int result = a+++3<<2; 2.int a = 2; int result = (a++ > 2)?(++a):(a+=3); ...

  2. 嵌入式面试常见问题(二)

    第三章.网络编程 1 .TCP.UDP的区别 TCP-传输控制协议,提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据. UDP-用 ...

  3. 嵌入式面试常见问题(四)—牛客网

    1.select和epoll的区别 select的时间复杂度O(n).它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据, ...

  4. 各大公司面试题(社招)

    国有企业搬砖三年由余,每日crud, 技术还在 jsp+ssm 每天挣扎不堪. 猛回头看一下现在的应届学子,后生可畏,总感觉我们当时都是渣渣,真是不知不觉中 Java 都已经卷成这样了吗.犹记得老师曾 ...

  5. 面试题:大公司面试题 !=!=未看

    作者:Xoper.ducky 链接:https://www.nowcoder.com/discuss/3043?type=2&order=0&pos=5&page=2 来源:牛 ...

  6. 「面试必背」大数据面试题100道(收藏)

    前言 随着 5G 时代的到来,大数据人工智能产业链又一次迎来了井喷式的爆发,随着岗位需求的不断增加,越来越多的人选择大数据课程,但是没有真正从事大数据工作的人面对企业面试有种无从下手的感觉,面对面试说 ...

  7. 面试 威海艾瑞信息公司 面试题

    今天面试的是威海艾瑞信息公司,是一个对日企业,总体感觉还不错唯一缺点就是工资低了点 面试官是一个东北老哥,其中主要是按照你的简历问的,先问了你是哪里的人(估计比较喜欢山东境内的学生),然后问你父母的职 ...

  8. 操作系统各大公司笔试题汇总

    1.在段页式存储管理中,其虚拟地址空间是() A.一维                               B.二维                                C.三维   ...

  9. C/C++ 大公司笔试题(一)

    1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用 ":: " 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全 ...

最新文章

  1. 阿里巴巴天池大数据竞赛黄金联赛全面开战,全球同步报名,只为寻找最聪明的你!...
  2. ValueError: too many values to unpack
  3. BERT跨模态之后:占领了视觉常识推理任务榜单TOP 2!
  4. asp 连接mysql_如何在ASP中连接MySQL数据库
  5. Xamarin Android Webview中JS调用App中的C#方法
  6. opencv python3树莓派_树莓派4B日志七:Python3上的OpenCV安装
  7. 制作u盘winpe启动盘_U盘启动盘制作失败怎么办 U盘启动盘制作失败解决方法【详解】...
  8. 百度笔试题——开发测试工程师(深圳)
  9. 一行 Python 能实现什么丧心病狂的功能?
  10. Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
  11. H265编码视频流媒体播放器EasyPlayer.js支持9宫格视频同屏播放的写法
  12. linux关闭xorg日志,linux – 挂起后在Xorg环境中恢复键盘设置
  13. eNSP配置(直连/静态/动态路由,DHCP,单臂路由,ACL,NAT,链路聚合,负载均衡,WLAN,备份路由)
  14. 基于Python库surprise的电影推荐系统
  15. 世界十大顶级黑客教父
  16. 数理统计-6.1 点估计的概念与无偏性
  17. JAVA心理测评系统毕业设计,JAVA心理健康评测系统设计与实现,毕设作品参考
  18. 什么是json对象?
  19. pear在php中的用法,php使用pear_smtp发送邮件
  20. pga_aggregate_limit

热门文章

  1. 免费申请通配符ssl证书https证书
  2. IELAB网络实验室 IPv6 还有多远(2)
  3. java inflater_180918-JDK之Deflater压缩与Inflater解压
  4. 移动端@2X 和 @3X图片的处理
  5. tgz文件linux打开,TGZ文件扩展名 - 什么是.tgz以及如何打开? - ReviverSoft
  6. 实施智能制造需要做好哪些准备?
  7. 轻松学习之Linux教程一 ubuntu14.04+windows双系统安装
  8. mysql停留的风_离别之后,我的梦里少了你的温柔,风没有带走,你也忘了停留...
  9. 红书上的几道搜索例题
  10. MySQL存储过程中in、out、inout参数使用实际案例