文本描述
艾默生面试题
1. C++:指针与引用的区别?C++输入输出库函数与C有何不同?
2. strcat函数的实现?不允许调用任何库函数
3. 实现字符串处理函数(说出思路即可):
统计input字符串中各单词的出现频率,由高到低排序输出为output(对于频率相同的,按原顺序不动)。
调用方已开辟了output数组,并确保了缓冲区足够大,不用考虑溢出问题。
char *input = "this is life that is hope";
char output[] = "is this life that hope";
void sort_string(char *input, char *output)
{//请实现//提示:从input字符串里,解析单词,存入链表,链表结点应包含单次出现次数这一成员,按成员出现次数对链表排序输出。
}
4. I2C协议,数据格式?开始、停止条件?速率?
SPI协议,简要描述。
5. 驱动里的input子系统?sensor、camera、LCD驱动有没有接触过?
6. 程序挑错:malloc了一段内存,但是没有释放。
7. 程序挑错:
char a[5];
strcpy(a,"hello");
a[5]数组无法容纳"hello"(最后有一个\0),会溢出。
8. 程序挑错:
char a[10];
strncpy(a,"hello",5);
没有拷贝最后一个\0,导致字符串a没有结束符。
9. static局部变量的使用。
全局变量与局部变量重名,结果如何?
10. 实现两个字符串表示的数字相加的函数:
char *a = "123456789123456789"; //此数字可能很长,无法用基本数据类型如long型来表示。
char *b = "987654321987654";
char *add(char *a, char *b)
{//请实现
}
11. TCP/IP协议,各层分别是什么?作用如何?TCP/IP的三次握手?
12. linux系统的启动过程?u-boot的启动过程?
13. linux启动后的第一个进程是?如何使一个程序开机启动?
14. 编写一个简单的makefile,编译使用了多线程的代码。
15. 编写一个简单的shell脚本,完成大文件的拷贝。
16. USB HID?CDC?
17. 32位系统和64位系统有什么区别?对于基本数据类型(比如int型)来说,所占的内存大小有没有区别?