Java程序员从阿里、京东、美团面试回来,这些面试题你会吗?
The following article is from Java后端技术全栈 Author 田哥
今天,给大家分享一些面试干货。我们每次面试基本上都是超过一个小时的,面试官肯定会问很多问题,其实也不是需要我们全部能回答上来。但是,关键点如果回答不上来,就算你其他的回答的不错,也没用,最终offer还是不会给你的。
好吧,话不多说,我们直接开始:
自我介绍
很多人觉得自我介绍不是很重要,错了,自我介绍很烂,也会影响你的offer。因为自我介绍会考察你的表达能力,是否言简意赅,是否介绍了你的优势,你的特点。
很多人都是这样的:
面试官你好,我是
XXX
,本人某某大学某某专业毕业,XXXX
年毕业,毕业后就一直从事Java相关开发,做过系统1、系统2、系统3....,今天想来贵公司面试一份Java开发工作。
就这么简单潦草的把自我介绍搞完,面试官或许都没听到什么关键词,最多估计也是听到某某系统,然后有点感兴趣,就开始聊某个系统了。可是,你可能对某个系统其实不是很了解,只是参与开发了几个接口,然后,你就几句话就把面试官打发了。
或者你是面试官,估计连你都有些不爽,你说你做过某某系统,居然就开发了几个接口,整个系统是干啥的,有些什么工作,业务量怎么样你都不知道,你觉得印象分会高吗?
Java基础部分
现在面试官,基本上是不会问基础部分了,但照顾到某些面试官还是会问,所以还是提一下。
String对象创建了,为什么不能变了? Integer的面试题,100=100,1000为什么就不等于1000了? 反射机制是什么?异常有哪些处理方式?如何自定义异常?应该注意些什么问题? 我想自己写个对象作为 HashMap
的key,行不行?应该注意些什么?......
JVM部分
个人觉得JVM
这部分相当重要,这都没学好,你的代码是怎么运行的,你写出来的代码会不会有问题,有没有优化空间?
JVM
内存模型(这是最基本的,可能面试官不会直接问你,但是问其他问题的时候可能就需要说了)类加载机制(类加载器,如何自定义类加载器) 双亲委派模型(如何破坏,在哪些地方见过) 哪些是垃圾对象(很多人始终记不住,那是没有用代码理解) 线上问题处理(这个是很多人都回答不来的,这里同时也是考察你对 JVM
一些知识的考量)......
并发编程部分
在面试中,并发编程依旧是热门话题,同时也是大家最害怕的问题之一。
线程创建方式有几种? 线程状态 JUC
并发包下的相关组件(AQS
、ReentrantLock
、CountdownLatch
等)线程池(实现原理、创建方式、如何设置线程数、如何监控) 同步锁、重入锁、锁升级、悲观锁、乐观锁、 ABA
问题......
Redis部分
现在大部分公司都在用Redis
,做缓存、分布式锁等。所以,现在基本上是必问的技术点。
Redis
数据类型(老实点回答常规的,关于bitmap
、Hyperloglog
,如果不是很熟悉就别说,否则给自己挖坑)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
相关问题分布式事
务相关问题分库分表
相关问题常用工具 Maven
、Git
相关问题Netty
相关问题Dubbo
相关问题搜索引擎相关问 数据结构与算法相关问题 ...
说实话,这年头太卷了,面试要求也越来越高了。但与其说是卷,还不如说竞争非常激烈。现在各行各业都是这样的,哪个好赚钱,立马很多人就开始加入了。
面试造火箭,进去拧螺丝
这句话看起来有那么些悲观情绪,或者负面情绪,希望大家能理解背后含义。
进入公司大部人大多数时候都是搞CRUD,很多人都是高级开发了,但依旧是天天CURD。
DDDD
:这里不是带带弟弟
,哈哈,是懂的都懂
。
其实,作为面试官,肯定想你知道的越多越好,会的越多越好。不然,说不好那天和其他团队有业务交叉的地方,让你去聊技术方案,一不小心就被人家给否定了,严重的还可能会替别人背黑锅。
所以,面试造火箭,貌似也是有必要的。
<END>
欢庆元旦 最后狂欢
领优惠券下单直减 5元 再送小程序积分
【新产品上架】 🕚
推荐阅读:
2021年游戏开发中的10大编程语言:C++、Java、C#......
救救大龄码农!45岁程序员在国务院网站求助总理,精通Java却找不到工作
每日打卡赢积分兑换书籍入口