Skip to content

Latest commit

 

History

History
108 lines (91 loc) · 8.61 KB

Experiences.md

File metadata and controls

108 lines (91 loc) · 8.61 KB

2016-11:美团点评(NewMeiDa)秋招 北京站(望京)

  美团点评校招最后一批做的的笔试题,一直没消息,以为挂了。没想到11月初,都快签了,收到了面试邀约。邮箱里还躺着Oracle的笔试邀约,心中五味杂陈。学校在岛城,去一趟帝都不容易啊,纠结中。

笔试题: https://github.com/wuping5719/Algorithm/tree/master/2-Java-Interview/2-31-NewMeiDa

  收到美团邀约时已签其他公司,搜集的面经,根据面经看书,更有针对性。

  • 1.把一颗二叉树同层的节点用next指针链接起来.
    http://www.cnblogs.com/shawnhue/p/leetcode_116_117.html

  • 2.Spring Bean对象的生命周期.
    Spring Bean的生命周期(非常详细): http://www.cnblogs.com/zrtqsk/p/3735273.html

  • 3.计算机网络中的同步和异步.
    计算机网络-步传输和异步传输(理解): http://blog.csdn.net/thisispan/article/details/7481127

  • 4.服务器的多线程和IO复用的应用场景,IO复用是什么复用?
    1) 多线程的应用场景:
    (1) 线程间有数据共享,并且数据是需要修改的(不同任务间需要大量共享数据或频繁通信时);
    (2) 提供非均质的服务(有优先级任务处理)事件响应有优先级;
    (3) 任务并行计算,在非CPU Bound的场景下提高响应速度,降低时延;
    (4) 与人有IO交互的应用,良好的用户体验(键盘鼠标的输入,立刻响应).
    2) IO复用的应用场景:
    (1) 当客户处理多个描述字时(交互式输入以及网络接口),必须使用IO复用;
    (2) 一个客户同时处理多个套接口;
    (3) 一个tcp服务程序既要处理监听套接口,又要处理连接套接口,一般需要用到IO复用;
    (4) 如果一个服务器既要处理TCP,又要处理UDP,一般也需要用到IO复用;
    (5) 如果一个服务器要处理多个服务或者多个协议,一般需要用到IO复用。
    linux提供了select、poll、epoll等方法来实现IO复用.
    3)IO复用: 单个线程,通过记录跟踪每个I/O流(sock)的状态,来同时管理多个I/O流。

  • 5.进程和线程的概念,进程间通信的方式,消息队列和共享内存的适用场景.
    1) 进程与线程的一个简单解释: http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html
    2) 进程间通信的方式:
    进程间8种通信方式:
    (1) 无名管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。
    进程的亲缘关系通常是指父子进程关系。
    (2) 高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。
    (3) 有名管道(named pipe):有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
    (4) 消息队列(message queue):消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
    (5) 信号量(semophore):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
    (6) 信号 (sinal):信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
    (7) 共享内存(shared memory) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量配合使用,来实现进程间的同步和通信。      
    (8) 套接字(socket):套接口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。
    3) 消息队列和共享内存的适用场景: http://www.cnblogs.com/biyeymyhjob/archive/2012/11/04/2753535.html

  • 6.数据库的优化,索引为什么用B树,有什么好处?
     B树在数据库索引中的应用剖析:http://www.idouba.net/about-btrees-application-in-database-index-in-programmer/
    深入浅出空间索引:为什么需要空间索引: http://www.cnblogs.com/LBSer/p/3392491.html

秋招补招 美团Java后台开发 三面面经

一面:

  • 1.了解SOA,微服务吗?
  • 2.分布式系统如何负载均衡?如何确定访问的资源在哪个服务器上?
    (1)轮询; (2)随机; (3)最小响应时间; (4)最小并发数; (5)哈希。
    http://www.open-open.com/lib/view/open1446377378148.html
  • 3.设计一个分布式负载均衡缓冲系统,如何快速定位到是那个服务器?(使用key分段、一致性hash)
  • 4.如何保证缓冲区和数据库之间的强一致性?(使用加锁)
  • 5.HashMap 高并发情况下会出现什么问题?(扩容问题)
  • 6.说一说在浏览器中输入一个 url 后,直到浏览器显示页面的过程中发生了什么?
    DNS,ARP路由,服务器处理,返回,浏览器呈现,获取html中的依赖资源。
  • 7.字符串中句子的反转(比如ABC DEF,输出DEF ABC)
    很简单,可以先反转整个字符串,然后反转单词,或者先将句子切分为单词,然后反转。
  • 8.给任意二叉树的所有结点加next指针(这个有原题,也可以参考按层打印二叉树)。
  • 9.用过反向代理吗?

二面:

  • 1.进程间共享内存的方式有哪些?(8种)
  • 2.Linux 下如何查看网络端口状态(netstat),如何查看内存使用情况(top)。
  • 3.ConcurrentHashMap 如何扩容?
  • 4.知道 Java 的异常吗?
  • 5.运行时异常如果不处理会怎么样?应该怎么处理运行时异常?
  • 6.写代码:给你5000万个int,求出前1000个最大的数,有2G内存。
    维护一个1000的小根堆,然后遍历数组,总体下来时间复杂度是O(nlg1000)。
  • 7.给你 n 个不重复的整数,随机找出 m 个不重复的整数,要求时间和空间复杂度都是 O(m)。
    每次把取出来的数放到后面,只在前面的数组随机访问就可以了,时间复杂度是O(m),空间复杂度是O(1)。
  • 8.对于SQL慢查询的优化?
    主要是从查询语句和数据库表设计两个方面来考虑,查询语句方面可以增加索引,增加查询筛选的限制条件;数据库表设计的时候可以拆分表,设计得更细粒度。
  • 9.用过哪些容器?(Tomcat) 对比过 Tomcat 与其他服务器的区别吗?比如 nginx?
  • 10.用过动态代理吗?以后会经常用到的

三面:

  • 1.自我介绍,说说你项目中的数据流向(画结构框图)
  • 2.看过什么书?
  • 3.说说深入理解JVM中印象最深刻的章节(JVM内存模型,垃圾回收和类加载);
    补充:还问了堆和栈中存的是什么?static修饰的遍历存在哪里?(方法区)
  • 4.说说《Effective Java》中你印象最深的三条和你的理解。
  • 5.你觉得你Java 哪一块是最熟悉的(Java 的基本数据结构)
  • 6.说说 HashMap 的内部实现。
  • 7.HashMap 是线程安全的吗?(不是,ConcurrentHashMap是)
  • 8.那 ConcurrentHashMap 内部是如何实现的?每个 segment 是个什么数据结构?(HashTable)
  • 9.你的项目中用到哪些技术?(Spring)
  • 10.说说你用了它的什么?(Spring IOC)
  • 11.Spring的优点?Spring AOP的原理?Spring如何实现解耦合?
  • 12.对链表了解吗?(List) 是,(了解ArrayList和LinkedList),那你说说他们的区别?
  • 13.会做链表两个结点的交换吗?(链表反转) 是的,写代码实现。
  • 14.给你一个链表和一个整数k (k大于等于0,小于等于链表长度,链表长度未知),按k步长反转链表(比如1->2->3->4->5->6->7,当k=3的时候结果是3->2->1->6->5->4->7)
  • 15.说说 Mybatis 配置了 xml 过后是如何完成数据库操作的?

2017-03-21 美团春招

  • 1.求树中两个节点的最低公共祖先

Java版:http://blog.csdn.net/jingshuigg/article/details/31048141

C++版:http://www.cnblogs.com/felixfang/p/3828915.html