美团面试记

今天在美团面试,有两道题目需要记录一下

  1. 实现一个c++中的getline(istream &in, string s)函数。面试官看我思路不太正确,就换成了下一题。下面的代码是回来之后查了资料之后写的。
    参考了cplusplus.com的streambuf的用法http://www.cplusplus.com/reference/streambuf/streambuf/snextc/
    void getline(istream &in, string s){
     do{
         char ch = in.rdbuf().sgetc();
         if(ch == '\n'){
             break;
         }else{
             s += ch;
         }
     } while(in.rdbuf()->snextc() != EOF)
     return ;
    }
  2. 实现c++中的atol函数.现场写代码的时候忘记判断溢出,面试官提醒了让我再看看有哪些漏洞的时候,我依然没看出来,有点尴尬。
    参考了cplusplus.com对atol的说明http://www.cplusplus.com/reference/cstdlib/atol/
    long atol(const string &s) {
     int i = 0;
     long ans = 0;
     int f = 1;
     // skip white spaces
     while(i < s.size() && isspace(s[i])) i++;
     if(s[i] == '+' || s[i] == '-') {
         f = (s[i] == '+' ? 1 : -1);
         i++;
     }
     while(j < s.size() && isdigit(s[i])) {
         if((ans * 10 + (s[i] - '0')) < ans) {
             // 溢出
             return -1;
         }
         ans = ans * 10 + (s[i] - '0');
         i++;
     }
     return ans;
    }

因为我主要是用C++,捞我的部门都是用java,所以c++相关的聊的并不是很多,基础知识问了一些,项目问了一些。

三面中第二面的面试官很佛系,很有好感,感觉全程在聊天,都是让我自己找一些自己感兴趣的方向,再仔细深入聊。有一个地方没有回答好,就是操作系统的内存管理为什么要分页,分页最本质的好处在哪。还有个题目是判断一个二进制数中1的个数,假如二进制数是64位,一种方法是用一个哈希表把所有出现过的64位的二进制数中1的个数给保存起来,另一个方法使用分治的思想,把64位分成两个32位,再把32位分成两个16位,再把16位分成两个8位,这样的话,8位的可以放进寄存器,这样查哈希表的话,多查找几次把缓存预热后查询就会比较快。和之前那个方案对比,聊了一下两个方法的快慢问题。

一面问了一下C++和java的一些对比,以及C++编译过程的一些问题,迭代中序遍历二叉树,递归反转数组,http的几种方法,面向对象的好处,浏览器输入baidu.com到显示网页的全过程。分布式存储的一些内容(因为简历中写了分布式存储)

三面只记得算法题,在上面写过了。问我能不能去实习(面试官说从c++转java应该问题不大),我说不能(实习的话还需要一段时间学习java),回来之后想了想是不是不应该这么说。大家遇到能不能去实习的时候是怎么回答的呢。还问最近面了哪些公司。实习的公司有没有给意向书,我说已经离职了,留用考核还在进行中,mentor和leader聊过应该没问题,具体结果还不直到。

面试结束,三面面试官说后续等hr安排

#美团##面经##校招##C++工程师#
全部评论
同今天三面,也是说回去等通知
点赞 回复
分享
发布于 2019-08-28 21:26
学长回答的已经很棒了。感觉学长面试下来还是很从容的
点赞 回复
分享
发布于 2019-08-29 20:44
联想
校招火热招聘中
官网直投

相关推荐

点赞 19 评论
分享
牛客网
牛客企业服务