分享

Java程序员从阿里、京东、美团面试回来,这些面试题你会吗?(文末福利)

 田维常 2021-12-31

hi 大家好 我是田哥

今天,给大家分享一些面试干货。我们每次面试基本上都是超过一个小时的,面试官肯定会问很多问题,其实也不是需要我们全部能回答上来。但是,关键点如果回答不上来,就算你其他的回答的不错,也没用,最终offer还是不会给你的。

好吧,话不多说,我们直接开始:

自我介绍

很多人觉得自我介绍不是很重要,错了,自我介绍很烂,也会影响你的offer。因为自我介绍会考察你的表达能力,是否言简意赅,是否介绍了你的优势,你的特点。

很多人都是这样的:

面试官你好,我是XXX,本人某某大学某某专业毕业,XXXX年毕业,毕业后就一直从事Java相关开发,做过系统1、系统2、系统3....,今天想来贵公司面试一份Java开发工作。

就这么简单潦草的把自我介绍搞完,面试官或许都没听到什么关键词,最多估计也是听到某某系统,然后有点感兴趣,就开始聊某个系统了。可是,你可能对某个系统其实不是很了解,只是参与开发了几个接口,然后,你就几句话就把面试官打发了。

或者你是面试官,估计连你都有些不爽,你说你做过某某系统,居然就开发了几个接口,整个系统是干啥的,有些什么工作,业务量怎么样你都不知道,你觉得印象分会高吗?

Java基础部分

现在面试官,基本上是不会问基础部分了,但照顾到某些面试官还是会问,所以还是提一下。

  • String对象创建了,为什么不能变了?
  • Integer的面试题,100=100,1000为什么就不等于1000了?
  • 反射机制是什么?异常有哪些处理方式?如何自定义异常?应该注意些什么问题?
  • 我想自己写个对象作为HashMap的key,行不行?应该注意些什么?
  • ......

JVM部分

个人觉得JVM这部分相当重要,这都没学好,你的代码是怎么运行的,你写出来的代码会不会有问题,有没有优化空间?

  • JVM内存模型(这是最基本的,可能面试官不会直接问你,但是问其他问题的时候可能就需要说了)
  • 类加载机制(类加载器,如何自定义类加载器)
  • 双亲委派模型(如何破坏,在哪些地方见过)
  • 哪些是垃圾对象(很多人始终记不住,那是没有用代码理解)
  • 线上问题处理(这个是很多人都回答不来的,这里同时也是考察你对JVM一些知识的考量)
  • ......

并发编程部分

在面试中,并发编程依旧是热门话题,同时也是大家最害怕的问题之一。

  • 线程创建方式有几种?
  • 线程状态
  • JUC并发包下的相关组件(AQSReentrantLockCountdownLatch等)
  • 线程池(实现原理、创建方式、如何设置线程数、如何监控)
  • 同步锁、重入锁、锁升级、悲观锁、乐观锁、ABA问题
  • ......

Redis部分

现在大部分公司都在用Redis,做缓存、分布式锁等。所以,现在基本上是必问的技术点。

  • Redis数据类型(老实点回答常规的,关于bitmapHyperloglog,如果不是很熟悉就别说,否则给自己挖坑)
  • Redis使用场景()
  • Redis持久化(你们用的是哪种?为什么这么用?这么用会不会存在什么风险?)
  • Redis 线程模型(为什么叫单线程?只有单线程吗?)
  • Redis高可用(Redis集群方式,你们用的是哪种?为什么选这种?)
  • Redis淘汰机制(淘汰算法有哪些?默认是什么?说说你对这几种算法的理解)
  • Redis实现分布式锁(为什么选择Redis来实现分布式锁?具体是怎么实现的?存在问题吗)
  • 缓存三大问题(缓存雪崩、缓存穿透、缓存击穿,回答上来是正常的,回答不上来就回去等通知)
  • 缓存命中(缓存命中率表示什么?怎么提高缓存命中率?)
  • ......

MySQL部分

目前在面试中 MySQL 的占比也是相当的高,并且都会问的挺多的,也问题挺深的。

  • 一条SQL的执行(一条查询SQL是怎么执行的?一条更新的SQL是怎么查询的?)
  • 索引的问题(索引底层数据结构是什么?什么场景需要用到索引?联合索引背后实现原理是什么?...问题非常多)
  • SQL优化(有哪些手段?说说几个项目中优化的场景,MySQL优化手段有哪些?)
  • MySQL日志文件(有几种日志文件?都是干嘛用的?)
  • MySQL事务(MySQL 的事务原理是什么?为什么不要使用长事务?说说你对MVCC原理理解?)
  • MySQL中的锁(MySQL 中有哪些锁?针对这些锁,能不能说说相应场景)
  • ......

Spring家族

Spring是我们开发中必备的,因为它解放了我们的双手,尤其是Spring Boot让我们之前的那么多xml配置给消失了。

  • 你们项目中为什么使用Spring框架?
  • 说说你对Spring MVC的理解
  • 谈谈你对Spring的AOP理解
  • 说说你对Spring的IOC是怎么理解的
  • 解释一下Spring Bean的生命周期
  • Spring 是怎么解决循环依赖的?
  • Spring 框架中的单例 Bean 是线程安全的么?
  • 说说Spring Boot的自动装配原理
  • Spring Boot 的核心注解是哪些?
  • Spring Boot中的 starter 到底是什么 ?
  • 说说Spring Cloud的核心组件
  • Eureka自我保护机制是什么?
  • 如何设计一个注册中心?
  • Eureka和Zookeeper的区别?
  • 什么是Hystrix?它如何实现容错?
  • Ribbon和Feign的区别?
  • ....

消息队列部分

市面上的消息队列很多,下面我们以RabbitMQ为例。

  • 为什么要使用消息队列?使用消息队列会存在哪些问题?
  • 如何避免消息堆积?
  • 如何保证消息不丢失?
  • 如何保证消息顺序一致性?
  • 如何保证消息不被重复消费?
  • 有哪些消费模式?
  • RabbitMQ有些什么特点?
  • 为什么要选择为什么选择RabbitMQ
  • RabbitMQ中消息可能有的几种状态?
  • 如何保证RabbitMQ消息队列的高可用?
  • 生产者消息没到交换机,相当于生产者弄丢消息,怎么办?
  • ......

其他部分

个人觉得,上述部分应该是必备部分,开发中通常都会使用的。其他部分,由于每个人的技术栈不同,所以也不能全部列出来,下面再来看看其他部分:

  • Zookeeper相关问题
  • 分布式事务相关问题
  • 分库分表相关问题
  • 常用工具MavenGit相关问题
  • Netty相关问题
  • Dubbo相关问题
  • 搜索引擎相关问
  • 数据结构与算法相关问题
  • ...

说实话,这年头太卷了,面试要求也越来越高了。但与其说是卷,还不如说竞争非常激烈。现在各行各业都是这样的,哪个好赚钱,立马很多人就开始加入了。

面试造火箭,进去拧螺丝

这句话看起来有那么些悲观情绪,或者负面情绪,希望大家能理解背后含义。

进入公司大部人大多数时候都是搞CRUD,很多人都是高级开发了,但依旧是天天CURD。

DDDD:这里不是带带弟弟,哈哈,是懂的都懂

其实,作为面试官,肯定想你知道的越多越好,会的越多越好。不然,说不好那天和其他团队有业务交叉的地方,让你去聊技术方案,一不小心就被人家给否定了,严重的还可能会替别人背黑锅。

所以,面试造火箭,貌似也是有必要的。

福利

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多