2017年秋招美团Java程序员开发,看我如何拿到offer

热乎的面经,昨天面的美团,虽然面完了HR面,但是感觉希望不大,希望能走运拿到offer吧。三面技术面面经如下:

一面:

中间省略掉大概几个问题,因为我不记得了,下面记得的基本都是我没怎么答好的。。。

1.了解SOA,微服务吗?

2.分布式系统如何负载均衡?如何确定访问的资源在哪个服务器上?

一.轮询。二.随机。三.最小响应时间。四. 最小并发数。五.哈希。

3.设计一个分布式负载均衡缓冲系统,如何快速定位到是那个服务器(使用key分段、一致性hash)

4.如何保证缓冲区和数据库之间的强一致性(使用加锁)

5.HashMap高并发情况下会出现什么问题,(扩容问题)

6.说一说在浏览器中输入一个url后,直到浏览器显示页面的过程中发生了什么(我主要说了DNS,然后他有接着问了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内存。(我刚开始以为5000万个int很多,还把G和byte的换算忘了,后来面试官指导才想起来。我的方法是维护一个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的基本数据结构)

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过后是如何完成数据库操作的?

总结

1.三年以上java开发经验或五年以上互联网开发背景

  1. 熟练使用springmvc框架
  2. 掌握面向对象设计开发,熟悉常见设计模式
  3. 熟练使用mysql进行应用开发,熟悉数据库原理及常用性能优化技术
  4. 熟悉分布式,缓存,消息搜索等机制,有分布式系统开发经验,集群架构设计和使用者优先
  5. 有责任心,有想法,热爱技术,喜欢钻研
  6. 有较强的逻辑思维能力,善于分析,归纳,快速定位并解决问题

很多小问题都记不清了,这是我昨天下午回来就记录下来的,感觉自己也尽力了。

最后很幸运的拿到offer了,10月才开始找工作的我也算圆满结束秋招,祝各位还在找工作的同学都能找到自己满意的工作。加油,好运早晚会来的。

我特意整理了一下,有很多问题不是靠几句话能讲清楚,所以干脆找朋友录制了一些视频,用来回答这些面试题。很多问题其实答案很简单,但是背后的思考和逻辑不简单,要做到知其然还要知其所以然。如果想学习Java工程化、高性能及分布式、高性能、深入浅出。性能调优、Spring,MyBatis,Netty源码分析的朋友可以加我的Java进阶群:675047716,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

如果想学习Java工程化、高性能及分布式、深入浅出。性能调优、Spring,MyBatis,Netty源码分析的朋友可以加我的Java进阶群,675047716,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

原文地址:http://blog.51cto.com/13545290/2121732

时间: 2024-07-31 14:29:30

2017年秋招美团Java程序员开发,看我如何拿到offer的相关文章

java架构师之路:JAVA程序员必看的15本书的电子版下载地

转自:http://www.shangxueba.com/faq/view376.html 作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们. 一.Java编程入门类 对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是“囫囵吞枣不求甚解”,先对Java

JAVA程序员必看的15本书-JAVA自学书籍推荐

作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们.此外,大家可以加入457036818交流群,互相分享一下关于JAVA方面的知识.一.Java编程入门类 对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是"囫囵吞枣不求甚解",先对Java熟悉

JAVA程序员必看11本书籍

http://developer.51cto.com/art/201512/503095.htm 学习的最好途径就是看书",这是我自己学习并且小有了一定的积累之后的第一体会.个人认为看书有两点好处: 1.能出版出来的书一定是经过反复的思考.雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超其他资料 2.对着书上的代码自己敲的时候方便 "看完书之后再次提升自我的最好途径是看一些相关的好博文",我个人认为这是学习的第二步,因为一本书往往有好几百页,好的博文是自己看书学习之后

武汉java培训:大牛Java程序员必看书籍

学java程序员,大部头的书籍是技术升级的必备工具,对于有基础的java程序员,市面上适合初学者的大量书籍男入法眼,武汉java培训专家为大家分享了一份高阶的java书籍,拿走不谢: 下面我分享的书单绝对值得拥有.我尽力避免列出为特定软件或框架或认证的Java书,因为我觉得那不是纯Java书. 1.<Java in a Nutshell>(Java技术手册) 与其说是必读书籍,还不说是参考文献. 2.<The elements of Java style>(Java编程风格) 目标

想进BAT面试的Java程序员,看完这个你们还觉得offer很难拿吗?

第一个问题:阿里面试问些什么 参加阿里的社招面试,而社招不同于校招,问题的范围其实是很随机的.因为能参加一些比较知名的互联网公司社招的人,70%以上都会有个3-5年的经验.这倒不是说一两年经验的同学没有机会进这些公司,而是因为这种公司,大部分情况下只招一些比较资深的开发和应届生,而不招那些处于中间阶段的人.而1-2年经验的同学,往往就刚好处于这个尴尬的阶段. 对于能有3-5年经验的这部分人中,每个人的经历又都不同,所擅长的点也不一样,因此这就会导致每个人的问题和范围都不太一样. 很少说有哪个知名

Java程序员开发参考资源

构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化的方式进行配置,所以维护起来相当困难. Gradle:Gradle采用增量构建.Gradle通过Groovy编程而不是传统的XML声明进行配置.Gradle可以很好地配合Maven进行依赖管理,并且把Ant脚本当作头等公民. 字节码操作 编程操作Java字节码的函数库. ASM:通用底层字节码操作及

十年京东Java程序员的工作总结,写给迷茫中的你!

很多年前,刚刚从大学毕业的时候,很多公司来校招.其中最烂俗的一个面试问题是:"你希望你之后三到五年的发展是什么?".我当时的标准回答是(原话):"成为在某一方面能够独当一面的技术专家".后来经历了几家不同的公司,换了不同的方向,才知道这个真是一个很难的问题.因为兵无常势,什么东西都是在不断的变化,一早的时候看好的东西可能会被淘汰. (几乎)没有人能够看准技术的下一个方向,因为这个问题实在是太难了,能够做到这一点的你就成为了技术界的巴菲特了.比如说11年加入Googl

一个5年Java程序员的年终总结,献给还在迷茫中的你

我越来越担心我作为一个Java程序员的未来.恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫折.详细过程我就不再叙述,在此,只想给大家说一说被拒绝的原因,看看大家有没有相似的经历,和类似的感悟.面试官对我的答复大致是这样的,我们不需要熟练工,我们需要在某领域拥有超过常人的积累认知,和拥有整套完整思维模式和优秀认知事物能力的人-他很诚恳地告诉我,你还年轻,真的应该好好地静下

Java程序员面试题集(1-50)

下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最新版本,去掉了EJB 2.x等无用内容,补充了数据结构和算法相关的题目.经典面试编程题.大型网站技术架构.操作系统.数据库.软件测试.设计模式.UML等内容,同时还对很多知识点进行了深入的剖析,例如hashCode方法的设计.垃圾收集的堆和代.Java新的并发编程.NIO.2等,相信对准备入职的Ja