目录

  • 1 个人介绍
  • 2 笔试
    • 2.1 单选题
      • 2.1.1 C语言
      • 2.1.2 数据结构
      • 2.1.3 计算机与操作系统
      • 2.1.4 网络通信
    • 2.2 填空题
      • 2.2.1 C语言与数据结构
      • 2.2.2 网络通信
    • 2.3 问答题
      • 2.3.1 嵌入式基础知识
      • 2.3.2 C语言与数据结构
      • 2.3.3 C编程
  • 3 专业面试(30min)
  • 4 HR视频面试(25min)
  • 5 最后

1 个人介绍

本人双非渣硕,就读于重邮的信息与通信工程。研一主要上课和参加一些比赛,获得过奖学金和
几个省级以上的科技竞赛奖项。研二主要做项目,基本都是工程类项目,因此本人不是学术大佬。在项目中主要负责终端,个人技能基本都是嵌入式开发。因此这个驱动软件工程师我也是符合的,虽说驱动也只是入门水平,但也要试试嘛,也算挑战一下自己。

2 笔试

先给大家看看我耻辱的成绩。因为当天还有赶着其他面试,我火急火燎地做了就提交。原本最熟悉的C语言和嵌入式方面的知识居然得0分。以至于后来面试的时候面试官都问我,为什么你C语言得0分,所有面试过程中又增加了这方面的考察,这个后面再说明。
京信通信是我见到过第一家还能看到笔试成绩的公司,而且笔试题目也很典型,所以我自己也复盘了,将做错的题目都重新做了一篇。

2.1 单选题

2.1.1 C语言

1.以下程序的输出结果是
main()
{int x=10,y=10,i;for(i=0;x>8;y=++i){printf("%d,%d",x--,y);}
}
A:10,1 9,2
B:10,10 9,1
C:9,8 7,6
D:10,9 9,0

考生答案:A
正确答案:B
复盘
for(单次表达式;判断表达式;末尾循环体)
{
中间循环体;
}
执行流程应该是先执行单次表达式,然后是判断表达式,如果符合条件那就先执行中间循环体,最后再执行末尾循环体!因此第一次输出时,还没有执行y=++i语句。

2.
#pragma pack(2)
struct example
{char a;int b;char c;
};
sizeof(example)的结果等于
A:6
B:8
C:12
D:16

考生答案:A
正确答案:B
复盘
#pragma pack (2)表示两字节对齐。具体考察结构体元素对齐访问。
char a 占2字节
int b 占4字节
char c 占2字节
sizeof(example)是8字节

3.若有以下定义和语句:
int a[]={1,2,3,4,5,6,7,8,9,10},*p=a;
则值为3的表达式是
A:p+=2,*(p++)
B:p+=2,*++p
C:p+=3,*p++
D:p+=2,++*p

考生答案:D
正确答案:A
复盘
这里错的原因有两个点没搞清楚:1、p++和++p,那个先赋值再++;2、指针引用和++那个优先级更高。答案是:1、p++先赋值后自加,++p先自加后赋值;2、++的优先级高于指针引用。

A:p+=2,*(p++);输出3,P先指针引用,后赋值,最后指针++
B:p+=2,*++p;输出4,指针p先++,后指针引用,最后赋值
C:p+=3,*p++;输出4,p先指针引用,后赋值,最后指针++
D:p+=2,++*p;输出4,p先指针引用,后引用++;最后赋值
4.用变量a给出“一个指向有10个整形数数组的指针”的定义
A:int a[10]
B:int *a[10]
C:int (*a)[10]
D:int (*a)(int)

考生答案:B
正确答案:C
复盘

B:int *a[10];是数组指针,a先和[]结合,再和*结合
C:int (*a)[10];是指针数组
D:int (*a)(int);是指针函数
其实有个窍门,“先读近,再读远”。
例如int *a[10],a和[]近,那么这是数组,前面还有*,因此这是数组指针。
再例如,int (*a)[],a和*近,那么这是指针,后面还有[],因此这是指针数组。

2.1.2 数据结构

5.在一课二叉树上第8层的节点数最多是__
A :8
B:16
C:128
D:256
考生答案:D
正确答案:C
复盘
第8层应该是2的7次方而不是2的8次方。
6.采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为__
A:n
B:(n+1)/2
C:(n-1)/2
D:n/2
考生答案:B
正确答案:B
7.一下那种数据结构属于非线性数据的
A:队列
B:线性表
C:二叉树
D:栈
考生答案:C
正确答案:C
8.数据结构
函数内部变量static in count放在()
A:数据段
B:代码段
C:堆栈
D:堆
考生答案:A
正确答案:A
具体考察:内存管理、static关键字作用

2.1.3 计算机与操作系统

