导读
对于技术面试多总结是非常重要的,但是面试并不是考试,虽然是技术问题,但也并不是有唯一的答案。对于正在面试的同学,可以参考。
美团Java后台一面面经
1.前几天约了今天(8/28) 19:00 电话面试。废话不多说 自11自我介绍
非科班,说了以前的规划,为什么变了要搞计算机,讲了学校里干了啥之类的
2.String类可以继承码?(烘托下气氛~)
3. 你项目用了Mybatis,自己写SQL还是工具生成?
答先是自己写,之后用工具生成了,(感觉情况不妙,自己对Mybatis不熟)
4. 你用Mybatis常用#还是$更多?(果然)
有点忘了,
肯定是#更多一些吧? (感觉面试官疯狂暗示?)
确实好久没维护项目的Mybatis部分,赶紧说不太熟。.
5.问我项目只是停留在应用吗?说了解一点点原理,就问了Spring原理AOP,IOC
IOC讲了如何通过XML获取单例(感觉这块说的不够清楚,暴露了理解还不够),AOP讲了反射机制+动态代理。
6.接口和抽象类的区别
7.Java是引用传递还是值传递
值传递,不过传递的是引用地址。
8.常用集合框架
讲了ArrayList,LinkedlList, Hashmap,ConcurentHasmap各自底层的原理,顺便简单讲了下hashmap死锁的原因。
9.问如何开启一个线程。
Thread类和Runnable接口
10. 常用的线程池。
不小心说成数据库连接池,尴尬。一下想不起来,赶紧说自己以前实现过线程池的Demo,模拟了生产者消费者模型。
11. 了解ThreadLocal吗。
没想起来,说不了解,~
12. 项目里用过什么模式?答了单例模式
讲了一下饿汉式,懒汉式,双重锁机制内部怎么维护单例的,枚举式和内部静态类方式。
13.Lock和Sychronize的区别
没理解到想问什么,Lock指的是不就是锁吗,Synchronize不是lock吗?大神来解释一下
14. 知道乐观锁和悲观锁吗?
讲了定义,乐观锁的自旋锁,CAS机制,悲观锁Synchronized,
15. 问synchronized和violate的区别,
讲了violate底层的机制,禁止指令重排和总线嗅探,violate比Synchronized更轻量级
16. 了解JVM吗?说一些知道的
答了方法区和堆区的线程共享,方法区存的类信息,常量等,堆里存放的是实例对象。程序计数器记录线程的执行的上下文(应该是位置),栈帧是方法执行的地方。讲了用递归的时候脑子里会有栈帧的模型。
17. 垃圾回收机制了解吗?
讲了堆区的分代,新生代,老年代,元空间。回收对象的识别方法,引用计数器法和根可达性法区别,然后讲了对象的强弱引用导致回收策略不同,接着讲了标记清除,标记复制。标记整理算法和他们的优缺点,
18. 然后问了CMS垃圾收集器和啥没听清楚
没深入理解,忘了,
19. 项目用到了Redis,Redis内的几种数据结构?
List ,String,Set,zSet,hashmap.
20.. Redis持久化了解吗? 不了解~~~
21.MySQL引擎有哪几种?区别是什么?
答了MyISAM和InnoDB,区别说了索引的结构不同,还有的想不起(忘了说事务支持不一样)
22. 其实有很多种,那你说说InnoDB的索引使用的什么结构?
一下忘了,说是红黑树或者B+树。。最后说是红黑树。。尴尬
23. 其实是B+树,B树和B+树有什么区别?
大概讲了一下B+ 根节点不存数据,叶子节点存数据,并用链表连接。
24. MySQL的隔离级别,默认隔离级别是什么?
可重复读,
什么是可重复读?
(这里答错了,答成了已提交读。)
(还有一些零碎的问题想不起来就不说了)
有没有可能来北京面试?答:略
总结: 感觉面试官人很好,可能看我非科班的,只问了Java基础,网络操作系统都没问,虽然我也准备了好久, 体验还是不错的。
小米一面面经
面试官刚好出差来武汉,就现场面的,主要问的都是java基础,把我记住的和大家分享一下吧
1简单的聊了会项目,似乎不太感兴趣
2Hashmap如何实现线程安全,concurrentHashmap原理
3讲到synchronized,说一下它的锁的不同粒度
4synchronized和reentrantlock的区别,当都被interrupt时,有什么区别
5jvm内存模型,类的加载过程
6如何确定内存泄露的位置
7jvm内存中出现大图片,该如何处理,涉及到软引用
8手写单模式,写了懒汉式和双重检验,问了双双重检验为什么要这么写,为什么锁住了还要加null判断
9不同排序算法的稳定性和空间复杂度
10手写归并排序
11单次遍历删除链表倒数第n个节点
美团一二面面经
一面50min
1问项目,哪个项目你印象最深,亮点在吗,怎么实现页面访问,怎么实现异步的,你做的过滤算法数据结构是怎么样的
2redis的set的数据结构
3项目中并发量大的情况下,如何保证数据的一致性,rabbitmq在项目中怎么用的
4elasticsearch为什么检索快,它的底层数据结构是怎么样的
5为什么学netty,它应用在那些中间件和框架
6jvm内存模型
7线程池的参数,拒绝策略
8B树和B+树的区别
9为什么要用redis做缓存,单线程且支持高并发
10tcp三次握手四次挥手,挥手的时候为什么要连续发两次请求
11Springboot的启动流程
12如何解决bean的循环依赖问题
就记得这么多了,不过感觉答得还不错
二面30min
1、聊项目,项目里除了用redis里面的队列,还可以用什么作为队列 回答的好像不太满意
2、java有哪些队列
3springboot和spring的区别 没回答好
4说说你看了哪些书
5为什么要看netty的源码
6http是什么,除了post和 get还有哪些请求方式,这个没答好🙃
7你不是计算机专业的,学了哪些课程,在实验室里面做什么
8说说你的优点
9要不我们视频面试吧,我:我这边没wifi,开下热点,然后面试官说算了吧,不稳定
10今天就到这里吧,问什么时候有通知,说应该还有三面,就这几天。
感觉二面面的很差,问到了那些没有复习到的基础。给自己打个气,希望早日有offer,也祝大伙们顺利!
最新经典文章,欢迎关注公众号
参考
https://www.jianshu.com/p/f8adcca6f648
https://www.jianshu.com/p/ef74a2f6eb35
https://www.jianshu.com/p/9f753196b77b
|