之前笔试觉得做得还不错,果然很快就通知我去面试,然而面试却很不理想。
我的自我介绍、项目介绍好像都没有引起面试官的兴趣。
而面试问的问题也跟我想象的有很大差异。
- 实现内存拷贝函数 void *memcpy(void *dst, const void *src, size_t n)
讲真好久不接触C/C++和指针看到这种题我是有点懵,然后就一通瞎做,真是不应该……
考察点:
- 首先判断dst、src是否有效(是否为NULL);
- 两块地址重叠的情况;
- 指针是无类型的,拷贝的时候应按字节拷贝,char正好是一个字节。
void *Memcpy(void *dst, const void *src, size_t size){
char *psrc;
char *pdst;
if(dst == NULL || src == NULL){
return NULL;
}
if((src < dst) && (char *)src + size > (char *)dst){
// 自后向前拷贝
psrc = (char *)src + size - 1;
pdst = (char *)dst + size - 1;
while(size--) {
*pdst-- = *psrc--;
}
}
else{
psrc = (char *)src;
pdst = (char *)dst;
while(size--) {
*pdst++ = *psrc++;
}
}
return dst;
}
json如果本身有问题,如何解析。例如key和value都用引号引起来,但是key和value本身也含有引号、冒号和逗号等。
模糊统计。统计一篇文章词频时,将字母组成相同的单词视为一个单词(如form和from),怎么做?如何用Map-Reduce完成这个工作?map都需要做什么工作,reduce又怎样安排?
我当时说用字母频统计的字典作为键值也是蠢哭了,回来稍微想一下,可以对每个字符串按字母序排,这样就能把字母相同的统计到一起去了……