嵌入式每日30题

1. 结构体大小如何计算?
2. 宏OFFSET的作用是什么?如何求出结构体中一个成员的内存偏移量?
3. 结构体内存对齐问题,如何解决因为对齐产生的内存碎片?
4. C++容器:vector和map的了解。
5. C++构造函数和析构函数的理解,析构函数的作用,构造函数的种类,移动构造函数。
6. 虚函数、纯虚函数、虚函数表。
7. C++虚函数表的具体内容。
8. 函数回调的实现原理。
9. C++的四种类型转换。
10. C++智能指针。
11. strcpy和strncpy的区别,手写strcmp,实现memcpy。
12. 堆栈溢出和内存泄漏,排查和避免方法。
13. 数据结构的介绍。
14. 迭代器的作用,常见容器的底层实现。
15. 平衡二叉树的特点。
16. 变量声明和定义的区别,extern关键字。
17. 多态的概念和实现。
18. C++继承关系。
19. C/C++区别。
20. 动态链接和静态链接。
21. STL容器的使用。
22. 虚函数实现多态的原理。
23. 内存管理:如何管理1G内存?如何实现动态内存分配?
24. 共用体的作用。
25. 类定义在64位上占多少字节?加入虚析构函数后的情况。
26. 头文件重复包含解决方法。
27. 深拷贝和浅拷贝的区别。
28. 多线程如何保证线程安全。
29. 链接过程中涉及的文件类型。
30. 如何将左值强制转换成右值。
答案附在面经中
#嵌入式##面经##牛客解忧铺##23届找工作求助阵地#
全部评论
1. 结构体大小计算需要考虑字节对齐问题,一般按照成员变量类型中最大的对齐字节数进行对齐。 2. OFFSET宏用于计算结构体中一个成员的内存偏移量,通过将成员变量的地址减去结构体的地址得到。 3. 内存对齐问题可以通过编译器提供的编译选项进行控制,如#pragma pack()等。 4. vector和map是C++中的容器,vector用于存储线性表,map用于存储键值对。 5. 构造函数用于初始化对象,析构函数用于释放对象资源。移动构造函数用于移动对象而不复制。 6. 虚函数、纯虚函数和虚函数表是C++实现多态的关键技术。 7. 虚函数表是一个数组,每个元素都指向一个虚函数的地址。 8. 函数回调是通过函数指针实现的,将函数指针作为参数传递给另一个函数,然后在该函数内部调用函数指针所指向的函数。 9. C++的四种类型转换包括static_cast、dynamic_cast、const_cast和reinterpret_cast。 10. C++智能指针包括shared_ptr、unique_ptr和weak_ptr,用于自动管理内存资源。 11. strcpy和strncpy的区别在于strcpy不会检查目的地址的空间大小,而strncpy会检查。手写strcmp实现字符串比较,memcpy实现内存拷贝。 12. 堆栈溢出和内存泄漏是常见的内存问题,可以通过代码审查、单元测试和内存泄漏检测工具进行排查和避免。 13. 数据结构包括线性表、树、图等,用于组织、存储和管理数据。 14. 迭代器是STL容器的遍历工具,常见容器的底层实现包括vector、list、deque等。 15. 平衡二叉树的特点是左右子树高度差不超过1,用于实现高效的查找、插入和删除操作。 16. 变量声明和定义的区别在于声明只是告诉编译器变量的类型和名字,而定义则是为变量分配内存空间。extern关键字用于声明一个全局变量。 17. 多态是指一个接口可以有多种实现,通过虚函数和虚函数表实现。 18. C++继承关系包括单继承、多继承和虚继承,用于实现代码重用和扩展。 19. C/C++区别在于C++增加了面向对象、模板和异常处理等特性。 20.
1
送花
回复 分享
发布于 05-15 09:01 AI生成

相关推荐

头像 头像
05-13 21:44
已编辑
算法工程师
1. 如何确保函数在 `main` 函数之前执行?2. 为什么在C++中析构函数必须是虚函数?3. 为什么默认的析构函数不是虚函数?4. C++中析构函数的作用是什么?5. 为什么析构函数可以是虚函数而构造函数不能是虚函数?6. C++中静态函数和虚函数有何区别?7. 函数的默认参数在C++中是如何实现的?8. 什么是函数占位参数?9. 函数重载的满足条件是什么?有哪些注意事项?10. 虚函数表是如何实现多态的?其原理和作用是什么?11. C语言中的函数调用是如何进行的?12. 封装、继承和多态的概念分别是什么?13. 什么是深拷贝和浅拷贝?14. 什么是友元?15. 结构体和类在C++中有什么区别?默认的访问权限是不同的?16. 构造函数和析构函数的作用是什么?17. CPU、MPU、MCU、SOC、SPOC的区别是什么?18. 什么是交叉编译?为什么需要交叉编译?19. 基于RAM和基于ROM的嵌入式运行方式有什么区别?20. 哈弗结构和冯诺依曼结构分别是什么?21. ARM流水线技术是什么?22. ARM有多少32位寄存器?23. ARM指令集分为几类?24. ARM处理器有几种工作状态?25. 在ARM体系中函数调用时参数是如何传递的?26. 什么是锁相环?27. 中断和异常有何区别?28. 中断和DMA有什么区别?29. 中断的响应执行流程是什么?30. 中断和轮询的区别是什么?31. 如何统计一个整数的二进制表示中1的个数?32. 如何在不使用第三个变量的情况下交换两个变量的值?33. 给定一个整型变量a,如何设置a的第3位?如何清除a的第3位?34. 什么是虚函数?如何实现多态?35. 什么是纯虚函数?36. 在嵌入式系统中,如何确保函数在 `main` 函数之前执行?37. 为什么C++中析构函数必须是虚函数?38. 解释C++中析构函数的作用。39. 什么是函数占位参数?它有什么作用?40. 什么是ARM体系结构中的CPU、MPU、MCU、SOC和SPOC?答案整理到面经中  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
查看39道真题和解析
点赞 评论 收藏
分享
3 11 评论
分享
牛客网
牛客企业服务