别人的面经

本文分享了美团面试的真实经历,从技术面试到HR面,详细记录了面试官提问的重点和技术细节,涵盖Java基础知识、多线程、数据库优化等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、在面试最后,请向面试官问好这一个问题

作者:边牧和大单
链接:https://www.nowcoder.com/discuss/85303
来源:牛客网

大家都知道,不论是在技术面试还是HR面试时,经过长达半小时到一小时的“拷问”后,面试官通常会抛出一个看似“角色翻转”的问题,那就是“您对我们公司或职位还有什么问题要问我的吗?”

大多数面试者听到这句话,第一反应就是长舒一口气,想着这轮面试终于要结束了,我可以随心所欲放肆一回了。殊不知,在这个问题背后同样藏着一些大学问,就像相声演员的逗哏在节目最后会抖出最后一个大包袱,此时捧哏通常并不需要接这个包袱,只说四个字“去你的吧”,就把这场表演结束了。因此逗哏抛出的这个包袱响不响,直接决定了观众谢幕时的掌声是否热烈。回到我们的正题也是同样的道理,问好这最后一问,你就真的可以放松了。


面对此情此景,大多数面试经验贴中教导我们回答该问题时有几个准则,比如《剑指offer》中写到:

①   问和面试官工作范围不相关的问题,简而言之,不向技术人员问HR/CEO负责的问题,反之,不向HR问技术问题;

②   不要试图打探offer和薪水待遇,薪水是在发offer时谈,而offer通常不会当面反馈;

③   推荐问和应聘岗位和项目相关的问题;

具体见上面的网址。

二、美团面经

首先讲真,得感谢牛客的讨论区,感谢美团给我面试的机会,感谢帮忙内推的小伙伴,楼主渣渣双非学校小硕,投过简历无数,简历被挂无数,几乎都是石沉大海,所以每次面试都感觉弥足珍贵,本来上周面完就该发个面经的,但想想还是等定下来再写吧,今天收到了电话通知,所以过来发个贴,好了,废话不多说,不管最后去不去mt,先把面经弄出来再说。。。 
技术一面: 
一面基本上面的还算基础 没有过多的刁难 不过问题量特别大 
1、自我介绍 
巴拉巴拉,大致说了下实习和自己平时自己喜欢做的事情 
2、我们先聊聊java基础知识吧,说出Object类的常用方法?

toString(),clone(),线程的三个方法:wait()notify()notifyAll(),hashcode()finallize(),equals()
  • 1

