美团一面,看看你能否回答上来?

互联网全栈架构

共 3144字,需浏览 7分钟

 ·

2021-07-09 17:17

关注公众号Java后端技术全栈

回复“000”获取程序员必备电子书

大家好,我是老田,今天给大家分享的是一位网友,去美团点评面试遇到的技术问题(一面),希望你先用这些题目进行默答,看看自己知道多少。

题目

1、做一下自我介绍吧,简单说一下你的项目?

2、有遇到过内存泄漏吗?你们是怎么解决的?这个前阵子确实遇到过一次,还算运气比较好。

3、java的基本类型有哪几个?String是不是java的基本类型?String为什么要是final类型的?

4、反射机制的底层实现是什么?动态呢?动态的实现原理?

5、HashMap了解吗?说一下HashMap相关的一些东西?HashMap是线程安全的吗?为什么是线程安全的?ConcureentHashMap了解吗?他是如何实现线程安全的?你刚才说1.8基于CASCAS的ABA问题怎么解决?

6、说一下JVM的线程模型?这些区域都分别是干啥用的?Java线程模型和JVM线程模型注意区分、总结下,网上很多文章都是错的。

7、说一下java类加载器的工作机制?类加载在那个区域进行的?

8、说一下java的线程模型?violate了解吗?他的原理是什么?violate是线程安全的吗?为什么不是?

9、保证线程安全的解决方法有哪些?说一说读写锁吧,读写锁的读

10、数据库的索引有哪几种?为什么要用B+树来做索引?组合索引和几个单个的索引有什么区别?数据库的大表查询优化了解吗?MVCC机制了解不?MVCC机制有什么问题?怎么去解决这个问题?MySQLmysql 慢语句调优做过吗?说说你是怎么做的?

11、Redis了解吗?你说说怎么用Redis实现分布式锁?

12、Spring中Bean的作用域,Spring MVCcontroller是线程安全的吗?怎么去保证线程安全呢?

(面经来自于网友:两年工作经验、山鲁亚尔)

看完上面的这些题目,你觉得自己能回答上来多少?按照100分制,你给自己多少分?

问题分析

1、做一下自我介绍吧,简单说一下你的项目?

两个问题,一是做一个自我介绍,另外就是介绍项目,项目介绍你最熟悉的,或者最能拿出手的项目,不一定就是最近在做的项目。

2、有遇到过内存泄漏吗?你们是怎么解决的?这个前阵子确实遇到过一次,还算运气比较好。

这个问题,就是靠平时总结,如果真的没有遇到过,也是可以自己模拟的,然后使用各种命令和工具进行排查。在面试时候被问到,就大致说一下排查思路,排查过程中用到的命令和工具就可以了。

3、Java的基本类型有哪几个?String是不是Java的基本类型?String为什么要是final类型的?

前面两个问题都是考察基础的,第三问就得自己反思了,为什么要设置成final类型,就得想想final修饰类的时候,有什么特性?在这里起到什么作用?

4、反射机制的底层实现是什么?动态呢?动态的实现原理?

这个也算是考察基础知识是否扎实,重点在动态,以及动态和反射的关系。

5、HashMap了解吗?说一下HashMap相关的一些东西?HashMap是线程安全的吗?为什么是线程安全的?ConcurrentHashMap了解吗?他是如何实现线程安全的?你刚才说1.8基于CAS?CAS的ABA问题怎么解决?

这是几个问题,

HashMap的问题

  • 你得说一下HashMap是什么,
  • 底层采用什么数据结构实现的,
  • 最好说一下put的过程
  • JDK版本各版本中是怎么样的。
  • HashMap为什么是线程不安全的?

ConcurrentHashMap问题

  • ConcurrentHashMap是什么?
  • ConcurrentHashMap底层数据结构是什么?
  • JDK版本不同,ConcurrentHashMap在设计上有些什么区别

CAS问题

  • CAS是什么?
  • CAS存在什么问题
  • ABA问题是什么
  • ABA问题如何解决

别想看这个题目,很多人都挂在这个题目上。背背面试题,再加上稍微一点点的理解,这些问题都能应对。

6、说一下JVM的线程模型?这些区域都分别是干啥用的?java线程模型和jvm线程模型注意区分、总结下,网上很多文章都是错的。

考察的是JVM内存模型,通常也是考察JVM运行时数据区,注意,这里千万别把Java内存模型搞进来,Java内存模型叫做JMM。

说到JVM运行时数据区,就会提到线程私有和线程共享。

尤其是Java虚拟机栈、堆、方法区,这三个一定的说清楚。

栈和线程的关系是什么?栈中存放的是什么?为什么会SOF?

堆和对象内存分配有关系,所以肯定会聊到对象的生命周期,那就聊到类是怎么被加载到JVM中的?如何判断一个对象已经死了?同时也会聊到垃圾回收算法有哪些?垃圾收集器有哪些?最新的垃圾收集器是什么?有什么特性?

熟悉哪些JVM调优参数?

这个问题,也是很大部分人会挂的,我也在线模拟面试过很多人,聊到JVM这一块,90%都会挂。

7、说一下Java类加载器的工作机制?类加载在那个区域进行的?

上面问题中说过了,这个类加载相关的肯定会问,表示你对一个类是怎么从.class文件到Class对象,再到实的过程,看看你熟悉多少

这些问题也可以从侧面反馈到,你对你每一行代码是怎么运行,会存在什么问题是否有所知晓。

8、说一下Java的线程模型?volatile了解吗?他的原理是什么?violate是线程安全的吗?为什么不是?

Java线程模型你得熟悉一下,volatile也得了解一下,有什么特性,可见性、防重排、原子性。这些也得去了解一下。

这个问题理论性比较强,背背面试题,基本上能搞定。

9、保证线程安全的解决方法有哪些?说一说读写锁吧,读写锁的读

这些都是理论性的,背背面试题就能解决,不是一定要使用过。自己下去好好准备一下就可以了

10、数据库的索引有哪几种?为什么要用B+树来做索引?组合索引和几个单个的索引有什么区别?数据库的大表查询优化了解吗?MVCC机制了解不?MVCC机制有什么问题?怎么去解决这个问题?MySQL 慢语句调优做过吗?说说你是怎么做的?

这个相当于是MySQL数据库的8连问,8个连环炮你能回答上来几个?基本上也都是平时多看看面经,背背面试题也能应对。

11、Redis了解吗?你说说怎么用Redis实现分布式锁?

这个问题,其实看起来简单,回答起来没那么简单的,

这里社交很多东西,不是简单的setnxLUA脚本就能解决的,涉及到Redis集群模式,涉及到业务超时等问题。面试官都是给你安排好的,这个得有些真材实料,背面试题只能应付比较肤浅的面试官,遇上认真点的面试官,那就得用自己的真材实料去回答了。

12、SpringBean的作用域,Spring MVCcontroller是线程安全的吗?怎么去保证线程安全呢?

这个问题,这里就没有扯了,因为各大公众号,我的这个公众号之前也发过类似的文章,所以有空别小看公众号的重要性。只是在于积累,平时在车上、地铁上、工位上休息的时候,可以借助于一些琐碎的时间去看一些技术性的公文章,积累自己的认识。

总结

实话实说,上面90%的问题,我们都可以通过背面试题来解决,可能存在个别题需要自己真的去体会体验过才可以搞定。

但是个人始终认为:五年以内的工作经验,面试基本上可以通过背面试题来解决

推荐阅读:
亿级系统的Redis缓存如何设计
学会这10个设计原则,离架构师又进了一步
Spring Boot 集成 Kafka

互联网全栈架构

浏览 29
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报