9.一个10位的AD转换器,转换为+5V电压时,转换精度是
A:0.5V
B:50mV
C:3.5mV
D:4.9mV
考生答案:D
正确答案:D
10.计算机CPU的中断响应指的是()的时间
A:从发出中断请求到中断处理结束
B:从中断处理开始到中断处理结束
C:CPU分析判断中断请求
D:从中断请求到开始进入中断处理程序
考生答案:D
正确答案:D
11.虚拟存储器的最大容量
A:由计算机地址结构决定
B:内、外存容量之和
C:由作业的地址空间决定
D:可任意决定
考生答案:A
正确答案:A
12.下面那个条件不是死锁的必要条件
A:互斥、不可剥夺条件
B:内存泄露条件
C:请求和保持条件
D:环路等待条件
考生答案:B
正确答案:B
具体考察:死锁的四个必要条件

2.1.4 网络通信

13.MAC地址由多少位二进制组成
A:4
B:6
C:32
D:48
考生答案:D
正确答案:D
14.NAT技术解决了IPv4地址短缺的问题,假设内网的地址数是m,而外网地址数n,若m>n,n>1,则这种技术叫做
A:动态地址翻译
B:静态地址翻译
C:地址伪装
D:地址欺骗
考生答案:B
正确答案:A
15.IPv6地址为多少位长
A:32
B:64
C:128
D:256
考生答案:C
正确答案:C

2.2 填空题

2.2.1 C语言与数据结构

16.求以下变量的长度
void func(char str[100])
{sizeof(str)=?
}
void *p=malloc(100);
sizeof(p)=?
char str2[]="Hello";
sizeof(str)=?sizeof(str)=【填空】;
sizeof(p) =【填空】;
sizeof(str2)==【填空】;

考生答案
1.100
2.4
3.5
正确答案
1.4
2.4
3.6
复盘
sizeof(str)=4,其实str只是一个指针,指针大小在32位机就是4字节
sizeof(str2)=6,sizeof是整个字符数组长度,包括’\0’;如果strlen(str2)才等于5
17.用变量a给出下面的定义
1)一个整型数;【填空】
2)一个指向指针的指针,它指向的指针是指向一个整型数;【填空】
3)一个有10个指针的数组,该指针是指向一个整型数的;【填空】
考生答案
1.int a;
2.int **a;
3.int *a[10];
正确答案
1.int a;
2.int **a;
3.int *a[10];

2.2.2 网络通信

18.UDP是【填空】的、【填空】的传输协议。TCP是面向连接的、可靠的传输协议。
考生答案
1.无连接
2.不可靠
正确答案
1.无连接
2.不可靠
19.TCP/IP协议族由5层组成:物理层、数据链路层、网络层、传输层和应用层。IP是网络层协议,ICMP是【填空】协议,UDP是【填空】协议。
考生答案
1.网络层
2.传输层
正确答案
1.网络层
2.传输层

2.3 问答题

2.3.1 嵌入式基础知识

20.请从硬件层面描述一个嵌入式最小系统的主要组成部分
考生答案
电源电路、时钟、MCU
正确答案
CPU、电源、时钟、RAM、Flash、调试串口、网口、外设接口(SPI/USB/I2C)

2.3.2 C语言与数据结构

21.关键字volatile有什么含义?并给出三个不同的例子。
考生答案
volatile就是可变的,也就是该关键字修饰的变量可能会改变,是不稳定的,确保编译器不会对它进行优化,因为每次访问都需要重新访问该变量地址。
应用场景1:一些硬件的寄存器,如果有多个地方去使用的话需要定义volatile
应用场景2:多个线程可以访问的公共变量,需要定义为volatile
正确答案
volatile的作用是:作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。简单地说就是防止编译器对代码进行优化。下面是volatile变量的几个例子:
1)并行设备的硬件寄存器(如:状态寄存器);
2)一个中断服务子程序中会访问到的非自动变量(Non-automatic variables);
3)多线程应用中被几个任务共享的变量。

2.3.3 C编程

22.嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaabb。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。
考生答案

int *p=(int *)0x67a9;
*p=0xaabb;

正确答案

//参考答案1
int *ptr;
ptr = (int *)0x67a9;
*ptr=0xaabb;
//参考答案2
*(int * const)(0x67a9) = 0xaabb;

3 专业面试(30min)

1.自我介绍。
2.我看你笔试上面的C语言的题都不太对啊(尴尬,我现在应该怎么表达C语言是我比较熟悉的技能呢)
3.你对指针了解的多吗?
我说挺熟悉的,准备开始谈谈指针在嵌入式中常见的用法,但面试官听到我说挺熟悉的酒打断我了,直接问下一个问题。

4.在二叉树上第八层的节点数是多少。
2的7次方,128.

5.MAC地址是多少位的?
48位。