大致讲了上面这些个方法 并说了下各个方法的作用。。。。 
3、刚刚说到object的常用方法,这些方法你应该都很熟悉吧,那你说说你对equal和hashcode这两个方法的认识? 
主要谈了下两个的作用 以及 当重写equal方法时候一定要记得重写hashcode方法,然后面试官就问了为什么,然后就继续巴拉巴拉。。。 
然后面试官紧接着问 两个对象如果equals那么这两个对象的hashcode一定相等么 回答是! 那如果两个对象的hashcode相等那么这两个对象是否一定equals?回答 不一定!理由其实 就是 关于 讲重写这两个方法的情况。。。。 
4、多线程用过吧?写过一些demo,那你说说多线程之间的通信,回答用wait sleep notify notifyAll配合使用 然后就问 wait和sleep一样吗?回答不一样,然后巴拉巴拉谈了下,关于对象锁的释放,是否需要唤醒。。。 
5、嗯,刚刚谈到了锁,一下面试官就扯出了锁,看你简历上ssh mybatis都熟悉,那你知道悲观锁和乐观锁吧?答知道,然后讲了下两个的区别以及应用场景 
6、你平时数据库一般用的什么 mysql 那你说说在工作中一般用的什么数据库引擎 答 mysql默认的是InnoDB存储引擎 敢情面试官想给我使绊子来着,接着就让说InnoDB和MyISAM之间使用场景问题了,然后就就着这两种存储引擎的区别 以及 优缺点巴拉巴拉说了一通 
7、平时是怎么处理事务的,讲下对事务的了解 
巴拉巴拉。。。。 
8、看你简历上讲了分库分表 谈谈两个的使用 以及 在工作中 怎么去设计 
这里主要是结合自己实习的项目来说的 
9、mybatis缓存 以及谈谈你们项目为什么用spring mvc+mybatis 而不用Hibernate? 
主要是说说一级缓存 二级缓存 然后 讲讲mybatis相对于Hibernate来说的优点好处之类 
10、项目里用到了redis 为什么用它? 
巴拉巴拉讲了一通业务需要 缓存数据 实现会话缓存的机制之类 
11、.java如何实现多态 
讲了下重载和重写 
12、谈谈java的垃圾回收机制 
从java提供垃圾回收机制说起,谈到了回收时机 何时回收 以及几个常用的垃圾回收算法,然后面试官问了解G1吗,听过但没具体了解了,实话实说,就没再继续了。。 
13、谈谈网页登录模块里记住我这个功能? 
从session一直到cookie,巴拉巴拉说了下各自的实现原理 以及缓存机制。。。 
14、谈谈三次握手四次挥手 以及为什么是三次 为什么是四次 一定要是四次吗? 
巴拉巴拉 结合网络中 那两个图来就行了,肯定不一定是四次 具体原因 大家知道。。。 
15、如果让你设计一个大型网站,你觉得哪些东西是需要考虑的 为什么? 
巴拉巴拉 谈了负载 谈了缓存 谈了框架 然后面试官继续问 就这些吗 然后继续扯 服务器 接着扯 。。。。 
16、数据结构学的怎么样 算法这块? 
还行吧,一直有刷题(其实是最近才刷 想哭) 
好吧 问的差不多了 今天到这里吧,这两天手机保持通畅,然后问我有什么问题要问的,然后我就问了团队,问了面试情况,问了招聘最后会考虑学校吗 实在没底 因为看小哥聊得挺好 所以才敢问的。。。。

技术二面; 
1、三次握手四次挥手 
(其实没搞明白为毛mt这么喜欢问这个问题 之前看面经好的童鞋提到了这个问题 还有就是没让自我介绍 我以为是要走过场了) 
2、sql注入了解么 
谈了下 注入的原理 以及登录功能模块中 sql注入的 实现 
3、集合框架肯定经常用吧? 
于是自觉的从Collection聊到list arrayList vector LinkedList set map HashMap hashtable都通通扯了一遍,语速太快 感觉就跟背书一样 面试官笑逗了,就说 小伙子背的不错吗,面试宝典没少看吧 我无语!!接着就继续说,你刚刚说的那些都是比较浅的东西,我问个比较基础的吧,你知道HashMap的数据结构和实现原理吧? 数组和链表的结合体 顺便谈了下底层数组Entry 实现原理这块 主要是说了下 hashing、put和get的实现过程,以及当遇到空值以及当两个键有相同hashcode值的处理。。。然后问我知道ConcurrentHashMap不 于是又讲了下这个和synchronizedMap的区别 以及 效率问题。。。 
4、谈谈volatile 
。。。。然后又问知道ThreadLoca不。。。。。 
5、写代码:解决生产者消费者问题 
用了Semaphore手写的代码 大概花了一些时间 跟面试官讲了下实现。。。 
6、问设计模式,百问不爽的答单例模式 让说了四种单例模式的实现办法?饿汉式 饱汉式 枚举 然而我只说了这三种(好像还有一种最佳实践 用内部类来实现)。。。 
7、问了下java内存模型 讲了下垃圾回收算法 
又是一通巴拉巴拉 比较了各个算法的优劣和问题之类的。。。再问G1,幸亏一面后来去看了下,于是说了下大概的认知。。。 
8、Java内存泄露的问题 
大致又扯了下垃圾回收 然而好像不是面试官要的答案 尴尬。。。。 
9、谈redis和memcached 
。。。。 
10、用过NIO么,没用过(我是讲真话没用过 不敢说用过)跳过 
11、聊get post,http状态码,http header 
巴拉巴拉说了下自己了解的,不是很满意感觉。。。 
12、讲ssh搭建 
。。。。 
13、谈spring mvc 
。。。。 
这讲框架的两个问题 就跟聊天一样 你一句我一句的。。。。 
14、谈spring的事物管理 
。。。。 
15、谈线程池 
。。。。。 
16、你有师兄之类的在mt么 为什么想来mt 
巴拉巴拉。。。。 
最后没让问问题 没说下一面任何事情(以为挂了)

