嵌入式发展前景

嵌入式软件工程师则主要负责嵌入式设备上的软件开发工作,与传统软件工程师不同。传统的软件工程师通常开发PC或服务器上运行的应用程序,所依赖的操作系统大多是Windows、Linux等,而嵌入式软件工程师的工作环境则是诸如Wince、VxWorks、Linux等嵌入式操作系统。

一、嵌入式软件工程师的工作通常包括:

1. 应用程序开发:根据客户需求开发嵌入式设备上的应用程序,如智能家居设备、医疗仪器的用户界面等。
2. 嵌入式开发工具的使用:使用专门的开发工具,如Wince下的EVC(Embedded Visual C++)或Linux下的QT等。
3. 底层软件设计:尽管嵌入式软件工程师的主要工作在上层软件,但有时也需要参与到底层驱动的设计和调试中,确保上层应用与硬件的协调。

二、嵌入式硬件工程师与嵌入式软件工程师的区别
1. 工作性质的区别
嵌入式硬件工程师主要负责设计和搭建硬件平台,为软件工程师提供开发环境。硬件工程师的工作更像建筑师,设计并构建产品的硬件基础;而嵌入式软件工程师则像室内设计师,为产品增添功能和美感。

硬件工程师的工作重点在于确保电路的正常工作以及各种外设和芯片的兼容性,他们在设计时需要考虑以下几个关键问题:

- 功耗:控制电路设计的功耗,特别是在便携式设备中,这一因素尤为重要。
- 电磁干扰(EMI):确保电路不会干扰其他设备,也不容易受到外部干扰的影响。
- 生产可行性:电路设计不仅要满足功能需求,还需考虑生产的便捷性和成本。
- 可靠性:设计要能经受住长时间的使用和环境考验。

而软件工程师则专注于通过编写代码实现产品的功能,他们的主要职责包括应用程序开发、操作系统移植、以及优化软件性能等。

2. 项目依赖的差异
硬件的设计在整个项目中尤为关键。没有硬件,软件无法运行;但是在某些嵌入式系统中,硬件产品可以独立工作,比如简单的单片机应用无需操作系统支持。这种情况下,硬件工程师往往需要负责从硬件设计到功能实现的所有工作。而软件工程师在某些项目中可以缺席,特别是在没有复杂操作系统或用户交互界面的系统中。

3. 就业形式的差异
国内嵌入式软件工程师的就业市场较为广泛,培训资源也多,因此入门较为简单。硬件工程师由于门槛较高,需要深入的电路设计知识和实践经验,因此市场需求相对较少,但核心硬件开发人员的需求始终存在。

一旦硬件产品定型,软件的升级和维护成本较低,因此在后期,企业会更依赖软件开发来提高产品的功能和竞争力,这也导致嵌入式软件工程师在企业中的需求量较大。
我面试看的是大佬的面经,链接放下边了
https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
全部评论

相关推荐

