一面:
面试形式:一个技术官对一个面试者,对坐(个人猜测,应该是项目负责人,不是底层的一线开发人员)
请来一个简短的自我介绍--(上面的自我介绍,但因为一开始稍微有点紧张,没有很流利)--嗯,之前在创业公司里面担任什么工作--嵌入式软件工程师--嗯,那具体做过什么项目呢--两个,“读卡器”和“吊扇”,读卡器是两块stm8芯片,一块主控一块存储秘钥,外接一个fm17520芯片读取非接触式ic卡,主控通过iic访问存储芯片,获取相应秘钥,校对正确后,ic数据通过spi回传给主控,主控通过uart制定的通信协议传给pc
usrt的波特率,你设置了多少--9600,不能太快,之前尝试过使用115200但后来改掉了--太快会怎么样(面试官笑了,个人认为有两种:这个问题面试官也知道,说明是个好问题;这个问题明显是装逼装出来的,面试者你就瞎bb)--会造成数据丢失--为什么会数据丢失--这点我现在还没有想明白,那时候是通过询问公司里面的师兄得知的,我是发现了这个问题(链接)(个人猜测:usb转uart芯片的传输速率限制、uart并不能真正达到这个速率)
嗯,那这个项目,你用什么语言实现的(我擦,大佬,我还有一个项目你没问啊)--C语言,毕竟是裸板,C是最好的选择,现有库,芯片提供商推的IDE,都是原生的C环境,用C最适合。
IO口有多少种工作模式--输入输出两种,输入里面有有无中断两种,各自又有浮空上拉两种,输出有推挽开漏两种
讲一下中断的概念--上操作系统的吗?--嗯~~~,你就直接讲中断概念就可以了--根据用户预先设定的使用场合,满足中断响应条件、正确的中断源、已经提前编写中断服务子程序,中断尽可能地写地小、短、延时低(翻水,回答有点乱),不要能使用全局变量(面试官笑了,个人猜想是:可以,不过不全对),噢不对,可以使用全局变量,但这是根据用户使用场景决定,但尽可能地不要使用全局变量。(面试官才点了点头,感觉这个补刀可以有)
嗯,那你能说一下死锁吗--死锁有四个条件,互斥(第一个忘记了)、占有且等待、不可剥夺、循环等待,四个条件同时成立,就会造成死锁--嗯,那你说一下进程与线程的区别,当时没有完全回答出来,50%-60%吧--嗯
嗯,那你实现一个算法:将一个十进制的数转为十六进制--请问,这个十进制的数有多大(面试官听到就笑了,两种:这个家伙不错,考虑周全;尼玛还用问吗,都说一个数咯,什么可能都有的呀)--嗯,你自己估计--很大的数吗?--嗯,有可能,也坑内是很小--哇,爆炸(当时好像是直接这样说了)(最终没有完全写出来,但是把所有的情况和关键的转换子函数表述或写出来了,面试官表示认可)
二面:
面试形式:一个技术官对一个面试者,对坐(个人猜测是技术总监,毕竟下面问的问题,直接见血)
请来一个简短的自我介绍--(上面的自我介绍,已经很流利了)
什么样的创业公司--社团师兄创立的--不是,告诉我公司名字--广州xxxx科技有限公司,(当时实际上是忘记的)--做什么的--做智能家居的,(我擦,实际是做智能硬件的,紧张回答错了)
嗯,介绍一下“读卡器”这个项目--用了两款个stm8芯片--(马上被打断)为什么使用stm8--因为价格、资源已经可以满足这款产品的所有功能的实现--用到了什么资源--定时器、看门狗(但是没讲)、协议接口(iic、spi)--用到什么协议--iic、spi--iic用的速率是多少--标准的100khz--真是有100khz吗--额(一时间没能想到,但也继续讲下去了),是没有的,尤其像模拟iic,这肯定是没有,但我这次使用的硬件iic,它的速率不会有太大差距。我之前做的时候没想明白,但后来想明白的时候已经是大二下学期了,没有设备让我测试。
好,如果,现在有一个需求,让你设计:从设备主动发起一个信号,主设备来响应,因为iic的通信只能是主设备发起,你怎么来设置(这其实是面试官提示)--可以主机上面做一个循环,间隔1ms/10ms发送一个请求信号,相当于握手命令,也相当于在iic协议上面搭载一个用户协议--(面试官霎时间笑了)那你这样多浪费呀--额,对,确实是挺浪费的,那请问,从设备有多少个--未知,你来设定--全部参数都由我来设定?--(面试官没有回答,但肯定地点头了)--(过了10秒钟,可能比这个还少,面试官已经知道我回答不出来了,直接下一个问题了)
那你之前这个功耗是怎么去控制的--降低芯片频率--将到多少--2MHz--然后关闭time、adc,因为这两个在运行过程,都有1点多ma的电流,也会进入halt模式,这是最省电的,同时也要将io口设置为输入浮空,除iic两个引脚外--为什么是输入模式--因为在实际测试过程中,输入浮空最低的,输出的时候有800uA--不是,你还没回答我的问题:为什么是输入浮空时,电流最低--额(翻水,我才明白他要的是理论,也就是公式等去证明),因为输入的时候不需要供电,所以无需消耗能量。--嗯,(面试官,面无表情地嘲讽着我这菜鸡:你就吹,我听着)
最近有研究什么吗--最近在弄一个视频编解码/流媒体的东西,芯片用海思、使用rtmp推流--用什么编码--h.264/h.265--
linux学得怎样--基本的命令、操作没问题,最近正在弄一个进程间通信-循环缓冲--为什么样用循环缓冲区,循环缓冲区是怎样的,是环形的吗(这位技术)--因为要把编码后的码流通过rtmp推流到服务器,所以需要建立一个通信区来交换数据
告诉我,这段代码的运行结果是什么--无定义--无定义是什么意思,输出无定义三个字吗
你写一个可以编译通过的strcpy,返回值是char *,注意,是需要可以编译通过的,请注意错误处理。--my_strcpy--你这里面,实际上,获取的是一个零,因为用户往往输入的是一个dest为空的指针,所以造成下面的条件都不成立,思路错了,下面都错。--这里面,如果条件不成立,你就直接不复制了?那实际上还是可以复制一部份的呀,这里面,你应该问一下我,是否需要复制,或者丢弃。--嗯,假设上面都正确,但现在最终返回值也是不正确的,不能够得到一个正确的值,想一下,告诉我,为什么
你之前参加比赛,你是怎么跟队友合作的--嗯,首先他们信任我--哈(会心一笑),这是必须的,但是,信任是有条件的、有前提的--嗯嗯,我知道,但我们是同一个实验室的,我们一起生活--哈(会心一笑),一起生活不代表着信任,相互信任是不能以生活来判定--嗯嗯,确实,但是他们知道我一直都在实验室,并且一直都在学习,而且方向是嵌入式软件
嗯,那今天的面试就到此为止吧,你还有什么问题要问我吗?--嗯,我想问一下,cvte里面优秀员工的效率是怎么样的,因为我最近也在思考这个问题,想要提高我自己学习的效率,所以我想问这样的问题--我不知道你为什么强调效率这个问题--因为我想更快更好的解决问题嘛,工程师的工作都是在解决问题,我想要掌握更好的办法--嗯(暂时不明白他为什么还要表示承认我的观点),但我不是很赞同你所说的高效率就是好的,相反,按我经验来说,往往造成我们效率低的,正是因为质量不过关造成效率低的,所以的话,我认为质量才是第一位的--嗯嗯,是的,我正是这个意思,在确保质量过关的情况下去提高我们效率--嗯,那没有别的问题了吧--是的--好,那今天晚上8点后就会有结果,面试结束--嗯呢,好的,谢谢您(瞬间装逼)
HR面:
面试形式:二个HR对三个面试者,对坐
请告诉我你的手机后四位?
昨天的面试,感觉如何,给自己评个分,满分10分,为什么?
请告诉我,你的理想是什么?
你父母的性格是怎么样的,你觉得你更想谁?
父母对你有什么期待?
你最佩服的人是谁?
宿舍有什么事情,不一定要讲舍友?
工作地点、工作时间、工资?
如果面试不通过,你怎么办?
你最不喜欢的一件事情是什么?
除cvte之外,你还想去那家企业?
嗯,面试结束了,有什么疑问吗?