2025秋招:嵌入式开发20万的Offer,问哪些问题?(基础内容篇)

情况介绍

说说我们公司的情况吧:中型企业,位于二线省会,主要是做飞行器总体,技术已经成熟,865,无强制加班,嵌入式系统设计不算复杂,总包20万。
老实说这个薪资没有太大竞争力,但相应的能力要求也会放低,一般就问些比较基础的问题,但是因为要求放低,所以要求软硬件都要会(可以偏软或偏硬)
本文会比较长,一次写不完,后面不定期更新,有兴趣的记得收藏,防止再找的时候迷路。

招聘流程

第一轮:HR先筛选一遍学校、成绩、项目经历等;
第二轮:技术负责人约十几分钟的电话面试;
第三轮:HR沟通薪资待遇等。

招聘需求

专业需求:嵌入式技术与应用、软件技术、电子科学与技术、自动化、仪器仪表等相关专业
学历要求:硕士及以上学历

岗位要求

(1)熟悉模电、数电、C语言等相关知识,具有嵌入式系统设计经验;
(2)精通ARM、DSP等硬件平台;
(3)具备电路原理图设计,PCB制作及调试能力,嵌入式程序编写能力。

面试重点

面试重点
图1 面试重点

软件常见问题

1、#ifndef在头文件的作用

#ifndef(如果未定义)预处理指令在头文件(header file)中的作用主要是防止头文件被重复包含(include)多次所导致的编译错误或警告。这是一个常用的编程技巧,用于处理C、C++(以及C#等支持条件编译的语言)中的头文件保护问题。

当一个头文件被多个源文件或多个其他头文件包含时,如果没有适当的保护措施,可能会导致该头文件中定义的变量、函数原型、类型定义等被多次声明,从而引发编译错误。例如,如果在两个不同的源文件中都包含了同一个头文件,而该头文件中定义了一个全局变量,那么编译器会因为变量被重复定义而报错。

2、#if在C文件的作用

在C语言(以及C++等支持预处理指令的语言)中,#if 预处理指令用于在编译之前根据指定的条件来包含或排除代码段。这与在运行时进行的条件判断(如使用 if 语句)不同,因为预处理指令是在编译之前由预处理器处理的,它们不会改变程序的逻辑流程,而是控制哪些代码会被编译进最终的程序中。

#if 指令后面通常跟随一个或多个预处理表达式,这些表达式由宏定义、整数常量、已定义的运算符(如 defined、&&、|| 和 !)等组成。如果表达式的计算结果为非零(即真),则编译器会包含 #if 和后续 #endif 之间的代码。如果表达式的结果为零(即假),则这部分代码会被忽略。

3、volatile关键字的作用

  1. 告诉编译器不要优化
    编译器在编译代码时,会进行各种优化以提高代码的执行效率。然而,对于被volatile修饰的变量,编译器会避免对其进行优化,如避免将其存储在寄存器中,而是每次直接从内存中读取其值。这样可以确保变量的值在程序执行过程中能够实时反映其最新状态。

  2. 应用于硬件编程
    在硬件编程中,volatile关键字常用于修饰硬件寄存器的地址或中断服务例程中的变量。由于硬件寄存器的值可能会随时被外部设备或中断服务例程修改,使用volatile可以确保程序在访问这些变量时能够获取到最新的值,从而避免了由于编译器优化导致的错误。

4、Align关键字的作用

Align关键字的作用主要涉及到内存或数据边界的对齐,它在不同的上下文和环境中可能有细微的差别,但核心目的是优化性能和数据访问的效率。FFT函数:在计算FFT(快速傅里叶变换)时,某些FFT函数要求分配的内存地址必须按照特定的对齐方式(如N*2的地址对齐)进行对齐,这时就需要使用Align关键字来确保内存对齐。嵌入式系统和实时系统:在这些系统中,内存和资源的分配更加严格,使用Align关键字可以更好地控制内存布局,满足系统的实时性和稳定性要求。

5、C指针有哪些类型分别有什么作用

  1. 基本类型指针
    整型指针(int*):指向整型数据的指针。可以用来访问和操作整型变量在内存中的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星火嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值