技术三面: 
1、自我介绍+项目 
。。。 
2、怼项目,死怼,谈业务需求,谈遇到的问题 
。。。。 
3、还是项目,你在项目中做了以图搜图,你是怎么实现的,谈谈你的处理过程? 
谈了下图像检索的认识 聊了下自己用的sparse coding算法 谈了下降维算法 说了一大通 不知道面试官挺懂没。。。。 
4、讲下数据库优化 
主要说了索引、数据库结构优化,然后牵扯出红黑树,让手撕红黑树,然而写不出来,讲了下大概实现。。。数据库结构优化主要讲了下在项目中做到的表拆分和分区。。。 
5、谈谈tomcat服务器 
巴拉巴拉。。。。 
6、讲下sql的left join、right join、inner join 
这个简单。。。。 
7、谈spring的过滤 
大致讲了下登录过滤的实现。。。 
8、继续谈spring mvc的分层 以及问了些常用的注解 
。。。 
9、谈谈IOC 
。。。。(又一送菜题) 
10、连表查询:笛卡尔积通过什么连接得到sql 
巴拉巴拉 谈笛卡尔积的实现。。。。 
11、对‘a’,‘b’,‘c’,‘d’排序,排成指定的顺序 
这个我不会。。。 
12、算n个数内的质数的和 
这个简单,用一个数组保存所有质数 然后计算数组的sum即可。。。 
13、一个圆环上有n个点 a从任意一个点出发 到达下一个点都需要Ag能量,每一个点都有cg能量补给,假设a最初有Bg能量,问a最初Ag能量为多少能保证a绕圆环一周。。。 
最后一个问题大致是这样的。。。。。 
14、谈谈自己的学校 
第一次遇到这样的问题,还是技术面里。。。。。。。

hr面: 
1、why投mt 
。。。。。 
2、why投外卖配送bu 
。。。。 
3、自己最想从事什么行业 
。。。。。 
4、为什么打算在上海工作,打算长期发展吗? 
。。。。。 
5、三个词语概括自己的性格 
。。。。。 
6、为什么读研? 
。。。。。 
(又一次遇到这个问题 第二次了 因为是工作的时候考研的) 
7、换我来问问题了。。。。

三、美团面经

一面

1点50开始一面的。简单自我介绍,问了下java基础的东西比如volite关键字,同步的方法,悲观锁和乐观锁等等。jvm相关的知识。线程池,B+树这些,差不多面试了40分钟的样子。当时面试官评价基础不是很好,其他还行。还以为凉凉了,没想到马上接到通知下午5点面。

二面

同样的先简单自我介绍了下,问了下项目。之后也是各个方面都问了下。java基础比如hashmap的源码,实现,里边用到了几个类(当时这个问题直接懵了)。courrentHashmap怎么实现的,linkedlist和arraylist有什么区别。cas是什么,怎么实现的,会有什么问题。tcp的三次握手四次挥手。设计模式有什么了解。当时说了一个责任链模式。又问了下责任链具体怎么实现,有哪几个类。然后问单例怎么实现。饿汉,懒汉,双重检测,为什么要双重检测。http的method有哪些。感觉各方面都问了一些。最后评价是还行但是没什么亮点。然后和我讲了很久应该怎么应对面试。要学会主动把话题引向自己的亮点等等。差不多面了快1个半小时的样子。

