周末一直在想笔试题目有点难,考得不太好,结果凌晨1点发来通知,早上到实验室发现大家都收到面试通知了。
下午面试,地点就在学校附近的酒店房间,基本一层楼被包下作为面试点,两位HR,一男一女。
上来基本没时间做自我介绍,直接看简历,提问。
可能是我的简历写了很多嵌入式Linux开发,多数为这方面问题。
1、写出尽量多的linux命令
ps、mv、cp、ls、top、vim、gedit、top、git、man,其他的忘了,总之写了有十来个。
接着问列出所有用户进程的命令,直觉应该是ps命令加参数,但没用过,只能老实回答必须要看命令帮助才能答出,可以用ps --help或者man ps查看命令的参数。
2、谈谈Linux驱动开发流程
貌似我也不懂正确的流程,就把我做驱动的流程说了下:
1)裸机调通硬件(比如ARM先用ADS调试)
2)熟悉驱动框架,需要完成哪些函数
3)建立起驱动dummy框架,使得上层可以正确调用
4)逐个完成驱动具体需要完成的函数(比如write函数,read函数等等)
5)整体测试
6)Debug
7)Codereview等等
说到codereview HR似乎很熟悉这个,问我们使用的什么标准,我还真不懂用的什么标准,我们的codereview就是大家坐在一起,看看代码有没有明显的bug,比如格式不好,内存泄露一类的,最后回答了C用的是ANSI C标准,估计HR想问的是我们的CMM等级吧(貌似没有?)。
3、第三个问题是字符串编程
可惜了这个字符串问题,明明知道会考,这次中兴来的太早,还没开始准备,不过说来平时做驱动里面还真是用不到,做应用可能会用到。
一开始叫写strtok,可怜的我一头茫然,没听过这个函数,然后换写strstr,找子串,头脑里大概蹦出用循环一个一个对比,但是当场写出来估计后面也没有面其他问题的时间了,放弃吧,实话实说目前我就会写strcpy,平时项目中不用字符串。
4、字符串不会,于是问我汇编如何,当场冷汗,答能看懂,于是让我用汇编写个2的n次方出来,我都答能看懂了,还要写啊!
2的n次方,第一反应是用左移,左移貌似是LSL,最后憋出来三句汇编
ADR R0,N <--解释这个是地址
MOV R1,RO <--这个写错了,应该是MOV R1,[RO],这个是数值
LSL R2,R1
上面代码的结果应该是R2乘以2的n次方,那R2应该是1才对(忘写了,貌似当时写的也不是R2,记不清了)
不过HR貌似用X86架构,不用ARM,所以问我这是什么汇编,答曰ARM汇编,解释了半天寄存器,然后告诉HR目前所有工作都是基于ARM架构的。
还有继续问函数返回问题,问返回地址,当时在想汇编,答是sp,傻了,应该是lr,但这个和X86架构很不一样,所以应该不是HR想要的结果。
5、Linux内核裁剪流程<--这个俺长做
1)git 官网下Linux内核
2)添加特定处理器的架构代码(mach目录)<--应该说打个patch比较正规
3)选定使用的编译器,arm架构目前主要eabi的编译器
4)make menuconfig 配置内核<--漏了添加各种各样的驱动
5)make
6)大量的debug
7)生成内核
最后还问了问最新的linux内核版本(2.3.33)
4-5基本是穿插进行的,5结束后问我汇编写完没
总之,20分钟的面试很短,2个大题做的不好,估计勉强能及格吧,如果不要我也没关系,来练练手的,相信充分准备后是可以取得更好的成绩。
这次中兴来的这么早,正好让我们了解下笔试和面试的流程,这个暑假可以进行充分的准备,希望自己能找到满意的工作。
我个人目标魔都,虽然老妈一直想让我回家。。<--无奈的眼神
Rockie Cheng
阅读(917) | 评论(0) | 转发(0) |