美团一面,超爱面试官的
美团3月30号投递简历,中间推了两次笔试,4月16日做的笔试,4月28约了4月30号面试,过了两个星期了。笔试五道题就27 100 45 0 0,感谢给了面试机会
面试体验最好的一次,面试官小哥哥全程引导,脾气也好,态度也好,也是我体验感最强的一次,之前的三次面试都没有问几个问题就结束了,觉得挫败感很强,虽然这次可能还是凉经,但是能回答这么多问题我也算是值了,在线卑微呀,目前实习0offer,连面试都没几次的人,可珍惜每一次面试机会了,卑微卑微
自我介绍
问项目
问论文
object有什么方法
我:hashcode(),toString(),equals(),clone(),wait(),notify(),notifyAll()
hashcode() equals()的关系
我:hashcode是计算hash值的,equals是判断对象是否等价,hashcode()一致equals也不一定相等,equals相等的hash值一定相同,但是也跟具体怎么样重写有关
看什么书,为啥看
我:最近看的深入理解java虚拟机,为了知道Java语言是怎么运行的,自动的垃圾回收机制内部是怎么做的等等
JVM你有什么想说的
我:好多呀,他说找重要的说(我就这块最熟悉了,jvm全本加上一般的调优策略也可),在我刚刚开始讲到JVM的四个组成部分(class loader,执行引擎,运行时数据区,native inteface)
就问class loader做什么的
我:加载class文件
类加载过程
我:主要分为三个过程,加载,链接,初始化,链接又分为验证,准备,解析。具体的来说,加载过程主要完成三件事,第一个根据全限定类名找到class文件,(我还没说下面的所有过程,就下一个问题了)
怎么根据全限定类名找到class文件
我:反射吧,我不确定(?)
jvm有什么重要地方需要了解
我:运行时数据区的划分,垃圾回收机制,(还没说完,又下一个问题)
垃圾回收算法
我:标记清除、复制、垃圾整理、分代收集。具体的来讲标记清楚,就是先将无用的对象标记出来,然后清除。(我还没有讲缺点和其他剩下的三个算法,就插入下一个问题了)
怎么判断对象没有用,
我:有两个算法,引用计数法,可达性分析。引用计数法blabla,可达性分析blablabla,但是这也不能决定他这个对象一定是无用的,这里需要一个二次标记的过程blablabla,
为什么要二次标记
我:因为finalize方法的执行可能会将对象重新加入引用链,他就不是无用的,就不用被回收了
finalize执行几次,怎么样才能被执行
我:执行一次,如果没有被执行过就执行,被重写了也要执行
(哇我每个问题还没说完,就根据我提到的换了另一个问题)
Java内存模型
blablabla
jvm这本书你学到了什么(感觉问了好几次了)
并发编程的艺术讲了什么
我:讲了一些并发机制的底层实现
Java编程思想看了什么
我:太厚了,没有看完,有点当工具书再看
什么是面向对象(我感觉什么是什么这种题好难回答呀,开始瞎掰)
我:跟面向过程的那些语言只能定义一些操作,但是不知道谁来做的,面向对象的话就能定义一个对象,来完成现实生活中物体的各个功能。具有封装,继承,多态三个功能
说明一下封装,继承,多态,是什么为什么出现怎么用
我:疯狂瞎掰,答的不好。。。
代码题:反转链表
我:代码题好简单对不对,可是我就是一个代码弱鸡,这还是我第一次面试写代码紧张死了,面试官还边写代码边问家常问题,我本来写代码就是剑指offer和LeetCode刷了一点点题,完了这次面试前有半个月没刷了,我以为只写方法体,但是还要写输入输出,构造链表,我以为不用这些的,写了好久,还有一堆语法错误,我一边写一边告诉我哪错了,我脑袋都抽抽了,崩溃了,还继续接下来的三个灵魂拷问,搞得怀疑自己还能做开发不,总算是写完了
我:觉得做开发做出来的成品,比做视觉刷准确率更有成就感
为了开发做了哪些准备
我:看书,看视频,看博客,刷题,和小伙伴们交流
为什么不读学硕
我:当时保研的时候对这些没有概念,面试官表示理解
输入网址www.meituan.con后会发生什么,说的越详细越好,涉及到什么协议
我:(按照javaguide的github讲的,但是面试官说太简单了)根据域名查询域名的IP地址,DNS解析、TCP连接、 发送HTTP请求、服务器处理请求并返回HTTP报文、浏览器解析渲染页面、连接结束(有啥更好的回答推荐一波儿)
DNS过程
我:blablabla,
代码题:两个数组求交集,直接暴力,没有任何优化,又被diss了
hashmap为什么线程不安全
我:1.7的时候进行扩容的时候,需要将原来的数据,重新计算下标重新加入新数组当中,而同一个位置有多个元素需要用链表存,在从的旧的链表到新的链表这边这个过程是用头插法继续宁的,如果多线程进入指针的走向有可能会造成死循环,导致线程不安全。另外就是没有同步操作,多线程读取数据有可能不是最新的值。在1.8之后第一点用尾插法解决了,但是数据不一致的情况还是会出现。
sql语句的左连接右连接
我:左连接:就是两个表做乘法的时候,左边表的所有数据都有显示出来,右连接:就是两个表做乘法的时候,右边表的所有数据都有显示出来,忘记说另外那边只留下相同数据了没有部分补孔,尴尬了
有什么问我的吗?
我:我怎样可以进美团hhh,他说基础还行多动手
开始刷题了,这个代码能力我都不知道之后的字节是不是要被怼死hhhh
还有就是回答问题的时候是不是应该先把那个系列说完,在回答面试官的下一个问题呀,比我的类加载过程,和垃圾回收机制都没说完,面试官就下一个问题,所以这个应该怎么办!
#美团一面##美团##Java工程师##实习##面经#