Java 面试虐我千百遍,我待 Java 如初恋
Hello 大家好,传说中的金九银十就在当下,知道很多小伙伴都在蠢蠢欲动,明修栈道暗度陈仓,表面上还在公司踏踏实实的干着,心里早就有了自己的小算盘。作为一个 Java 工程师,涉及到的领域会很多,每次面试都会被问到头破血流,阿粉今天就给大家带来一份面试题目,具体是哪家公司的阿粉就不说了,因为不管哪家其实都差不多,重点是自己要完全掌握,才能更好的应对。
技术细节
第一个部分我们先来看技术细节,往往很多公司的第一面都是考察技术细节的,小伙伴们如果在面试的过程中经常一面没有过的话,那往往是基础不扎实,这个时候我们就需要静下心来,好好的补一下基础知识,看看面经刷刷题,或者看看我们 Java 极客技术的文章都是可以的。
1.三分钟自我介绍
自我介绍这块是面试的一个开场白,这块没什么好说的,不过建议大家可以将自己想表述的内容以文字的形式写下来,然后熟练的背诵下来,这样不管是在电话面试,视频面试还是现场面试都能够流畅的有条理的表述出来。
2.最熟悉的领域是什么?
这个问题给大家一个忠告!千万别说自己不会的领域,不然整个面试还没开始就已经结束了,千万别为了表现,说自己什么领域都擅长,这样在被面试官问了几个问题都答不上来的话,那基本上就判了死刑了,而且整个印象都不会好,以后再想面试都很难了。所以这里我们实事求是就好,熟悉什么就说什么,不熟悉的就不说。
3.Redis 的常用数据类型有哪些?
Redis 常用的五大数据类型,String,Hash,List,Set,Sorted Set。然后不要说完这几个类型就不说了,可以再扩展下,顺便可以说下每种数据类型在自己的项目里面是否有用到,具体使用在什么地方,为什么选用这种类型。面试的过程中虽然说是一问一答,但是也要适当的扩展一下,把自己知道的东西稍微多说一点,让面试官知道你是真正的了解。问你数据类型有哪些你就回答有这五个,这样的面试就比较枯燥,很难继续进展下去,给面试官的印象就不好。
4.Redis 的持久化了解吗?有几种方式,区别是什么?
关于 Redis 的持久化,我们公众号之前有篇文章专门写了,大家可以看下面试官:请说下 Redis 是如何保证在宕机后数据不丢失的
5.Redis 的三种集群模式了解吗?
关于 Redis 的集群模式不管自己有没有搭建过,都可以把自己知道的说出来,主从模式,哨兵模式,集群模式,以及三种模式的区别。
6.Redis 的主从数据是如何同步的?
Redis 的主从数据同步跟上面的集群模式这两点都可以单独成一篇文章了,后期阿粉单独分享。
7.Redis 使用的场景?
Redis 作为目前主流的缓存数据库,使用的场景有很多,用户 token 的存储,热点数据的存储,当成队列使用,分布式锁,计数器,布隆过滤器等等,结合自己项目中使用的场景可以跟面试官多聊一下。
8.Redis 为何性能如此高?
Redis 官文号称最高 QPS 可以达到十万,那么问什么 Redis 可以有这么高的并发呢?主要是 Redis 采用多路复用 IO 模型,在处理命令的时候是采用单线程去处理的,同时 Redis 的底层采用 C 语言编写,数据结构也相对简单,所以才能如此快速。
9.MySQL 的存储引擎有哪些,InnoDB 和 MyISAM 有什么区别?
MySQL 常用的存储引擎主要有 InnoDB 和 MyISAM 以及 Memory,其中关于 InnoDB 和 MyISAM 的区别公众号前面有文章详细说过,感兴趣的小伙伴可以看一下面试必问的 MySQL 知识点,你还有哪些没准备好,赶紧收藏脑图!
10.什么是事务?事务的隔离级别有哪些?为什么需要事务的隔离级别?
事务的内容在上面的文章里面也有详细说到,可以进去看下。
11.SQL 优化方面的内容?分库分表是怎么做的?
关于 SQL 优化也是一个老生常谈的话题,在面试中也经常会被问到,关于 SQL 优化,有一篇文章很不错,推荐给大家,里面讲到了很多优化的点,认真记下来对我们很有帮助 52 条 SQL 语句性能优化策略,建议收藏
12.MySQL 的索引采用的是什么存储结构?为什么采用这个?
MySQL 的索引也是一个面试中逃避不了的一个问题,详细的内容可以参考公号前面的文章为什么 Mysql 的常用引擎都默认使用 B+树作为索引?
13.Java 中的线程池有哪些默认实现,几个核心参数是如何配合工作的?拒绝策略有哪些?
Java 中的线程池有默认的实现,但是日常工作的时候我们一般都会手动创建线程池,具体的内容可以看文章面试官因为线程池,让我出门左拐!,聊聊面试中的 Java 线程池
14.Java 中 volatile, synchronized 的作用是什么?
这两个关键词在 Java 中的重要性已经不言而喻了,不用阿粉在多说什么了,那对于这两个关键词小伙伴都理解了吗?同样的,我们前面也有写过,诡异的并发之可见性
15.什么是类加载机制?
啥也不说了,直接看文章 JVM 是如何加载 Java 类的?,相信看完你就懂了。
看完上面 15 个面试题,很容易发现一个问题,那就是真正面试的时候很多东西我们公众号之前都有写过,只要好好的把这些东西消化了,再加上面试的时候好好发挥,不说一定能拿到 offer,至少前几面都能很完美的过。看到这样是不是觉得这篇文章值得收藏呢?收藏起来,以后在面试前或者面试别人的时候都可以拿出来用一用。
项目部分
上面提到的是一些技术细节,其实还有很多很多东西,毕竟 Java 的领域涉及到很多地方,像这种面试题简直可以无休止的问下去。聊完了技术细节,后面一般都是针对项目开始询问,每个人的项目不一样,涉及的领域也不一样,不具有参考性,但是一些通用的问题还是要准备下的,比如
项目运用到了哪些技术,整个的框架是什么样子的?
你在这个项目中主要负责哪些内容,你是怎么设计的?
在做这个项目的时候有没有遇到什么技术难点,你是怎么解决的?
项目上线后的 QPS 是多少,用户量有多少,有没有出现过 Fullgc 或者线上 OOM 的情况,你是如何处理的?
模块与模块之前是怎样调用的?HTTP 还是 RPC?RPC 框架用的是什么?了解其实现原理吗?
做这个项目的目的是什么?你对项目所涉及的行业有了解吗?
上面这几个都是日常做项目的时候需要知道和思考的,技术上面涉及到的东西肯定要知道,在最后一个问题上面往往很多小伙伴会忽略,认为不就是一个项目吗?关行业什么事情?其实不是这样的,了解了一个项目的背景和价值可以更好的帮忙我们理解业务需求,从而做到更好的实现,而且对于一些想在某个方向长期发展的朋友,那就更有必要了。
架构部署方面
你们项目是分布式的吗?怎么部署的?
如何在不增加机器的情况下提升 QPS?
如何降低各个服务或者机房之间网络通信耗时?
如果机房突然出现故障如何保证数据不丢失?
当下游服务出现问题时如何做熔断限流保证自己的服务不受影响?
上面几个问题是阿粉遇到的几个架构部署相关的问题,关于这一方面阿粉也不是特殊熟悉,所以就不做回答了,相信关注阿粉的小伙伴都是厉害的,可以在我们的留言下面回答下,大家一起学习谈论,帮助他人同时也是提升自己。
需要资料的小伙伴,点赞加收藏,关注我之后
可以点击这里即可获取到文章中的文档,资料!
版权声明: 本文为 InfoQ 作者【Java架构师之路】的原创文章。
原文链接:【http://xie.infoq.cn/article/619d1b6ade3ae69d4fb4df83d】。未经作者许可,禁止转载。
评论