转载本文请联系Java极客科技公众号。大家好,现在是传说中的金三银。阿芬知道,很多朋友都指日可待了。明秀栈道暗藏陈仓。表面上还在公司里踏踏实实的工作着,心里却有着自己的小不点。算盘。作为Java工程师,你会涉及很多领域,每次面试都会被问到。今天给大家带来一道面试题。我不会说我是哪家公司的,因为不管哪家其实都一样,关键是你要充分把握,才能更好的应对。技术细节第一部分,我们先来看一下技术细节。通常,许多公司的第一次面试是检查技术细节。有时候我们需要静下心来,把基础知识补起来,看看面签,或者看看我们的Java极客技术文章。1.三分钟自我介绍自我介绍是面试的开场白。这部分没什么好说的,但是建议大家把自己想表达的内容用文字写下来,然后熟练背诵。面试、视频面试或现场面试都能表达得流畅、有条不紊。2、你最熟悉的领域是什么?这个问题给你一个建议!不要谈论你不知道的领域,否则整个面试还没有开始就结束了。不要为了表现而说自己擅长任何领域。如果面试官问的几个问题都答不上来,那基本就是死刑,整体印象也不会好,以后面试也很难。所以这里我们只要实事求是,熟悉的就说,不熟悉的就不要说。3、Redis有哪些常见的数据类型?Redis中常用的五种数据类型,String、Hash、List、Set、SortedSet。然后这几个类型就不说完了,可以自己展开,顺便说一下每个数据类型在自己的项目中有没有用,用在什么地方,为什么选择这个类型。面试过程虽然说是一问一答,但也要适当扩大,把自己知道的多说一点,让面试官知道你是真的懂了。如果你问你有什么数据类型,你可以回答这五个。这种面试比较枯燥,很难继续进步,给面试官的印象也不好。4、你了解Redis的持久化吗?有几种方法,有什么区别?关于Redis的持久化,我们之前写过文章公众号。可以看面试官:请说说Redis是如何保证宕机后数据不丢失的。5、你了解Redis的三种集群模式吗??关于Redis的集群模式,不管你有没有搭建过,说说你知道的,主从模式,哨兵模式,集群模式,以及三种模式的区别。6、Redis的主从数据是如何同步的?Redis的主从数据同步和上面的集群模式可以单独写成一篇文章,后面阿芬会单独分享。7、Redis的使用场景有哪些?Redis作为目前主流的缓存数据库,使用场景很多,比如存储用户token,存储热点数据,用作队列,分布式锁,计数器,布隆过滤器等,结合自己项目中使用的场景.与面试官交谈。8、为什么Redis有这么高的性能?Redis官方文档称最高QPS可以达到10万,那么Redis为什么能有这么高的并发呢?主要原因是Redis采用了多路复用IO模型,使用单线程处理命令。同时Redis底层是用C语言写的,数据结构比较简单,所以才能这么快。9、MySQL有哪些存储引擎,InnoDB和MyISAM有什么区别?MySQL常用的存储引擎主要有InnoDB、MyISAM和Memory。InnoDB和MyISAM的区别在之前的文章公众号中已经详细的讲过了。有兴趣的朋友可以看看面试必问的MySQL知识点。你还有什么?如果你还没准备好,赶快保存你的脑图吧!10.什么是交易?事务的隔离级别是多少?为什么需要事务隔离级别?交易的内容在上面的文章中也有详细的提及,大家可以进去看看。11.SQL优化呢?如何分库分表?关于SQL优化也是一个常见的话题,在面试中也经常被问到。关于SQL优化,有一篇很好的文章,推荐给大家。它谈到了许多优化点。仔细记下来对我们很有帮助52SQL语句性能优化策略,推荐收藏12.MySQL索引采用什么存储结构?为什么采用这个?MySQL的索引也是面试中绕不开的问题。详情请参考公众号前面的文章。为什么常见的Mysql引擎都默认使用B+树作为索引?13、Java中线程池的默认实现有哪些,几个核心参数是如何协同工作的?拒绝策略是什么?Java中的线程池是有默认实现的,但我们在日常工作中通常会手动创建线程池。详情请参考文章。面试官让我左转是因为线程池!、面试中谈Java线程池14.Java中volatile和synchronized的作用是什么?Java中这两个关键字的重要性不言而喻,不用我多说,你看懂这两个关键字了吗?同样,我们之前也写过,怪异并发的可见性15.什么是类加载机制?什么都不说,直接看这篇文章JVM是如何加载Java类的?,相信看完你就明白了。看完以上15道面试题,很容易发现一个问题,就是我们在真正面试的时候在公众号之前写了很多东西,只要好好消化这些东西,在面试的时候好好利用它们面试,别说一定能拿到offer,至少能完美通过前几轮面试。看到这里,你觉得这篇文章值得收藏吗?保存下来,面试前或者面试别人的时候都可以用。上面的项目部分提到了一些技术细节,但实际上有很多很多东西。毕竟Java这个领域涉及的地方比较多,像这样的面试题可以问不完。谈完技术细节后,我通常会开始问有关项目的问题。每个人的项目不一样,涉及的领域也不一样。不是reference,但是一些通用的问题还是需要准备的,比如项目中使用了哪些技术,整个框架是什么样子的?你在这个项目中主要负责什么,你是如何设计的?你在做这个项目的时候有没有遇到什么技术上的困难,你是怎么解决的?项目上线后QPS是多少,有多少用户,有没有Fullgc或者线上OOM,如何处理?模块和模块之前是怎么调用的?HTTP还是RPC?RPC框架是做什么用的?你知道它是如何工作的吗?做这个项目的目的是什么?对项目涉及的行业有了解吗?以上都是在日常项目工作中需要知道和思考的事情。你必须知道技术所涉及的东西。很多小伙伴往往会忽略最后一个问题,认为这只是一个项目?行业呢?事实上,情况并非如此。了解一个项目的背景和价值,可以更好的帮助我们理解业务需求,从而实现更好的变现,而对于一些想长期朝某个方向发展的朋友来说,就更加必要了。在架构部署方面,你的项目是分布式的吗?它是如何部署的?如何在不增加机器的情况下提高QPS?如何减少各个服务或机房之间网络通信的时间消耗?机房突然出现故障,如何保证数据不丢失?当下游服务出现问题时,如何做熔断和限流,保证你的服务不受影响?以上问题与阿凡遇到的架构部署有关。阿凡对这方面不是特别熟悉,就不回答了。相信关注阿凡的小伙伴们都很有实力。在我们的留言下方回复,让我们一起学习交流,帮助别人的同时提升自己。
