分享三套美团面试经历+简单答案

面试题一

1、自我介绍

答:自我介绍是面试中唯一的自己主动介绍自己的环节,一定要好好把握好,一般最末尾会加上自己熟悉java,然后面试官就会问java的一些东西;

2、项目介绍及其亮点

答:开始吹牛逼。。。

3、Java的8种数据类型有哪些?

答:感觉这个问题被问烂了,int,short,long,float,double,byte,boolean,char;

3、问了Integer缓存数据的范围?

答:-128-127

4、紧接着问了Object类有哪些方法?

答:这个我有背过,clone,getClass,toString,finalize,equals,hashCode,wait,notify,notifyALL。

5、问到这里然后拿出了一个题,面试官有小纸条,题目在上面,String A = “123”; String B = new String(“123”);,问我生成了几个String对象?

答:如果常量池中,原来没有“123”那么就是生成了2个对象,如果常量池中有“123”那么只要1个对象生成。

6、由于提到了wait,顺带问了wait和sleep有什么区别?

答:wait 的话会释放对象锁,sleep 的话不会释放的对象锁。

7、由于还提及了hashcode,面试官接着问我,hashcode用在哪里?

答:这个我不假思索地说,hashmap和ConcurrentMap,这里我猜面试官肯定要继续问我这两个东西了。

8、果不其然,面试官说,讲一讲hashmap?

答:hashmap我讲了hashmap的数据结构数组链表结构,讲了hashmap的put,get,扩容的底层原理,同时讲了hashmap在1.7与1.8中的区别,put中引入了红黑树,以及扩容的时候不同,这些就讲了挺长时间,最后我说了一句hashmap不是线程安全的。

9、这里提及了hashMap是非线程安全的,面试问我为啥不是线程安全的,举几个例子?

答:我说了,在扩容的时候hashmap会可能产生环,造成死循环;hashmap在插入新的阶段的时候,多个线程同时插入,会把除了最后的那个线程的其它线程插入的结点丢失;对于修改的时候,多个线程修改,对只保留最后的一个线程的修改结果;扩容的时候,会只保留最后一个线程的扩容后的那个数组;从扩容修改增加说了一遍;

10、我本以为要接着问ConCurrentMap,额,出乎我的意料,并没有问,可能觉得我hashmap准备的很充分,然后接着问了我JVM了解吗?

答:我说了解;

11、让我说意思JVM的分为哪几块?

答:方法区,虚拟机栈,本地方法栈,堆,程序计数器,然后我就自己没等面试官问新的问题,继续接着说,方法区和堆是线程共享的,虚拟机栈本地方法栈和程序计数器是线程私有的,除了程序技术器不会发生内存溢出,其它都会发生内存溢出,并说了哪些会发生堆溢出哪些会发生栈溢出;这里就是大家要学会自己吧啦吧啦地说一堆,因为据我观察每个面试官面试每个是有一个固定时间的,超过这个时间段就结束了,所以只要面试官不打断你,你就一顿说;

12、由于提及到了内存溢出,面试官问我内存溢出和内存泄漏的区别?

答:内存泄露我说就是一块申请了一块内存以后,无法去释放掉这块内存,丢失了这段内存的引用;内存溢出就是申请的内存不够,撑不起我们需要的内存;

13、这里问完我就去问了数据库,4大特性是啥,举个例子?

答:原子性,我说就是一个事务要么全部完成,要么全部失败,要么做要么不做;一致性,比如a+b=100,一个事务改变了a比如增加了a的值,那么必须同时改变b,保证在事务结束以后a+b=100依然成立,这就是一致性;持久性,额就是修改完以后,在数据库中生效是永久的;隔离性,我就是说对于A对B进行转账,A没把这个交易完成的时候,B是不知道A要给他转钱。

14、数据的隔离级别有啥,每个隔离级别举个例子?