三面

隔了3天周四3面突然来电话。中午的睡觉手机静音了没接到。晚上5点多打过来的。问了下项目,然后介绍项目亮点。我准备说算法的结果说设计上的亮点。然后我说没什么亮点,也没处理高并发什么的。之后就不问项目了。问了下volite实现的原理,快排复杂度o(nlogn)是为什么。n是什么logn是什么。大概就20分钟吧。当时感觉就是凉凉了。

下周2查状态的时候突然变成了拟录取,当时感觉自己真的很幸运能通过面试。之后也没人联系我,还在想拟录取是不是就是备胎池备着的意思。期间也在牛客网上咨询过,基本都说是稳了。就等了一周

这周一的时候给二面的面试官发了个短信询问了下情况(因为木有hr联系过我),他说已经通过了hr帮我问问,之后今天接到了hr电话,算是拿到了口头offer了。

整体感觉美团的面试比较基础,但是各个方面都有涉及到。面试官人很好,面试过程中会不断引导你,面试完了我问他事情也很快就会恢复了。我现在比较后悔的是之前没怎么接触过高并发这块,感觉做的系统都是curd的简单操作,应该要好好包装一下自己的项目,搞几个亮点出来。

下面附上之前整理的美团面经:

  • volatile关键字的底层实现,volatile是不是原子性的
  • 快排的时间复杂度
  • java中线程如何交互
  • java中的锁机制
  • 悲观锁和乐观锁,应用中的案例,mysql当中怎么实现,java中的实现
  • 长连接和短连接
  • tcp为什么三次握手却要四次分手
  • 泛型
  • 常见的异常类
  • 单例模式(线程安全,双重检查)
  • spring了解(我面试的时候没有问)
  • 常见的排序算法
  • 线程和进程的区别
  • 同步的控制方法
  • integer与int区别
  • 重写和重载区别
  • hashmap与hashtable区别
  • 常见的设计模式(一般是问你熟悉哪些)
  • 抽象类与接口类区别
  • 数据库索引
  • java lock的实现,公平锁、非公平锁
  • 多线程中断的原理
  • B+,B-,红黑树,二叉搜索树,平衡搜索树
  • 线程池(常见的线程池,各个参数的意义)
  • 优化sql
  • ACID,隔离级别
  • JVM类加载机制
  • JVM分区
  • GC
  • 垃圾收集器

四、阿里面经

Java面试考点梳理

本文是根据我的面试经验,为大家整理Java程序猿面试所需的知识体系。

第一部分:计算机基础

互联网大厂都相当重视程序员的基本功,也就是计算机基础知识。一个程序员能走多远、爬多高,很大程度上取决于基本功是否扎实。对于应届生而言,大都比较缺乏实战项目经验,虽然会有一定的项目经验,但这些课程设计、实验室项目的质量与公司实际的项目有着巨大的差距。因此,基础知识便成为面试考量的一大重点,而且基础扎实的程序员可塑性比较高,做什么都能比较容易快速上手。

计算机基础包含如下几门课程,相信计算机专业的同学肯定都已经学过。但互联网公司面试的考点可能和你们期末考试的考点有一些不同,我都做了整理。

1. 计算机网络

大学课程中的计算机网络一般都按照OSI七层参考模型介绍,然而由于互联网公司的特性,他们更加关注日常开发所涉及到的传输层和应用层,所以需要重点掌握传输层和应用层中所涉及到的所有知识点。

