形式:视频面试
时长:半小时
- 首先是3分钟的自我介绍
- 提问项目相关的内容
- 项目中遇到的困难,是如何解决的?
- 回答上个问题时提到了堆空间,面试官让我详细讲一讲栈和堆
- 在局部数组中定义一个大数组可以吗?很大的数组,比如2048
我的回答:应该是可以的,因为定义数组时,数组的值实际是存在堆区的,只是把指针放在栈区。
面试官纠正说:其实是不可以的,因为只有使用malloc申请的数组是你说的那样,没有使用malloc申请时,会爆栈。 - 如何如期完成项目?
- 有没有遇到怎么也解决不了的问题,那个时候你是怎么解决的?
- 怎么看待导师布置给你的任务?比如难度是否过高?同时布置多个任务怎么办?
- 你在项目中有提到开发底层驱动,请讲一讲你开发驱动的过程,结合实际例子
- I2C你刚刚也说有开发过?你实现的最大通讯速度是多少?
我讲了自己的开发过程和使用的情况,没有测过最大速度。 - I2C的通讯速度有几种?
我答有3种,标准模式有300-400kb/s,快速有4Mb/s,还有一个更快的但是不记得了,然后又说了它是半双工的,又两根线,分别是SCK和SDA,讲了具体的时序。(这里速度回答错误了,标准是100kb/s,快速是400kb/s,高速时3.4Mb/s,这里面试官没有纠正我)。 - 你刚刚讲了I2C的起始位和停止位,那你知道使用I2C传输数据时,起始传输的数据是什么?
这个问题我没有回答出来,当时想错了,想成8位数据中的第一位是什么,但是第一位也不代表什么,我就回答说我不知道,然后面试官就告诉我说是主机或者从机的地址。这里为了挽回面试官对我的影响,我就接过话茬说:I2C最开始设计的时候,地址位是7位,现在已经发展到10位寻址了。面试官又接了话说,你说得对,现在使用的比较多的是8位,当从机较多的时候会用到10位寻址。 - SPI的时序你了解吗?
- 你在校期间都学过什么语言?
我说了学了那些语言,主要擅长C - 数据结构有学过吗?回答有。讲讲数组和链表?
- 如何使用链表,使用链表的注意事项?
- 指针了解吗?了解。定义一个指向结构体的指针*p = 某某结构体,能直接使用p->结构体元素,这种方式访问吗?
这里我回答不可以,因为P是个地址而不是结构体元素。
面试官说这里他可能没有表达清楚,他想问的其实是*p->某某结构体元素这样可以吗,想考察的是使用指针前需要先进行判空操作。
这里我就接话了,说对的,就像前面进行链表的增删改查是需要先进行判空操作一样,而且最后把NULL放在左边,这样少了一个=就会报错。 - 评价一下你自己的C语言掌握情况,是优还是良,还是一般呢?
优 - 我对你的情况已经了解了,你有什么想问的没有?
- 问了新人的培训方式和有没有定期的小组代码交流会。
全部评论
(1) 回帖