6.IPv4和IPv6的MAC地址是一样的吗?
对不起,这个不是很了解。但是我知道IPv4的IP地址是48位,IPv6的IP地址是128位,但是MAC地址都是48位吧,应该跟IP无关。(当时不是确定,但是证明当时回答是正确的)

7.Linux你简历上写熟悉?你熟悉那些方面?
主要是进程调度、进程通信、文件系统还有简单的驱动移植

8.你简历上写的项目是跑在哪里的?CPU是什么核的?
用过英飞凌和三星的开发板,英飞凌的是ARM9,三星的是ARM7。

9.ARM7和ARM9性能上有什么区别?
对不起,不是很了解。

10.我看你简历上与好几个项目,上面有哪些是你真正开发的?
既然都写在简历上,当然都是我参与开发的啦。都给面试官介绍了我们的项目以及我在项目中负责的工作。

11.你说接触过驱动,你接触过哪些驱动?
WIFI网卡和Sensor的驱动移植

12.你在项目XXX中主要负责了那一部分的工作?
主要介绍了项目存在的问题,然后我怎么解决的。主要工作就是Sensor驱动、视频采集、视频传输。

13.你们的设备是自己画板开发吗?是不是自己画的PCB?
前期直接用开发板。后期我们自己画电路图,PCB交给外面的工程师去做。

14.SPI几根总线?
4根

15.那四根?
发送、接收、时钟和片选线。

16.如果只有一个外设只用三根线行不行?
可以,那就不需要片选线了。

17.那这时候外设的片选线怎么处理?
直接接地
(其实我不确定,反正不是接地应该就是悬空,蒙一个吧。这个问题到现在都不是很明确。但是看到一篇博客说片选是否可以接地跟设备有关,不同的外设有不同的要求。平时经验在STM32中的片选好像本来就有问题,因此我相信这个SPI的片选有争议,各个厂家可能不一样。)

18.IIC有那两根线。
时钟线和数据线。

19.IIC怎么确定一个信号的开始和结束呢?
通过两根线的不同状态去区分8种状态。时钟线为高,数据线拉低是开始,数据线拉高是结束。

20.你在调试过程中有没有遇到过什么难题?
我觉得是硬件和软件两个调试同步进行,软件不正确无法验证硬件功能,硬件错误更不能验证程序。往往调试软件时候,出现问题,调了半天,原来不是软件问题,而是硬件问题。因此硬件和软件同时调试往往比较耗时间。

21.那这个问题你怎么解决的呢?例如实际的例子,例如SPI去读外设寄存器值读不回来,你怎么去定位错误?
如果我用的板子有硬件SPI那就不用考虑硬件问题,只需要考虑软件问题。SPI无法读取数据,那首先就检查SPI自身的读写是否有问题。(这里大概绕了3分钟,面试官一直问我你怎么检查,具体是什么步骤,一开始我没get到点,后面才回答上)我可以用一根杜邦线将SPI的发送和接收端口短接去测试,通过自己写自己读检查读写是否正常。如果确定自身硬件和软件都没有问题,可以正常读写。如果还是无法读取数据,那么很可能就是时钟对不上了。

22.这时候有什么方法去查询对方的时钟设置呢?有什么工具?
首先查手册,一般手册会有说明。如果没有的话可以用示波器或者逻辑分析仪去查看。这些都没有最笨的方法就是排列组合都试一下,反正时钟的极性和相位就是4种可能。

23.那逻辑分析仪你是怎么触发外设的信号?
逻辑分析仪直接接上信号就可以分析了。(这里和面试官讨论了大概2分钟,原来我是没有get到他的点。我想的是逻辑分析仪分析主设备的SPI信号,因为主设备的SPI是我控制的,当然有信号输出。面试结束后,才发现人家问的是怎么检测从设备的信号?因为外设可能没有信号输出,因此怎么检测呢?其实这个问题到现在我都不清楚,也请大家多多指教)

4 HR视频面试(25min)

1.请用三分钟介绍一下自己。
2.你说一下自己的优点和缺点。
3.你怎么理解自驱力,在你身上能找一个例子体现吗?
4.平时你学习这么忙,我看你还是篮球队的,怎么能够安排这些时间?
5.请谈一下你对5G的看法。
6.你现在有哪些offer,对薪资有什么期待?

HR面试大家就可以自由发挥啦,上面这些都是常见问题啦,但是也有不一样的地方。首先,平时很少用微信视频面试,这是第一次,估计他们也需要看一下个人形象和言行举止吧。其次,3分钟的自我介绍也是我见过最长的,但是我当然都准备了30s、1min和3min的自我介绍。最后,京信通信这家公司主要做天线这方面,那5G肯定也是未来最重要的业务,所以问了关于5G的内容也是理所当然的。

5 最后

最后也是拿到offer的。这家公司吸引我的主要是因为在广州,我家又是广东的,离的比较近。而且听说工作时间是7.5小时,HR也跟我讲基本不加班,可能项目忙会加一两个小时,双休,福利待遇在广州也还可以。不过我还是想选一家平台更大的公司。

