恒玄科技嵌入式软件开发笔试 10-13

《嵌入式软件开发笔试与面试手册》https://blog.nowcoder.net/zhuanlan/jvN8gj

《软件开发笔试汇总》https://blog.nowcoder.net/zhuanlan/0oDWVm

全是简答题

1.写出下面代码的执行结果

int main()
{
	int a= 2;
	if(a & 1 ==0)
		printf("a & 1 == 0");
	else
		printf("a & 1 != 0");
	return 0;
}

 a & 1 != 0

解释:由于运算符的优先级,表达式 1 == 0 首先被计算,其结果是 false 或 0。因此,这个条件实际上变为 if (a & 0),这显然总是为 0(即 false)。

 

2.4字节对齐的32位系统中下,有结构体:

struct TEST

{

char c;

int i;

} *t;

如果t = (struct TEST *)0x1000;那么:

sizeof(t)= 4

t +4= 0x1020

解释:

t 是一个指向结构体 TEST 的指针。在32位系统中,所有指针的大小都是4字节,不论它们指向何种数据类型。因此,sizeof(t) 是4字节。

char c; 占用1个字节,但由于后续的 int 类型需要按4字节对齐,因此在 char 和 int 之间会有3个字节的填充。

对于指针 t,t + 1 增加的是一个 struct TEST 的大小,即8字节。因此,t + 1 将是地址 0x1000 + 8 = 0x1008。所以 t + 4 将是 0x1000 + 4 * 8 = 0x1020

3.指出下面代码中的错误

void init_data(char*p, size_t len){
	int i;
	p =(char *)malloc(len);
	for (i = 0; i <= len; i++){
		p[i]= '0' + i%10;
	}
}
int main(void)
{
	char *m;
	init_data(m,100);
	printf("%s\n", m);
	return 0;
}

 

1init_data(m,100);改为init_data(&m,100); p =(char *)malloc(len);改为p =(char *)malloc(len+1);

2、数组越界:for (i = 0; i <= len; i++)中的循环条件使得当i = len时,代码试图访问p[len],这是越界的。应该使用i < len作为循环条件。

3、没有包含必要的头文件:malloc是在stdlib.hprintf函数需要#include <stdio.h>

4、没有释放内存:代码分配了内存,但在main函数结束时并没有释放它。这会导致内存泄漏。

 

4、指出下面程序printf结果

unsigned short app_gsound_env_mtu;
unsigned char app_gsound_ble_get_mtu(void)
{
	retur

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。

全部评论

相关推荐

08-28 16:31
已编辑
西南大学 硬件开发
已投递今天之前:1、深圳万讯自控股份有限公司-嵌入式开发工程师(瞎投的,没了解过),应届生,进度:已提交。2、中国电子科技集团公司第十研究所-应用软件开发&nbsp;(试一下),应届生,进度:评估中。3、中国航空无线电电子研究所-硬件工程师(试一下),应届生,进度:已提交。4、芯源系统有限公司-嵌入式软件工程师&nbsp;(听说不错,想进),应届生,进度:评估中。5、芯原微电子(上海)股份有限公司-软件工程师&nbsp;(以为芯源,了解了也好像还可以),应届生,进度:评估中(应该是海笔,技术题全英文,很多乱选的)6、国科微电子&nbsp;微信公众号,进度:已被刷。8.251、联芸科技-嵌入式软件工程师(工资很高),BOSS看到,微信公众号投递,进度:已投递。2、自动化所-嵌入式软件工程师&nbsp;(军工,网评感觉不太好),BOSS,进度:hr要了简历。3、恒玄科技-软件工程师(试一下),BOSS,进度:未读。4、旭创科技-软件开发(试一下),应届生,进度:已提交。8.28恒玄科技-软件工程师(试一下),BOSS,进度:已拒绝英杰电气股份-fpga软件工程师(他自己邀我投的,不太了解),应届生,进度:感兴趣,但没消息,主动去问了芯源系统有限公司-嵌入式软件工程师&nbsp;(发笔试,28,海笔),应届生,进度:评估中。为什么大多数都有反应呢?是我姿势有问题?
点赞 评论 收藏
分享
📍面试公司:联想(Lenovo)🕐面试时间:2025年08月23日💻面试岗位:C++研发工程师❓面试问题:一、现代C++特性与语言演进&nbsp;(C++11/14/17/20)1.​​右值引用与移动语义​​:解释std::move和std::forward的区别?完美转发是如何实现的?2.​​智能指针进阶​​:std::shared_ptr的线程安全性如何?std::weak_ptr如何解决循环引用?3.​​C++17/20新特性​​:谈谈你对std::optional,&nbsp;std::variant,&nbsp;std::string_view的理解。C++20的Coroutines(协程)有什么优势?4.​​类型推导与模板​​:auto和decltype有什么区别?模板参数包(Parameter&nbsp;Pack)如何展开?二、内存管理新范式1.​​内存池技术​​:如何自己实现一个内存池?2.​​检测与优化​​:除了Valgrind,还有哪些工具(如ASAN、MSAN)可用于检测内存问题?如何重载new和delete来跟踪内存分配?三、并发编程与现代多线程1.​​原子操作与内存模型​​:std::atomic&lt;T&gt;是如何保证原子性的?解释一下内存序(Memory&nbsp;Order):memory_order_relaxed、memory_order_acquire、memory_order_release的区别和应用场景。2.​​无锁编程​​:什么是无锁(Lock-Free)数据结构?尝试实现一个无锁的队列或栈。3.​​协程​​:C++20的协程底层机制是什么?co_await、co_yield、co_return分别做了什么?四、STL容器与算法新特性1.​​新容器​​:std::unordered_map的负载因子和再哈希策略是怎样的?C++23引入了哪些新容器?2.​​算法复杂度与选择​​:std::sort用的是哪种排序算法?什么情况下会退化为O(n²)?如何避免?五、系统设计与性能优化1.​​设计线程安全的LRU缓存​​:要求get和put操作的时间复杂度为O(1),并考虑高并发场景。2.​​零拷贝技术​​:如何在Linux下使用sendfile或splice实现零拷贝文件传输?3.​​高性能日志系统​​:如何设计一个每秒处理千万级日志条目且保证零丢失的采集系统?六、设计模式与架构演进1.​​现代C++下的设计模式​​:如何使用移动语义和智能指针实现单例模式、工厂模式?2.​​分布式系统概念​​:如何理解分布式缓存中的缓存击穿、雪崩和穿透?如何设计一个防护系统?七、手撕代码题目更新1.​​实现一个移动语义优化的字符串类​​(MiniString),要求支持拷贝构造、移动构造、析构。2.​​实现一个简化版的std::shared_ptr​​(MySharedPtr),模拟引用计数。3.​​实现一个线程安全的环形缓冲区(Ring&nbsp;Buffer)​​,支持多生产者和多消费者。🙌面试感想:联想的C++面试很​​现代化和深度化​​。面试官不仅考察传统的语言特性和底层原理,还会深入询问​​C++17/20的新特性、无锁编程、协程、高性能系统设计​​等前沿话题。手撕代码环节的题目综合性更强,常要求实现一个小型的数据结构或系统组件,并考虑线程安全和性能。项目经验部分问得非常细,要求候选人能清晰说明技术选型、性能优化证据链和故障排查路径。整体感觉面试官水平很高,乐于追问,氛围既有挑战性又很专业。
查看19道真题和解析
点赞 评论 收藏
分享
评论
9
23
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务