【考点】

  • 传输层的作用
  • 传输层复用和分用的含义
  • 传输层和网络层的区别
  • UDP协议的特点
  • UDP协议的报文结构
  • TCP协议的特点
  • TCP协议的报文结构
  • TCP三次握手过程
  • TCP四次挥手过程
  • TCP可靠传输是如何实现的
  • 停止等待协议
  • 滑动窗口协议
  • TCP的流量控制
  • TCP拥塞控制
  • HTTP协议
    • HTTP工作流程
    • HTTP请求格式
    • HTTP 1.1中的8种请求方式
    • HTTP响应格式
    • HTTP中重要的请求头和响应头字段
    • HTTP常用状态码及其含义
  • HTTPS协议
    • HTTPS协议与HTTP协议的区别
    • HTTPS协议的工作流程

【资料整理】

2. 数据结构

熟练掌握数据结构是程序员最最最基本的素养,在实际开发中选择合适的数据结构将极大影响程序的效率。面试官一般并不会直接问数据结构的问题,而是通过出一些包含数据结构的算法题来考察你对数据结构的理解程度以及在实际项目中是否能够灵活应用。你可以通过刷算法题来提升这部分能力,推荐《剑指offer》和《程序员面试金典》(注意是金典!)。很多公司的算法题库都选自这两本书。

当然,刷这两本书的目的并不是让你死记硬背题目,题目千变万化,面试官可以随意改变。刷算法题最重要的是培养解决问题的思路和解决实际问题的能力。在刷题的过程中要多多总结,再次强调,切忌死记硬背!

3. 算法

和数据结构一样,算法一般也通过具体的算法题来考察,你也可以通过刷《剑指offer》和《程序员面试金典》中的算法题来提高这方面的技能。但在刷这些算法题之前,你需要掌握几类基础的算法,并理解他们解决问题的思路(这才是最为关键的)。这些算法我已经在下面整理。

4. 操作系统

【考点】

  • 操作系统的四个特性。
  • 操作系统的主要功能。
  • 进程的有哪几种状态,状态转换图,及导致转换的事件。
  • 进程与线程的区别。
  • 进程通信的几种方式。
  • 进程同步的几种方式
  • 用户态和核心态的区别。
  • 死锁的概念,导致死锁的原因。
  • 导致死锁的四个必要条件。
  • 处理死锁的四个方式。
  • 预防死锁的方法、避免死锁的方法。
  • 进程调度算法。
  • 内存连续分配方式采用的几种算法及各自优劣。
  • 基本分页储存管理方式。
  • 基本分段储存管理方式。
  • 分段分页方式的比较各自优缺点。
  • 几种页面置换算法,会算所需换页数
  • 虚拟内存的定义及实现方式。

【资料整理】

5. 数据库

【考点】

  • 什么是索引?
  • 索引的分类
  • 索引的优缺点分析
  • 何时需要使用索引?何时无需使用索引?
  • 什么是事务?
  • 事务的四大特性
  • 数据库三大范式
  • 数据库有哪些表连接?

【资料整理】

第二部分:Java

作为一名合格的Java程序员,仅了解如何使用Java是远远不够的。你能够熟练使用Java只能说明你已经成为一名合格的码农,能够利用Java实现某些功能。而公司作为盈利机构,需要用最少的资源实现效益最大化,这就需要程序员具备高质量代码的能力,而能否写出高质量代码取决于你对技术背后原理的理解程度。只有在理解Java背后的原理,你才能根据Java的特性,写出更加高效的代码。这在实际业务中是非常有价值的事情。互联网大厂服务海量用户,更加注重系统的性能,也更加注重程序员对原理的理解。

关于Java的基础知识和如何使用,这里我就不提了,随便一本Java书籍都有详细的介绍。这里我整理了Java原理性的知识点,这些知识点将会成为你面试的加分项。

1. Java虚拟机

【考点】

  • Java虚拟机内存模型特点和作用
    • 程序计数器
    • Java虚拟机栈
    • 本地方法区
    • 方法区
  • 对象创建过程
  • 对象访问过程
  • 对象的内存结构
  • 垃圾收集算法
  • 如何判定哪些对象需要回收?
  • 对象内存分配策略
  • 分配担保机制
  • 垃圾收集器的比较
  • Class文件结构
  • 类加载的时机
  • 类加载过程
  • 双亲委派模型

