美团优选后端开发工程师实习二面面经(已OC)
美团的面试都是要做自我介绍的哈哈哈。
Java 基础知识
- 接口和抽象类的区别
- String, StringBuilder 和 StringBuffer 的区别
- 为什么有了 String,还要设计 StringBuilder 和 StringBuffer
- String 为什么要被设计成不可变的
CPP 基础知识
- 连续两次 delete 会出现什么样的问题
- 深拷贝和浅拷贝的区别
- 什么时候需要重写拷贝构造函数(默认是浅拷贝,深拷贝的场景重写)
- const 关键字的作用
- const 能够修饰类吗(不能)
- struct 和 class 的区别(只从访问权限和继承权限去答好像还不太够,还得考虑和 c 的兼容那一块)
- C++ 和 Java 对于“多继承”分别是怎样支持的( 这里的“多继承”对 Java 来说指的是可以继承一个类,和实现多个接口 )
- 你觉得 C++ 和 Java 这两种语言,哪种对于“多继承”的支持会更好一些?
- C++ 菱形继承的问题
Python基础知识
- 元组和列表的区别
- 为什么元组要被设计为不可变(很重要的一点是为了效率,当时没答上。只从安全性的角度去回答了)
- Python2 和 Python3 的区别(没答上233,因为确实没怎么用 Python2。面试官还提示了从字符串处理的方面去答我也没答出来)
mysql
- binlog 和 redolog 的区别(当时瞎扯了一通,还得再看看哈哈)
计算机网络
- TCP 和 UDP 的区别
- 为什么说 TCP 面向连接而 UDP 不面向连接
思考题
- 有100只试剂管,其中1只有毒。现在给你10只小白鼠,怎样检测出哪只试管是有毒的?(我用二分的思想去答了,就是先把试管分为2组,每组50个,让第一只小白鼠去吃其中一组的混合试剂。如果它死了,说明在这50只试管内;否则在另外50只,这样不断二分)
- 如果条件进一步限定,给你两天的时间去检测,小白鼠从喝下试剂到中毒身亡也正好需要两天,怎么检测?(我答了用交并集的思想去想,但具体设计没能给出来)
- 可以先缩小一下范围,如果有4只试剂管和2只小白鼠,怎么做?(想了半天,最后在提醒下想出来了:假设试剂管分别是ABCD,白鼠分别是x和y。那么把试剂管分成3组,其中组1包含AB两只试管,组2包含BC两只试管,组3包含CD两只试管。白鼠x去吃组1的混合试剂,白鼠y去吃组2的混合试剂,如果x和y都死了,说明是B试管有毒;如果是x死了y没死,说明试剂管A有毒;如果x没死y死了,说明试剂管C有毒;如果都没死,说明D有毒)
- 那么我们把这个场景扩展一下,即100只试管和10只小白鼠,怎么做?(和上面的思路是类似的,假设试剂管的编号是从1-100,前两只小白鼠分别是x和y,那么小白鼠x吃1-50,小白鼠y吃25-75,如果x和y都死了,说明有毒试管的范围是25-50;如果是x死了y没死,说明有毒试管的范围是1-24;如果x没死y死了,说明有毒试管的范围是51-75;如果都没死,说明有毒试管的范围是76-100。这样不断去分)
算法题
leetcode 三数之和
反问
- 问了一下结果大概多久会出(面试官说这主要由HR决定,但根据经验大概是1个星期内)
- 问了一下上海美团那边现在是不是线上办公(是的)
总结
到目前为止面试体验是最好的。面试官问了一个问题后,会和你交流他自己的理解,我自己也从中get到了很多新的理解。面试官人真的非常棒。
3.25更新
更新一下,刚给我oc了(运气比较好),大家也加油
#美团暑期实习##实习##面经##美团##后端开发#