美团c++后端开发一面凉经

  提前批投了客户端,虽然挂了,但是总体感觉还不错,面试官也问了很多的问题,学到了很多东西。
美团的话用java比较多,你就算你说你c++学的好,面试官也不会问你c++问题的。
下面是面经:
一开始问了问项目相关,你干了什么,后面问了问你遇到了什么困难没。
1:浏览器输入一个链接会发生什么,老问题了,然后问了dns解析过程,我上次面试不会,这次还能不会么。
2:https和http的区别
3:进程和线程的区别
4:进程间通信的方式
5:数据结构什么学的最好,数组,太简单了换一个,链表,链表怎么翻转,链表和数组的使用场景
6:什么是携程(买票的),面试官说是go语言的,我都没听过这名词。
7:说说虚拟内存,
8:为什么数据库用b+树不用b树,或者红黑树。
9:数据库什么plan听说过没有。声音太小了听不清说啥。
这才面了20分钟出头,面试官说我们主要是java,你是c++,你考虑过以后么。我没啥问的问题了,要不你给我讲讲你会点啥吧。
我只能硬着头皮讲讲c++11新特性,auto,范围循环啊,还有智能指针啊,说说c++和java的区别,强行说到30分钟,说实话我感觉我说c++的东西面试官也不太理解我在说什么,我自己都不知道应该说说什么了,感觉说stl也没啥意义。
体验非常差,题也没有做30分钟就结束了,还说美团那里用c++的都是做算法的,大部分都是java。
问题基本上都回答了上来,就是携程和那个数据库没听过的问题不会,面试官全程冷漠,哦哦,我感觉我好难。
有没有c++拿美团offer的大佬,教教我应该怎么做😢。
#面经##校招##美团##C++工程师#
全部评论
我就是cpp进的美团,然后进来转了java,其实都还好,找工作不用那么扣语言
1 回复 分享
发布于 2020-08-21 21:10
协程......携程 666
1 回复 分享
发布于 2020-08-20 23:20
携程把我逗乐了
2 回复 分享
发布于 2020-08-20 17:37
我投递的基础平台 提问题阶段我就问了我是cpp怎么也让我面试了 他们主要是go 也有一些cpp
点赞 回复 分享
发布于 2020-08-24 11:46
我也投的后台开发,今天部门直接打电话过来问我能不能转java,服了😓
点赞 回复 分享
发布于 2020-08-24 11:28
还在想要不要投,java忘得一干二净了
点赞 回复 分享
发布于 2020-08-20 23:52
同听不清楚,今天我面美团。面试官那边本来就吵,偏偏声音还小。
点赞 回复 分享
发布于 2020-08-20 23:03
同今天面c++,感觉面试官老想问java😂
点赞 回复 分享
发布于 2020-08-20 19:56
出了基础研发的部门有部分 C++,其他的基本都是 Java,你要去美团做 C++,那得找内推,推荐到部门才行。很多公司招 C++,后来会让你转 Java。
点赞 回复 分享
发布于 2020-08-20 18:05
c++太不友好了
点赞 回复 分享
发布于 2020-08-20 17:41
我也是C++投的后台,虽然问题算法都A了,但是感觉面试官对C++的不是很期待。
点赞 回复 分享
发布于 2020-08-20 17:11
我也是c++,做题做了一个小时😂
点赞 回复 分享
发布于 2020-08-20 16:53
hhhhhhhhh携程和协程(我也没反应过来
点赞 回复 分享
发布于 2020-08-20 16:49
我听见携程也以为是卖票的 哈哈哈 他应该是问操作系统里那个 协程 吧
点赞 回复 分享
发布于 2020-08-20 16:41

相关推荐

算法题感觉都挺简单的啊
投递哔哩哔哩等公司10个岗位
点赞 评论 收藏
分享
08-17 18:24
门头沟学院 Java
可运行版本 import java.util.HashMap;import java.util.Map;class LRUCache {class DLinkedList{int key;int val;DLinkedList next;DLinkedList prev;long timeStamp;public DLinkedList(){this.timeStamp = System.currentTimeMillis();}public DLinkedList(int key,int val){this.key = key;this.val = val;this.timeStamp = System.currentTimeMillis();}}int capacity;int size;DLinkedList head;DLinkedList tail;Map<Integer,DLinkedList> map;long ttl;public LRUCache(int capacity,long ttl){this.capacity = capacity;size = 0;head = new DLinkedList();tail = new DLinkedList();head.next=tail;tail.prev = head;map = new HashMap<>();this.ttl = ttl;}public void addToHead(DLinkedList node){node.next = head.next;head.next.prev = node;node.prev = head;head.next = node;}public void removeOne(DLinkedList node){node.next.prev = node.prev;node.prev.next = node.next;}public boolean isExpired(DLinkedList node){long now = System.currentTimeMillis();long diff = now-node.timeStamp;if(diff>ttl){return true;//true是过期了的意思 false才是没过期!!!}return false;}public int get(int key){if(!map.containsKey(key)){return -1;}else{DLinkedList node = map.get(key);if(isExpired(node)){removeOne(node);map.remove(key);size--;return -1;}node.timeStamp = System.currentTimeMillis();removeOne(node);addToHead(node);return node.val;}}public void put(int key,int val){if(!map.containsKey(key)){DLinkedList newNode = new DLinkedList(key,val);addToHead(newNode);map.put(key,newNode);size++;if(size>capacity){DLinkedList oldNode = tail.prev;removeOne(oldNode);map.remove(oldNode.key);size--;}}else {DLinkedList newNode = new DLinkedList(key,val);DLinkedList oldNode = map.get(key);removeOne(oldNode);addToHead(newNode);map.put(key,newNode);}}}class Main{public static void main(String[] args) {LRUCache cache = new LRUCache(2, 1000); // 1秒TTLcache.put(1, 1);cache.put(2, 2);System.out.println(cache.get(1)); // 返回 1try {Thread.sleep(1500); // 等待1.5秒让数据过期} catch (InterruptedException e) {e.printStackTrace();}System.out.println(cache.get(1)); // 返回 -1(已过期)System.out.println(cache.get(2)); // 返回 -1(已过期)}}
点赞 评论 收藏
分享
------------------------------------题目一:题目大意:有 n (1 <= n <= 2e5) 本书,编号为 ai (0 <= ai <= 1e9)。你需要将它们放入若干个临时书架(先进先出队列),要求奇数编号和偶数编号的书不能混放。最终,你需要从这些书架中按顺序取出书本,形成一个严格递减的序列。问最少需要多少个临时书架。解法思路:奇偶性限制使得奇数和偶数两组书的处理是完全独立的。对于每一组(例如奇数),为了能按顺序取出形成一个严格递减序列,放入同一个书架的书必须是原序列中的一个严格递减子序列。因此,问题转化为:将奇数子序列和偶数子序列分别拆分成最少数目的严格递减子序列。根据Dilworth定理,一个序列最少能被划分成的递减子序列的数量,等于其最长严格递增子序列(LIS)的长度。所以,分别求出奇数序列和偶数序列的LIS长度,两者相加即为答案。LIS可用经典的O(n log n)算法求解。------------------------------------题目二:题目大意:有 n (1 <= n, m <= 1000) 个部门和 m 个项目,部门权重为 ai,项目难度为 bj (1 <= a, b <= 1e4)。还有一个 n x m 的绩效矩阵 vij (1 <= v <= 1e4)。总绩效为所有 wij = vij * (ai + bj) 的和。你可以任意交换部门的顺序(行和a的顺序),也可以任意交换项目的顺序(列和b的顺序),目标是最大化总绩效。解法思路:关键在于对总绩效公式进行数学变形。总绩效 = Sum(vij * (ai + bj)) = Sum(vij*ai) + Sum(vij*bj)。将求和顺序改变可得:Sum(ai * Sum_j(vij)) + Sum(bj * Sum_i(vij))。这等价于 `部门权重向量a` 与 `矩阵行和向量` 的点积,加上 `项目难度向量b` 与 `矩阵列和向量` 的点积。根据排序不等式,两个向量的点积在它们同序排序时最大。因此,先计算出矩阵的所有行和与列和。然后,将部门权重a和行和向量都按降序排序后计算点积,再将项目难度b和列和向量都按降序排序后计算点积,两者相加即为最大总绩效。------------------------------------题目三:题目大意:有 n (1 <= n <= 1e5) 个服务区域,每个区域是数轴上的一个闭区间 [li, ri] (|li|,|ri| <= 1e9)。你需要选择一个整数点 x 作为仓储中心,使得总运输成本最小。单个成本定义为:如果 x 在区间内,成本为0;否则成本是 x 到该区间最近端点的距离。解法思路:这是一个经典的几何中位数问题。总成本函数是所有单个成本函数的和,而每个单个成本函数 `cost(x)` 都是一个V形的凸函数。多个凸函数之和仍然是凸函数,其最小值点可以通过分析斜率变化找到。总成本函数的斜率在每个区间的端点 `li` 和 `ri` 处发生变化。当 x 从负无穷向正无穷移动时,初始总斜率为-n,每经过一个端点,斜率就加1。当斜率从负数变为非负数时,就到达了成本最小的位置。这个位置恰好是所有 `2n` 个端点(所有 `li` 和 `ri` 的集合)的中位数。因此,只需收集所有 `2n` 个端点,找到它们的中位数作为最优选址x,然后计算总成本即可。具体的详细代码和题解可以戳我主页的文章查看
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
评论
4
31
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务