【知识点资源整理】

2. Java并发编程

【考点】

  • 什么是死锁?如何避免死锁?
  • 什么是重排序?
  • volatile有哪些特性?
  • 什么是内存可见性?
  • volatile为什么能够保证内存可见性?
  • 中断机制
  • 线程通信有哪些方式?
  • 线程池的作用?
  • ThreadPoolExecutor如何使用?
  • 如何设置线程池的大小?
  • 如何保证线程安全?
  • JDK 1.6哪些对锁做了哪些优化?

【知识点资源整理】

3. Java 容器考点及资料整理

4. Java IO 考点及资料整理

5. Java其他知识点汇总


作者:大闲人柴毛毛
链接:https://juejin.im/post/5aa4a2e35188255589496eb8
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


内容概要:本文围绕直流微电网中带有恒功率负载(CPL)的DC/DC升压转换器的稳定控制问题展开研究,提出了一种复合预设性能控制策略。首先,通过精确反馈线性化技术将非线性不确定的DC转换器系统转化为Brunovsky标准型,然后利用非线性扰动观测器评估负载功率的动态变化和输出电压的调节精度。基于反步设计方法,设计了具有预设性能的复合非线性控制器,确保输出电压跟踪误差始终在预定义误差范围内。文章还对比了多种DC/DC转换器控制技术如脉冲调整技术、反馈线性化、滑模控制(SMC)、主动阻尼法和基于无源性的控制,并分析了它们的优缺。最后,通过数值仿真验证了所提控制器的有效性和优越性。 适合人群:从事电力电子、自动控制领域研究的学者和工程师,以及对先进控制算法感兴趣的研究生及以上学历人员。 使用场景及目标:①适用于需要精确控制输出电压并处理恒功率负载的应用场景;②旨在实现快速稳定的电压跟踪,同时保证系统的鲁棒性和抗干扰能力;③为DC微电网中的功率转换系统提供兼顾瞬态性能和稳态精度的解决方案。 其他说明:文中不仅提供了详细的理论推导和算法实现,还通过Python代码演示了控制策略的具体实现过程,便于读者理解和实践。此外,文章还讨论了不同控制方法的特和适用范围,为实际工程项目提供了有价值的参考。
内容概要:该论文介绍了一种名为偏振敏感强度衍射断层扫描(PS-IDT)的新型无参考三维偏振敏感计算成像技术。PS-IDT通过多角度圆偏振光照射样品,利用矢量多层光束传播模型(MSBP)和梯度下降算法迭代重建样品的三维各向异性分布。该技术无需干涉参考光或机械扫描,能够处理多重散射样品,并通过强度测量实现3D成像。文中展示了对马铃薯淀粉颗粒和缓步类动物等样品的成功成像实验,并提供了Python代码实现,包括系统初始化、前向传播、多层传播、重建算法以及数字体模验证等模块。 适用人群:具备一定光学成像和编程基础的研究人员,尤其是从事生物医学成像、材料科学成像领域的科研工作者。 使用场景及目标:①研究复杂散射样品(如生物组织、复合材料)的三维各向异性结构;②开发新型偏振敏感成像系统,提高成像分辨率和对比度;③验证和优化计算成像算法,应用于实际样品的高精度成像。 其他说明:PS-IDT技术相比传统偏振成像方法具有明显优势,如无需干涉装置、无需机械扫描、可处理多重散射等。然而,该技术也临计算复杂度高、需要多角度数据采集等挑战。文中还提出了改进方向,如采用更高数值孔径(NA)物镜、引入深度学习超分辨率技术等,以进一步提升成像质量和效率。此外,文中提供的Python代码框架为研究人员提供了实用的工具,便于理解和应用该技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值