答:额,(怎么都要举例子啊,啊啊啊啊~),内心波澜,脸上面无表情地说:1.未提交读,事务中发生了修改,即使没有提交,其它事务也是可见的,举例子我就说对于一个数A原来50修改为100,但是我还没有提交修改,另一个事务看到这个修改,而这个时候原事务发生了回滚,这时候A还是50,但是另一个事务看到的A是100,这就是未提交读;2.提交读,就是说,对于一个事务从开始直到提交之前,所做的任何修改是其它事务不可见的,举例就是对于一个数A原来是50,然后提交修改成100,这个时候另一个事务在A提交修改之前,读取到了A是50,刚读取完,A就被修改成100了,这个时候另一个事务再进行读取发现A就突然变成100了;3.可重复读;可重复读,就是对于一个记录读取多次的记录是相同的,举例就是对于一个数A读取的话一直是A,前后两次读取到的A是一致的;可串行化读,就是说在并发情况下,和串行化的读取的结果是一致的,没有什么不同,这个举例我就说,不会发生脏读和幻读;然后数据库这一块就过去了。

15、接着问我计算机网络,问了我7层有哪7层?

答:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层;

16、接着问了我TCP在哪层,UDP在哪层,HTTP在哪层?

答:TPC和UDP在传输层,然后HTTP问我在哪个层,我一下有点忘了,这个没答上来,会去看了是在应用层。

17、问到这里就结束了,然后面试官问我有啥想问的,我就问如何评价我的面试表现?

答:因为一面都是问基础的知识,面试官和我说,我感觉你基础很扎实,他直接和我说我这里的话是通过的,不知道后面的面试官怎么问你,然后我说了声谢谢,就去酒店的一个会议厅等待二面;

二面

一面过了没多久,就立马通知二面了,中途感觉有点饿了,美团还挺人性话的,在后面的桌子上放了一堆饼干,忘了饼干的名字了,总之特别好吃,我吃了好几块。

1、自我介绍

2、项目介绍,及其亮点介绍。

答:继续吹牛逼。

3、然后问了我集合了解吗,让我说话ArrayList和LinkedList的区别?

答:ArrayList底层是数组,LinkedList底层是链表,ArrayLIst查找数据快,LinkedList插入删除快;

4、继续问我linkedList可以用for循环遍历吗?

答;能不用尽量不要用,linkedList底层是链表,它使用for进行遍历,访问每一个元素都是从头开始访问然后直到找到这个元素,比如说找第三个节点,需要先找到第一个节点然后找到第二个节点;继续找第4个节点,不是从第三个节点开始找的,还是从第一个节点开始,所以非常的慢,不推荐,可以用迭代器进行遍历。

5、介绍一下ConCurrenthashmap

答:我感觉是因为一面问了hashmap,所以二面面试官可能是看见了面试记录,额,这块我非常熟,这个我又讲了很长时间,讲了ConCurrentHashMap的底层的分段锁的结构,讲了ConCurrentHashmap的get源码,get源码是没有使用锁的,这里我把get源码背写了下来,并给面试官讲了get源码在插入修改删除的多线程下是安全的;然后讲了put操作,remove,扩容操作,然后讲了在1.7和1.8的区别,引入了红黑树,链表长度大于8转换成红黑树,采用了CAS+synchronized来保证并发安全,吧啦吧啦又讲了挺长时间;

6、来看看这道题,说着拿出来一个小纸条

答:这个纸条感觉每个面试官都是只有纸条,所以尽可能地和周围的同学多交流,有一定的肯可能他的面试官就你的面试官。题目:让我自己手算a,b,c,d的值。

结果是a = 8b=5,c=7,d=35.计算完我问他对不对,他没勒我。。。

7、然后问我单利模式了解不,写一个单例模式?

答:这个之前准备过,我写了一个双重锁的单例模式。

8、接着问了我虚拟机了解吗,介绍一些虚拟机的内存模型?

答:这个之前也准备过,这里要注意了,虚拟机的内存模型和运行时的数据区域不是一回事;虚拟机内存模型又叫JMM,就是每个线程有自己的工作内存,然后又一个主内存,线程工作的时候都是在自己的工作内存中拷贝一个主内存的副本;还说了JMM的happens before原则,程序顺序原则,锁原则,线程中断原则,传递性原则,还有其他的没想起来就没说了。

9、介绍一些你了解的垃圾回收算法?

