20171114美团面试题

14号正好是周二,按照约定上午十点半去美团总部面试,公司位于望京,出了地铁口步行800多米就到了。来到总部大楼,映入眼帘的是《美团点评集团综合指挥部》,好吧,够霸气。

二楼签完到,接着去5楼签到,接待人员都很热情,签完到坐了7分钟左右,由人事MM过来通知我开始面试,把我领到类似于休息区的地方,这里有很多独立的小圆桌,后来又陆陆续续来了好多面试者,坐在不同的白色圆桌上等待着面试官的到来。

不一会,我的第一个面试官来了,好吧,看着很年轻,一张娃娃脸,感觉比我还小的样子,不过人不可貌相,起身问好,面试开始。


(问题不分先后,答案会稍后给出,因为是面试互相交谈,所以选取了一些突出的问题在这里列出,并且把我的一些简单回答附上)


第一轮面试问题:

1.a的n次方,伪代码实现,注重效率问题


2.jdk源码看过吗?把arraylist的实现写一下


3.mybatis只提供接口,那么在使用时,接口的实现在哪里?

通过代理实现。


4.为什么要自己实现消息通讯协议?怎么实现的?怎么收发消息?怎么做消息同步?

协议的实现重点考虑消息对象的序列化以及消息的收发模式、消息的同步等。


5.poll方法是同步还是异步?它与select方法有什么区别?

答:poll方法是同步。select方法可以实现一个线程同时监听多个channel,并处理相应事件。


6.Linux操作系统怎么进行jvm调优?都有哪些常用命令?调试线程栈的命令是什么?


7.如果一个远程服务器经常拒绝连接,请给出具体问题定位的步骤?


8.怎么实现的分库分表?


9.直接内存原理?请说明JavaNIO中直接内存的使用方法?你们项目中是怎么用的?


10.两个大文件各有1T,存储了字符串,快速查找两个文件的交集(重复字符串),内存限制1G,考虑实现效率。


第二轮面试问题:

1.kafka的原理是什么?可以用来做什么


2.说说同步/异步,阻塞/非阻塞的区别


3.说说java NIO原理


4.jvm内存模型?老年代使用哪种垃圾收集算法


5.消息中间件性能调优时,具体怎么做的调优?


6.都有哪些代理的实现框架,至少说出5种?spring底层是怎么实现代理的?

答:源代码层面:jdk动态代理

字节码层面:cglib、javassit、asm

编译器层面:AspectJ 


7.说说怎么保证幂等性


8.io多路复用的优势在哪里?


9.jvm为什么要指令重排?jvm都有哪些性能优化措施?jit编译器的原理?


10.请说明TCP/IP的通信过程

答:三次握手、四次挥手


11.redis有哪些优点和缺点?和memeched有什么不同?


第三轮面试问题:

1.synchronized是怎么实现的?和lock的区别是什么?


2.流式计算框架storm的原理?你们系统选择他的原因是什么?为什么不用dubbo,dubbo也能实现消息通信,RPC调用


3.elasticSearch的原理是什么?是怎么实现的?是怎么实现快速模糊查询的?


4.数据库用的什么数据结构?底层存储怎么实现的?为什么要采用这种数据结构?tier树和B+树区别?


5.每个用户都有1000个订单,现在想快速从以前买过的订单里,查询“麻婆豆腐”,注意订单里有有“麻等等婆等豆腐”这样的菜单也需要查询出来


6.系统为什么用memcached做缓存,跟redis有什么区别


7.说说AIO的原理?说明AIO和NIO的区别。

操作系统底层IO一般分两步:第一步内核把数据准备好;第二步数据从内核空间拷贝到用户空间。

按照上述两个步骤进行阐述。


8.说说linux常用的io模式


9.说说rocketMQ的优点,为什么采用他?它与其他的消息队列有什么不同?


10.听说过倒排索引吗?原理?


11.有一个系统需要做负载均衡?请设计架构怎么去实现负载均衡,考虑易用性?

答:应用层:DNS负载均衡、http反向代理

ip层:NAT、ip tunnel

链路层:DR负载


12.LVS的原理是什么?能不能应用到反向代理比如nginx服务器上?

直接修改ip地址的源地址及目的地址,


13.请说明线程池都有哪些优化措施


14.为什么选择hessian,常用的通信框架有哪些?和google proto buffer有什么不同?


15.创建线程池都有哪些方法?请说明每种方法不同的应用场景


16.假如有一个线程池,下一个线程依赖上一个线程的计算结果,问题1 :怎么保证相互依赖的线程之间的执行顺序?问题2:如果中途一个线程异常中断,问怎么去定位这个异常的线程,并采取相应措施。


17.请说明hbase原理

答:底层用hdfs做文件系统存储,zookeeper做同步,regionserver等等。


17.从tcp双网里接收消息后,怎么保证消息不丢失?有没有采取事物?如果是多台服务器怎么做到消息一致?假如一台服务器挂掉,怎么快速恢复数据?并保证是最新的数据。

答:采取AOL预先写log方式。


18.请说明怎么保证网络数据的安全?

答:加密;

问:怎么加密?

答:双方约定加密算法,采用MD5或SHA计算签名

问:中途被窃取怎么办?

答:用userid+user密码的方式,或者token方式,做输入key,黑客即使知道加密算法,但是不能逆向解密。


19.oracle和mysql的数据库隔离级别有什么不同?怎么避免幻读?


20.为什么要考虑netty?原理是什么?


21.目前系统中jvm采用了哪种jvm收集器?命令是什么


22.volatile有什么用?使用场景有哪些?能否保证数据原子性?


23.怎么实现乐观锁和悲观所?都有哪些乐观锁?ReentrantLock是什么锁?CountDownLatch实现原理及应用场景?


24.一共有8台nginx服务器,4台提供服务,另外4台做双活备份?怎么实现这8台服务器的资源利用率最大?


25.你们系统是怎么实现双活的?都有哪些实现方式?


26.memcached是分布式吗?怎么实现memecached的分布式?

答:memcached是伪分布式。采用hash散列法在客户端业务层面实现分布式。

问:如果采取hash散列,增加服务器时,还需要再次散列,效率如何?


27.一致性哈希的原理


28.https的原理是什么?

http+ssl,CA认证等。


29.lucene原理是什么?使用了那些算法?


第四轮hr面试问题:

1.为什么现在离职?


2.自己想做什么方向的工作?


3.目前薪资?期望薪资?


4.从上一个公司学到了什么东西

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值