腾讯会议面试,3个面试官一个一个进来,一个人半个小时还多一共2个小时左右。前面两个主要问项目多,最后一个各种八股文和场景题。问了无数个问题,把有印象的记录下来,顺序可能也不太对。**面试官1:**1.说一下h264和h265的区别2.音视频如何同步3.看你做过鸿蒙是应用层还是底层4.鸿蒙编译过程中遇到了什么问题,怎么解决的5.音频使用的什么格式,比原始的缩小了多少倍6.FFmpeg读取音视频的流程是什么7.SRT协议是什么讲一下8.第一个项目你用ffmpeg都做了什么9.你使用的什么协议传输的数据,具体过程讲一下10.第一个项目使用了rtmp第二个使用rtsp为什么11.录制和回放是怎么做的,具体怎么实现的12.你使用的Linux开发还是windows为什么13.Nginx服务器是怎么搭建14.我现在有一个数组里面有正数有负数,我怎么知道某一段连续的几个数里面的最大值是几15.那段实习经历主要做了什么工作16.三次握手和四次挥手解释一下17.struct和类的区别18.能实习不,啥时候可以上岗19.怎么实现多态**面试官2:**1.TCP和UDP的区别2.struct和类的区别3.实习主要做了什么,问的非常具体的那种4.通信协议拟了解哪些5.讲一讲rtmp6.讲一讲rtsp7.讲一讲rtp8.将一下rtcp9.rtmp和rtsp有什么区别10.rtsp和rtp有什么区别11.rtp和rtcp怎么工作的12.tcp跟 他们有什么关系,有什么区别13.第三次握手丢包了怎么识别14.识别到丢包了,怎么补救15.回答了超时重传和前向纠错,然后就问前向纠错怎么纠错16.rtp传输协议怎么计算延时17.一亿个整数排序大概要多长时间,不太会,说了内存大小大约400MB,选择快速排序的算法,复杂度是nlonN,然后就一直追问你给我算一下,具体几分几秒,麻了18.说到了时间复杂度,时间复杂度跟什么有关19.做界面为什么使用Qt不用别的20.鸿蒙怎么编译的21.你的打印机软著是什么,讲一下22.你的调度算法软著是什么讲一下你的这个算法23.音视频编码你怎么优化参数的,为什么24.一个100M的原始音频文件使用aac压缩后大概多小多少,你试过吗25.你的推流拉流项目实在dos窗口还是有界面,为什么不在浏览器里面实现26.鸿蒙应用层开发怎么做的,底层怎么做的27.你做过ios和安卓吗,28.SDK怎么编译,我说根据官方手册的命令,人继续追问,官方命令也不可能比较顺利,你具体遇到了哪些问题,怎么解决的29.FFmpeg你是安装使用的还是自己下载编译源码的,你编译的时候遇到了什么问题30.说一下为什么之前做前端现在又做C++**面试官3:**1.自我介绍一下2.说一下为什么之前做前端现在又做C++3.C语言中,怎么避免头文件重复包含4.C语言中,字符串转Int,int转字符串的方法​使用`atoi`或`strtol`函数         使用`sprintf`或`snprintf`函数:5.C++中又怎么实现​使用`std::stoi`(C++11及以上)         使用`std::to_string`:6.struct和类的区别7.怎么实现多态8.C语言编写的程序,程序怎么知道自己的名字的9.C语言的随机数怎么写10.在C语言中,数组的个数明明是提前已经确定了,为什么还会越界11.怎么在C语言中打印32位比特12.memcpy和memmove你听过吗,有什么区别13.手写printf函数​14.C语言中,怎么取当前的秒和微秒​在C语言中,可以使用 `<time.h>` 头文件中的 `gettimeofday` 函数来获取当前的秒和微秒15.RAII是什么16.RAII除了智能指针还能干什么17.int a =3 和int b = 4 怎么判断是同一种类型,怎么判断他们都是Int类型​在C++中,可以使用`typeid`运算符来判断变量的类型。18.c++ 中我不想让系统帮我进行字节对齐怎么办19.deLete p和 delete p [] 区别20.如果直接使用deLete p删除数组会出现什么情况21.c++ cast转换有哪几种22.动态类型转换(dynamic_cast)为什么是安全的23.c+++   map跟unordered_map 有什么区别24.c+++   map跟unordered_map 的key可以是自定义类型吗,25.c++ 的for函数和C语言的for函数相比,第三个参数都能传哪些东西,新增了哪些26.STL bind函数是什么怎么使用的27.vector怎么实现的28.Lambda函数是什么就具体讲捕获列表,参数列表,返回值这些29.如果父类函数里面有个 foo(int a) ;  foo(string a); 子类函数有个foo(自定义类型)  会怎么样30.怎么阻止实例化对象31.向上转换和向下转换是什么,哪个是安全的为什么32.什么时候出现重载什么时候是重写33.vector容器我一直push,如果满了他是怎么扩容的34.观察者模式是什么,咋么实现的35.vector源码你看过吗,调用了哪些函数36.听过说 quic协议吗37.运算符重载是怎么实现的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务