答:标记清除,标记整理,复制算法,把每个算法是啥说了一遍;

10、问到这里,问了我你知道SurvivorRatio这个参数为啥初始是默认的8:1:1吗?

答:这个由于刚才刚问了垃圾回收算法,我觉得可能有关联,于是我说,方便复制算法操作,Eden区域大多数都是朝生夕死的,这个比例,可以方便复制算法的中from和to来回进行复制存活的对象,额,说完,他没有说啥,感觉是默许了吧;

11、突然又问,二叉树了解吗,写一个二叉树的深度搜索遍历?

答:当时我听到中道题,有点懵,什么是二叉树的深度搜索遍历,我只知道层次遍历,前序后序中序遍历啊,我想了想,感觉和后序遍历挺像的,我觉得应该就是后序遍历吧,我就先写了个后序遍历的递归写法。

然后他看了一眼,没说啥,感觉这个面试官有点话少冷淡,全程不和我互动,emmmm…下来自己百度了下,对的。。。

这个代码问完我,让后让我去等通知,我感觉回答的还行,果然没过几分钟,通知我去三面;

三面

1、照例自我介绍和项目介绍;

2、上来就让我手撕一个单例模式。。。

答:继续写我的双重锁模式

3、让我讲了讲代码是啥啥意思?

答:STEP 1. 线程A访问getInstance()方法,因为单例还没有实例化,所以进入了锁定块。STEP 2. 线程B访问getInstance()方法,因为单例还没有实例化,得以访问接下来代码块,而接下来代码块已经被线程1锁定。STEP 3. 线程A进入下一判断,因为单例还没有实例化,所以进行单例实例化,成功实例化后退出代码块,解除锁定。STEP 4. 线程B进入接下来代码块,锁定线程,进入下一判断,因为已经实例化,退出代码块,解除锁定。STEP 5. 线程A初始化并获取到了单例实例并返回,线程B获取了在线程A中初始化的单例。大体是这么回事。

4、由于我的项目中提及到JVM,所以给我出了一个场景题,垃圾会收器中,标记清除多次后,由于采用的是标记清除算法,那么你觉得可能会出现什么问题?

答:然后我说由于产生了内存碎片,所以当分配一个大对象的时候,由于内存不连续,那么会产生full GC。

5、这里提及到了full gc,问我,哪些情况会产生full GC,哪些情况产生minor GC?

答:minor会产生在eden区满了,fullGC产生在老年代的剩余空间不足,以及永久代内存不足也会发生fullGC。

6、除了你项目中的内存溢出问题,你还知道哪些关于内存溢出内存泄漏的?

答:这里之前了解过ThreadLocal,我说,ThreadLocal中的键值对中的键是一个弱引用,那么在内存回收的时候,这个键很可能会被回收掉,然后键没了,就无法找到value的值,造成了内存泄漏;

7、然后给我出了一个动态规划的手写代码题,说来写个代码吧,大体是在n*m的矩阵方格中,找一个最大的正方形是几乘几的,有点忘了。

答:由于没有准备过动态规划的题目,这个题目看到我只说了暴力解决的方法,然后面试官提示让我用动态规划做,我想了半天没想出来。。。。当时感觉应该是凉了。。。

时间差不多的时候,面试官说,就到这里吧,然后让我出去等通知,果然通知我今天面试结束了,整整一个下午,特别特别累,前两面结束的时候感觉特别稳,没想到最后还是因为手写代码这一块不会动态规划挂掉了,当时感觉心态有点崩。。。

结束语

最终美团面试还是挂了,,,留下了没有技术的眼泪。。。所以痛下决心要好好学习算法,这不今天又刷了一道 leetcode。

面试题二

第一轮面试问题:
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.从上一个公司学到了什么东西

面试题三

技术一面:

一面基本上面的还算基础 没有过多的刁难 不过问题量特别大

1、自我介绍

巴拉巴拉,大致说了下实习和自己平时自己喜欢做的事情

2、我们先聊聊java基础知识吧,说出Object类的常用方法?

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

大致讲了上面这些个方法 并说了下各个方法的作用。。。。

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、数据结构学的怎么样 算法这块?

