艾默生面试题
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"(最后有一个' '),会溢出。
8. 程序挑错:
char a[10];
strncpy(a,"hello",5);
没有拷贝最后一个' ',导致字符串 a 没有结束符。
9. static 局部变量的使用。
全局变量与局部变量重名,结果如何?
10. 实现两个字符串表示的数字相加的函数:
char *a = "123456789123456789"; //此数字可能很长,无法用基本数据类型如 long 型来表
示。