深圳日联科技面试难吗?

双欣欣双欣欣最佳答案最佳答案

本人2019年1月参加日联科技(深圳)有限公司的面试,应聘高级硬件工程师岗位 。经过两轮面试,一轮技术面,一轮管理层面试。

一.第一轮技术面试 面试官:两道题,一道是描述驱动程序的工作原理和核心流程,一道是用c语言完成一个小函数库,题目可以任意选择,但是需要答主给出思路并实现代码。 题一:描述驱动程序的原理和开发流程 回答:这个问题好!让我这个工作5年的老司机来答一下,驱动其实就是操作系统下面一个模块,这个模块要负责管理特定的设备。所以首先就要了解驱动都要具有哪些功能。

1:请求发送:就是能够接收用户态发给我们的指令,比如用户发出打开桌面的命令,我们就要把开启桌面服务的指令发给我们所管理的内核对象,由内核调用具体的功能来完成用户的请求;

2:数据接收:那就是要有地方能放我们要调用的函数的参数和返回值,并且能对这些参数进行初始化,一般来说我们这些参数都是通过结构体来传递,所以要先定义好结构体和变量才能正常收发数据;

3:数据转发:上面说到我们要发什么给内核,怎么发,那么内核就有必要知道我们发了什么给它的上级组件,所以我们必须要把我们发出的信息转发给上层,让上一层可以根据这些信息做出相应的操作;

4:数据保存:有一些信息我们是需要保存起来的,以防万一,比如说当前的状态,或者是一些参数设置,这些东西如果我们手动输入的话,有可能会忘记,所以我们需要保存这些信息以便恢复的时候能用得上去;

5:异常处理:所有的软件都必须要有异常处理机制,因为软件是人写的,人就会犯错,一旦犯错就有可能产生异常,所以我们必须要能处理各种各样可能发生的异常,确保系统能够稳定运行;

6:其他:有些驱动除了要有上面的基本功能外,还会根据具体的不同分为:中断驱动,文件系统驱动,网络驱动等等,因为这些驱动都有一个共同的作用模块,也就是说无论是什么驱动,都要具备上面我说到的功能,不同的是每个驱动针对不同的问题而做出的不同的解决方案而已。

我来回答
请发表正能量的言论,文明评论!