还行吧,一直有刷题(其实是最近才刷 想哭)

好吧 问的差不多了 今天到这里吧,这两天手机保持通畅,然后问我有什么问题要问的,然后我就问了团队,问了面试情况,问了招聘最后会考虑学校吗 实在没底 因为看小哥聊得挺好 所以才敢问的。。。。

Java感兴趣的朋友可以加入到我们的java学习交流群:450936584 群里有学习资料,无广告,5000人大群,各级大神都有,欢迎你进来一起学习

技术二面;

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

最后没让问问题 没说下一面任何事情(以为挂了)

Java感兴趣的朋友可以加入到我们的JAVA学习交流群:450936584 群里有学习资料,无广告,5000人大群,各级大神都有,欢迎你进来一起学习

技术三面:

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个数内的质数的和

13、一个圆环上有n个点 a从任意一个点出发 到达下一个点都需要Ag能量,每一个点都有cg能量补给,假设a最初有Bg能量,问a最初Ag能量为多少能保证a绕圆环一周。。。

14、谈谈自己的学校

hr面:

1、why投mt

2、why投外卖配送bu

3、自己最想从事什么行业

4、为什么打算在上海工作,打算长期发展吗?

5、三个词语概括自己的性格

6、为什么读研?

(又一次遇到这个问题 第二次了 因为是工作的时候考研的)

7、换我来问问题了。。。。

大概想起来的就上面那些 技术面的比较深刻 就大概记录下吧 很多问题 回答起来估计要很多时间,大家参考参考就行 祝大家早日收到offer。。。。

题目

Object(11个方法,重点是覆写equals和hashCode,浅克隆clone)

多线程,怎么实现线程之间通信?wait和sleep一样吗?

悲观锁和乐观锁,它们的区别和应用场景

MySQL的数据库引擎

对事务的理解

Java如何实现多态

Java的垃圾回收机制,回收时机,常用的垃圾回收算法,G1

TCP三次握手和四次挥手?为什么是三次,四次?一定要四次挥手吗?

设计一个大型网站,需要考虑什么?

sql注入,举例登录功能模块中sql注入的实现

Collection框架,List,Set,Map,Queue,ArrayList,LinkedList,HashMap,Vector,Hashtable,重点是HashMap的hash方法,put方法,get方法和resize方法。

ConcurrentHashMap和Collections.synchronizedMap的区别

谈谈volatile

ThreadLocal

代码模拟生产者消费者(使用ArrayBlockingQueue)

设计模式-单例模式

Java内存模型(内存划分)

JVM垃圾回收算法,比较各个算法的优劣

G1

Java内存泄漏问题

NIO

get和post,http状态码,http header

线程池

数据库优化(索引和数据库结构优化)

红黑树

tomcat服务器

sql 的 left join,right join, inner join

Spring IoC

连表查询:笛卡尔积通过什么连接得到sql(笛卡尔积的实现)

n个数内的质数的和

有什么要问的问题

总结

美团点评-美团二面

面经

晚上8点接到美团的电话要立刻二面,一脸懵逼。

面试官主要问了一些基础的知识:

1:String类能否被继承

2:接口和抽象类的区别

3:Synchronzed的用法

4:http和https的区别

5:javagc()中年轻态和年老态的用法

6:get和post的区别

7:tcp和udp的区别

最后还问了参加没有参加什么比赛,最后又说这两台会安排我进行技术三面。希望这些可以帮到大家~

题目

String类能否被继承

接口和抽象类的区别

Synchronzed的用法

http和https的区别

javagc()中年轻态和年老态的用法

get和post的区别

tcp和udp的区别

总结

美团点评-三面被送走,写面经攒人品,希望被补录。。

面经

两点去的五点结束,总共三个小时,二面问的时间比较短。。

还有部分问题想不起来。。

一面

TCP/IP三次握手,四次挥手画图解释

线程状态画图说明

单例模式,如何实现线程安全的单例模式 手写代码

linux常用命令知道哪些

100以内的随机数排序怎么做手写代码

数据库怎么优化–我记了概念非得深入问

怎么看慢查询日志

