嵌入式面试常见问题(十一)—各大公司面试题_商汤科技嵌入式面试(1)

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;
}


编程题:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

img

img

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)

img

最后

资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!

记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)

img

最后

资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!

更多资料点击此处获qu!!

  • 11
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值