2013年嵌入式面试题集
常见函数总结
3、memmove
void *memmove(void *to, const void *from, size_t count);
当发生对象重叠时,函数仍能正确执行。
void *memmove(void *dest, const void *src, size_t count)
{
assert( (dest!=NULL)&&(src!=NULL) );
char *tmp_dest=(char*)dest;
char *tmp_src=(char*)src;
if( tmp_dest<=tmp_src||tmp_src+count<tmp_dest )
{// 正向
while(count--)
*tmp_dest++=*tmp_src++;
}
else
{// 反向
tmp_dest+=count-1;
tmp_src+=count-1;
while(count--)
*tmp_dest--=*tmp_src--;
}
return dest;
}
memmove考虑重叠。重叠通常就是三种情况,一是目标区域的首地址落在源区域内;二是目标区域的尾地址落在源区域内;三是两个区域完全重叠。
从结果上来看,只有第一种情况才有可能发生与预期不相同的结果。这时候memmove通常使用反方向复制的方法,从源区域的尾地址开始复制,这样就能避免出现已复制的数据被后续复制覆盖的错误。
常见面试题总结
1. 什么是预编译,何时需要预编译:
答: 就是指程序执行前的一些预处理工作,处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等
4.c和c++中的struct有什么不同?
答: c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private.
5.进程之间通信的途径
答 socket(套接字),共享存储,管道,消息队列,信号量,信号
7进程和线程区别
一个进程至少有一个线程,线程共享进程资源
进程是独立的,线程运行在进程空间。
8 ARM流水线
你可能喜欢
- 嵌入式软件工程师笔试题
- 嵌入式工程师面试题
- 嵌入式C语言
- 程序员面试题
- 数据结构算法面试题
- 语言分析
- 嵌入式软件工程师笔试题(含答案)4页
- 嵌入式软件工程师经典笔试题10页
- 嵌入式软件工程师笔试题17页
- 嵌入式软件工程师笔试题__面试宝典45页
- 嵌入式软件工程师笔试题45页
- 软件工程师面试题嵌入式CC++笔试题(含答案)25页
- 嵌入式系统和linux工程师面试题8页
- 嵌入式软件工程师面试题6页
- 嵌入式工程师面试题--经典18页
- 嵌入式工程师面试题2页
- 最近出的两道嵌入式软件工程师面试题,答对者甚少啊!2页
- 软件工程师面试题嵌入式CC++笔试题(含答案)25页
- java程序员面试题基础部分3页
- java程序员面试题(基础部分)4页
- 程序员面试逻辑题解析218页
- java程序员面试题及解答9页
- C程序员面试题7页
- 程序员面试题精选59页


