2016.9.22 搜狗面试

之前笔试觉得做得还不错,果然很快就通知我去面试,然而面试却很不理想。
我的自我介绍、项目介绍好像都没有引起面试官的兴趣。
而面试问的问题也跟我想象的有很大差异。

  1. 实现内存拷贝函数 void *memcpy(void *dst, const void *src, size_t n)
    讲真好久不接触C/C++和指针看到这种题我是有点懵,然后就一通瞎做,真是不应该……
    考察点:
  1. 首先判断dst、src是否有效(是否为NULL);
  2. 两块地址重叠的情况;
  3. 指针是无类型的,拷贝的时候应按字节拷贝,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;
}
  1. json如果本身有问题,如何解析。例如key和value都用引号引起来,但是key和value本身也含有引号、冒号和逗号等。

  2. 模糊统计。统计一篇文章词频时,将字母组成相同的单词视为一个单词(如form和from),怎么做?如何用Map-Reduce完成这个工作?map都需要做什么工作,reduce又怎样安排?

我当时说用字母频统计的字典作为键值也是蠢哭了,回来稍微想一下,可以对每个字符串按字母序排,这样就能把字母相同的统计到一起去了……

你可能感兴趣的:(2016.9.22 搜狗面试)