美团后端一面 2023.3.24
3.18做的美团春招第二场笔试,五道题A了四道,一直没消息,23号下午突然短信约面时间定在24下午两点半,后来又发短信将时间修改到了下午三点。
面试官大概提前五分钟入场,非常温文尔雅有气质的一位男性,说话很温和,你回答对了他会说“好的,没问题”,整体面试体验很好,但是中间信号断了两次,都重新进了,网络状况有点离谱。
括号中是我当时的回答,不一定完全正确,有大佬看到有不完整或者错误的还望指出。
- 自我介绍
- 我们做的都是java,我看你说你主要是c++,你对转语言这块。(答:接受)
- 之前有了解过java吗(没了解过)
- 我看你项目中用到了数据库,知道mysql中默认的数据库引擎吗(innodb)
- innodb很重要的一点就是支持事务,谈谈你对事务的理解(acid,每个展开讲了一下)
- 原子性和持久性是怎么实现的(undo redo)
- 刚刚你提到隔离,说一下隔离的四个级别(四种名字提了下)
- RR是innodb默认隔离级别,它能够避免脏读和幻读吗(脏读可以,幻读绝大多数可以,但不能完全避免)
- 你提到了mvcc,讲一下mvcc如何实现的(read view和undo log,稍微展开讲了下)
- 聚簇索引和非聚簇索引?
- 使用(a,b,c)作为联合索引where b=xx and c=xxx会怎么样(常见的索引失效情况,不满足最左匹配,不能走索引)
- 线程池线程数的选择(比cpu核数略多,原因是少了并发能力差,多了cpu也无法同时执行,还有上下文切换带来的损耗)
- io密集型任务和cpu密集型选择线程数(io密集型选多点,因为可能有许多线程被阻塞)
- 线程间通信方式?(信号量,互斥锁,条件变量)
- 刚刚你提到了生产者与消费者问题能用c++模拟一下两个线程进行这个的过程吗(当时有点慌,因为没写过,不过写过线程池,硬着头皮写了,用一个队列模拟,一个往里面依次push a,b,c,一个依次取出来打印,用信号量和互斥锁实现的,怎么调都调不出来,每次结果还不一样,面试官说先不调了,结束以后问了下熟人才发现自己写的把两个线程分离以后主线程没等待直接退出了,怪不得有时候有打印有时候没打印,面试官也没提醒,估计是不太会c++也懒得看)
- 网页中输入url到浏览器渲染整个的过程(整个流程说了下,着重介绍了下dns和arp)
- 手撕代码,数字转中文,如1001,122.22限时十分钟(问了下能不能用别的语言写,面试官愣了下说可以,看我切换到了python笑了,问我平时是用python还是用c++,我说一半一半吧,然后开始做,最后基本调出来了,至少1001输出的是一千零一,然后面试官说看你做的差不多了,基本思路也对,还剩点小细节处理,时间也差不多了,就这样吧)
- 反问(一共几面,什么时候知道结果:不太清楚几面,可能一共有个了两三面的,应该很快能知道结果。部门主要职责:有做后端的有做数据分析的,评价面试表现:挺好的,mysql还掌握挺好的)
总结:与之前美团面经接近,似乎美团对数据库方面的知识很重视,但是问的都是常见八股,也不是十分深入,基本稍微背背或者学过的话不用背也能回答出来,生产者消费者手撕这个确实比较意外,不过整体思路倒是写对了,体验还是不错的,面试官态度很好,说话也很温柔,回答问题之后还有反馈,总体看确实如网上说的美团面试面试官都很好,感觉是企业文化的原因,对美团好感+10086,希望二面。
3.27更新:3上午收到二面邀请,时间选择范围从今天下午到明天晚上,最终选了明天下午也就是3.28的场。
#美团##春招##后端##java#