垂直拆分,水平拆分怎么做的等一系列

为什么数据库索引使用B+树

分布式缓存有没有用过

radis与memcache的区别

死锁,怎么解决死锁

银行家算法,怎么实现,手写代码

事务的四个特性

spring的AOP原理

代理模式的原理与应用

项目相关。。我做的敏感词过滤。。

(汉语的敏感词要做分词么。。我觉得不需要呀)

讨论一会分词什么的

二面

进程与线程的区别

java虚拟机

GC,full GC触发条件,分区

单例模式又问了一遍

手写两个代码

逆转单链表

两个字符串的最大公共子序列

http与https的区别

没错linux的常用命令又问了一遍

查看进程的命令

查看日志的命令

线程池的实现原理

项目中还用到什么模式

三面

项目相关

怎么设计表,设计模块,介绍自己做了什么,说说自己项目的亮点

设计一个实名认证系统,主要功能是对名字打分

(我说的几种他都不太满意)

项目问完就开始聊人生。。

什么一天怎么安排,给任务怎么去做

希望将来工作的团队是怎么样,工作是什么样

给一个项目怎么去准备怎么去做

对任务有没有计划表,会不会按照计划严格执行

接受实习吗

有什么想问的

我就问了他是什么部门,去了干什么,主要业务是什么

还问了soa的相关

之后就被送走了。。。。

题目

TCP/IP三次握手,四次挥手画图解释

线程状态画图说明

单例模式,如何实现线程安全的单例模式 手写代码

linux常用命令知道哪些

100以内的随机数排序怎么做手写代码

数据库怎么优化–我记了概念非得深入问

怎么看慢查询日志

垂直拆分,水平拆分怎么做的等一系列

为什么数据库索引使用B+树

分布式缓存有没有用过

radis与memcache的区别

死锁,怎么解决死锁

银行家算法,怎么实现,手写代码

事务的四个特性

spring的AOP原理

代理模式的原理与应用

进程与线程的区别

java虚拟机

GC,full GC触发条件,分区

单例模式又问了一遍

手写两个代码

逆转单链表

两个字符串的最大公共子序列

http与https的区别

没错linux的常用命令又问了一遍

查看进程的命令

查看日志的命令

线程池的实现原理

总结

美团点评-美团点评面经(提前批)

面经

自我介绍

数据库考查内容:

解释数据库范式,索引(不懂)。写了个查询语句:题目是从grade表中找出每科成绩都大于80分的学生名字。

计算机网络:

画出来7层网络结构,解释数据链路层主要负责作甚,介绍TCP的三步握手,其中ACK主要是做什么用的。

操作系统:

进程和线程的区别,进程的调度策略,进程之间的通讯方式。

Java知识

HashMap和HashTable的区别,hashMap的扩容方法。

学习Java的方式?

ArrayList和Linkedlist的区别以及各自的试用场景,以及ArrayList的扩容方法。

数据结构与算法:

手写快速排序算法,并解释过程。

第二面(答的特别糟糕):

Object类有哪些方法,clone方法的深拷贝和浅拷贝的区别,wait操作和sleep的操作的区别。

画出线程的状态转换图。

访问www.meitu.com网站,从浏览器发出访问到返回页面的整个过程。

手写一个算法:从字符串中“aecbcda”找出不重复的字符组成的顺序子串“aecbd”,用最优的时空复杂度。

我的简历中有提到Elastic search被问到了,答的一塌糊涂,所以建议简历中别写自己不熟悉的内容。

备注

二面直接被拒了,但面试官很好,他提醒我以后找工作还需要做哪些准备。

Spring,mybatis, redis. 其中Spring不是单纯的理解AOP和IOC,还要知道是怎么实现的。

路漫漫其修远兮,吾且依旧要努力兮。

题目

进程和线程的区别

进程的调度策略(先来先服务FCFS,短作业优先SJF,优先级调度算法 ,高响应比优先调度算法)

进程之间的通讯方式。(共享存储,消息传递【包括管道通信】)

HashMap和HashTable的区别,hashMap的扩容方法。

手写快速排序算法,并解释过程。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__0809 返回首页