京信通信【驱动软件工程师】面经相关推荐

  1. 京信通信成功打造自动化工厂(MES应用案例)

    企业介绍: 京信通信成立于1997年,是一家集研发.生产.销售及服务于一体的移动通信外围设备专业厂商,致力于为客户提供无线覆盖和传输的整体解决方案,于2003年在香港联交所主板上市(2342.HK), ...

  2. 京信通信:数据智能为生产调试“增效瘦身”

    摘要: "数据驱动测试优化,突破自动测试边界,赋能智慧测试新模式."--京信智能制造副总经理葛鑫 "进入车间,映入眼帘的是一条长约20 米的 O 型生产线,产线前三名工人 ...

  3. 【软件工程师学硬件】之 通信

    提到通信,软件工程师并不陌生,但他们更多的是指网络通信,尤其是指socket.你要是和软件工程师说什么串口.SPI.I2C.Modbus.CAN等等什么的,他们也会莫名其妙.俗话说,"隔行如 ...

  4. java实施工程师的求职信_软件工程师英文求职信样本 .doc

    软件工程师英文求职信样本 范文一 Dear Mr. Wickard: As today's economy and competitive pressures place tighter constr ...

  5. 求职信计算机工程师英语,软件工程师英语求职信

    在求职信中要重点突出你的背景材料中与未来雇主最有关系的内容.通常招聘人员对其企业有关的信息最敏感,所以你要把你企业和职位之间最重要的信息表达清楚.下面是小编为大家整理的软件工程师英语求职信,希望对大家 ...

  6. 【CSDN软件工程师能力认证学习精选】Python网络编程(socket编程)

    CSDN软件工程师能力认证(以下简称C系列认证)是由中国软件开发者网CSDN制定并推出的一个能力认证标准.C系列认证历经近一年的实际线下调研.考察.迭代.测试,并梳理出软件工程师开发过程中所需的各项技 ...

  7. J2EE高级软件工程师面试题集

      第一章:J2EE高级软件工程师面试题集 --JAVA基础部分 1.面向对象的特征有哪些方面1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不 ...

  8. 软件工程师/软件测试工程师

    一.软件工程师/软件测试工程师 1.工作职责 负责软件项目.模块的需求分析设计.编码和测试,参与相关质量活动,确保软件设计及实现工作的按时保质完成. 2.职位要求 1.本科及以上学历,计算机.通信.电 ...

  9. Atitit. 高级软件工程师and 普通的区别 高级编程的门槛总结

    Atitit.  高级软件工程师and 普通的区别 高级编程的门槛总结 1. 完备的知识体系 2 2. 编程理论/原理的掌握 2 1.1. 掌握常用的概念(ORM,IOC,AOP,event driv ...

最新文章

  1. DEDECMS站点内容自动更新到新浪微博的方法
  2. SQL SERVER 2008 SN
  3. Kettle转换作业50个案例代码
  4. mysql socket 与IP区别_MySQL本地用IP登陆而非socket
  5. [Hadoop]在Windows上安装Hadoop
  6. IAR for 8051安装教程
  7. 樊昌信 通信原理第七版 第八章思考题
  8. 北京二手房市场价量齐升 上演“大逆转”
  9. 微信小程序开发工作流程
  10. 百度指数-批量查询器
  11. git commit 提交信息写错,怎么更改?
  12. BLOB/TEXT column ‘h_long_varbinary‘ used in key specification without a key length
  13. 万字干货 | 如何从0到1搭建一套会员体系
  14. 一直想写的关于tarjan算法的理解——向struct edge大佬低头
  15. 华为云服务器配置教程
  16. dql聚合函数_sql聚合函数有哪些
  17. Windows10系统下从库中删除文件夹(保留原始位置的文件)
  18. 互联网+大赛评审规则浅析
  19. java获得百度地图驾车距离_如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)...
  20. Default Constructor的构造操作

热门文章

  1. php毕业设计 基于php+mysql旅游景区景点购票系统毕业设计开题报告功能参考
  2. C语言之单引号和双引号
  3. 计算机组成原理分时传送电路设计,计算机组成原理和系统结构实验仪,FPGA设计,上海求育...
  4. 百度地图绘制行驶轨迹、折线上添加箭头、修改地图底色
  5. matlab进行动力吸振器设计,基于有限元法的动力吸振器设计研究
  6. 六点汽车保养小常识 保护爱车必修课
  7. 吹爆的一种深度拷贝方式
  8. 2022年中国半导体设备市场规模达到1728.41亿元,市场迎来新一轮上升周期
  9. 进化:从孤胆极客到高效团队_极客评论:使用Dia作为Microsoft Visio的免费替代品...
  10. kbengine 源代码读