其实,每次面试的问题都逃不过这几方面!

Posted javatiange

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了其实,每次面试的问题都逃不过这几方面!相关的知识,希望对你有一定的参考价值。

最近在主攻的面试方面的文章。

自己在网上翻阅了很多面经,也建立了面试题交流群(想入群的私我)。

所以看了很多真实的、新鲜的面试题。

再结合下自己的面试经历、自己面别人的套路和之前朋友之间的面试交流。

我总结了下,提问方向基本上都是固定的。

让我们一起来看看吧~

项目

毋庸置疑,这玩意非常重要。

几乎所有的面试,面试官都会让你介绍自己的项目。

他会问你:

  • 项目整体架构

  • 共包含哪些服务

  • 服务之间信息流是如何流转的

  • 在项目中,有没有遇到什么难点

  • 有没有排查过项目的线上问题

  • 你觉得你现在的设计有什么问题么?

  • 如果你负责的服务从100TPS变成1万TPS会有什么问题?怎么处理?

  • 如果你负责的这个功能之后需要频繁变更,你怎么设计?

  • 等等等

当然还有很多种问法,不过都会结合你当前的项目进行发问。

面试官想考察你:

  • 这个项目是不是真的是你做的

  • 是否对项目整体都有把控和关心

  • 平日里是否有对项目进行总结性思考

  • 是否有线上故障处理能力

  • 是否有设计和架构思维

  • 一些知识点是否能学以致用,比如线程池原理说的很溜,但是不知道在项目上怎么用。

所以要多多准备自己的项目,扒一扒你自己负责的模块。

多想想,如果产品要频繁变更需求的话,这里应该怎么设计。

如果公司今年发展的很迅速,客户量激增的话,你负责的服务会有什么问题?

需要怎么处理、怎么设计?

因为这非常容易被问到,如果你答的好。

那么不仅突出你这个人有点东西,还会体现出你平日里喜欢钻研和思考。

Java基础

这个也很重要。

HashMap呀、ConcurrentHashMap哟

Synchronized呀、Reentrantlock哟

volatile呀、threadlocal、线程池等多线程相关的。

JVM、GC。

这些问题还是很常见的,而且网上基本上都有,大多数同学称之为“八股文”。

百度百科:八股文(英译:Stereotyped Writing;Eight-Legged Essay),也称制义、制艺、时文、八比文,是明清科举考试的一种文体。八股文章就“四书五经”取题,内容必须用古人的语气,绝对不允许自由发挥,而句子的长短、字的繁简、声调高低等也都要相对成文,字数也有限制

不过,八股文也能看出深度的。

就拿 Synchronized 说,一般说个能自动解锁、可重入啥的,然后就锁升级一套combo。

好点的还能说说字节码层面,扯个 ObjectMonitor

如果你还熟悉 AQS 的话,你会发现好像机制是一样的呀。

都有一个同步队列,还有条件等待队列,然后唤醒 CAS 抢锁。

所以当面试官问你 Synchronized ,你把 JVM 的实现跟他一说,再给他延伸一下 AQS ,怎么说?

这波,有点秀。

面试官对你的印象,肯定很深,那你这几率不就大大的?

所以有点追求,你稍微深入点,你就比大部分人都牛。

对了,Java 基础面试题我可是已经整理了 52 题了,答案也写了,还不知道的去我公众号翻翻吧。

中间件

一般你的简历肯定会写 Redis、Memcache、Kafka、RocketMQ、RabbitMQ、Dubbo、Spring Cloud 之类的。

你写啥基本上会问啥。

我拿 Redis 举个例子:

  • 你的项目为什么会选择用Redis而不是Memcache(技术选型)

  • 你项目中一般怎么用 Redis 的

  • 线上遇到 Redis 的相关问题没

  • 你对 Redis 了解有多深?源码看过吗

  • 说说 Redis rehash

  • Redis 集群了解么?

  • Redis 分布式锁怎么用?有什么问题?

当然,还有很多问题,比如什么过期策略啊,AOF 之类的,我就不一一列举了。

总之,这些问题想要得到的反馈是:

  • 项目上真正的使用,使用到哪个程度

  • 看看你是否有选型能力,还是只是个不会思考的工具人

  • 看看你对一个东西钻研有多深

  • 是否有中间件相关排查和处理问题的经历

中间件的问法基本上就是这么个套路。

我号上也写了很多相关的了,比如 Kakfa 和RocketMQ 的对比呀之类的。

所以,打有准备的仗。

如果你觉得时间来不及,你可以挑一个重点攻克一下,和面试官说我xxx比较熟,这样也是 ok 的。

毕竟,没有人是全能的。

数据库

这个也是必问的,一般都是 mysql

会问一些:

  • 项目上如何设计索引的呀

  • 写 SQL 有哪些需要注意的

  • 分库分表相关

  • 数据太多怎么查询

  • 常问索引结构,为什么要这样设计?

  • 能说说索引查找的流程么?了解多少说多少

  • 如何优化 SQL

  • 隔离级别、MVCC

  • MySQL 的锁机制

  • redo log 、undo log 之类的

基本上就是这么些个问题,这么一列其实也就这样。

从中看看:

  • 是否有 SQL 调优能力

  • 是否有数据库设计能力

  • 对数据库原理了解多少,即深度

嘿嘿,等着我的 MySQL 系列吧~

设计、场景、架构类

比如:

  • 一个短链服务如何设计

  • 排行榜如何设计

  • 查找附近的人,如何设计

  • 等等

这类就是看看你个人的设计能力了。

包括条理是否清晰、考虑是否全面、表述是否通顺等等。

然后会和你互动,会问如果要这样的话怎么设计呀,如果要那样的话呢?

你说我扩容,我说不许扩容。

你说我限流,我说不许限流。

所以,这个还是得看看你的应变能力和平日的积累了。

其他

社招的话主要就这几方面,不过不排除一些其他问题。

这个其他,指代的东西其实很多、很广。

比如,网络相关的 TCP、UDP、HTTP、HTTPS。

操作系统相关的用户态、内核态、零拷贝、内存分页等等。

这种会有,不过出现频率不会那么高。

社招基本上围绕项目来展开的,以上的问题,校招多些。

对了, Spring 、设计模式之类的,其实也比较常问,就划到其他这个类目吧。

上机

大厂逃不过笔试。

  • 手写个LRU

  • 反转链表

  • 生产者消费者

  • 多线程顺序打印

  • 二叉树之类的

反正一般不会太难,最多中等难度。

这个平时日得多练练,注意是不要在 idea 里面写。

在 LeetCode 上直接写好,毕竟到时候没有联想功能。

靠日积月累的刷题了,每天一题刷刷更健康!

也可以针对性的练习,比如把多线程专题一次性都刷完,然后再刷刷链表的啥的。

反正就是靠练,几乎需要形成肌肉记忆。

虽说 LeetCode 上面题目很多,但是常考的其实不外乎就那么几种。

一直想整理出一份完美的面试宝典,但是时间上一直腾不开,这套一千多道面试题宝典,结合今年金三银四各种大厂面试题,以及 GitHub 上 star 数超 30K+ 的文档整理出来的,我上传以后,毫无意外的短短半个小时点赞量就达到了 13k,说实话还是有点不可思议的。

一千道互联网 Java 工程师面试题

内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、SpringBoot、SpringCloud、RabbitMQ、Kafka、Linux等技术栈(485页)

初级—中级—高级三个级别的大厂面试真题

阿里云——Java 实习生/初级

List 和 Set 的区别 HashSet 是如何保证不重复的

HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)?

HashMap 的扩容过程

HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的?

对象的四种引用

Java 获取反射的三种方法

Java 反射机制

Arrays.sort 和 Collections.sort 实现原理 和区别

Cloneable 接口实现原理

异常分类以及处理机制

wait 和 sleep 的区别

数组在内存中如何分配

答案展示:

美团——Java 中级

BeanFactory 和 ApplicationContext 有什么区别

Spring Bean 的生命周期

Spring IOC 如何实现

说说 Spring AOP

Spring AOP 实现原理

动态代理(cglib 与 JDK)

Spring 事务实现方式

Spring 事务底层原理

如何自定义注解实现功能

Spring MVC 运行流程

Spring MVC 启动流程

Spring 的单例实现原理

Spring 框架中用到了哪些设计模式

为什么选择 Netty

说说业务中,Netty 的使用场景

原生的 NIO 在 JDK 1.7 版本存在 epoll bug

什么是 TCP 粘包/拆包

TCP 粘包/拆包的解决办法

Netty 线程模型

说说 Netty 的零拷贝

Netty 内部执行流程

答案展示:

蚂蚁金服——Java 高级

题 1:

  1. jdk1.7 到 jdk1.8 Map 发生了什么变化(底层)?

  2. ConcurrentHashMap

  3. 并行跟并发有什么区别?

  4. jdk1.7 到 jdk1.8 java 虚拟机发生了什么变化?

  5. 如果叫你自己设计一个中间件,你会如何设计?

  6. 什么是中间件?

  7. ThreadLock 用过没有,说说它的作用?

  8. Hashcode()和 equals()和==区别?

  9. mysql 数据库中,什么情况下设置了索引但无法使用?

  10. mysql 优化会不会,mycat 分库,垂直分库,水平分库?

  11. 分布式事务解决方案?

  12. sql 语句优化会不会,说出你知道的?

  13. mysql 的存储引擎了解过没有?

  14. 红黑树原理?

题 2:

  1. 说说三种分布式锁?

  2. redis 的实现原理?

  3. redis 数据结构,使⽤场景?

  4. redis 集群有哪⼏种?

  5. codis 原理?

  6. 是否熟悉⾦融业务?记账业务?蚂蚁⾦服对这部分有要求。

好啦~展示完毕,大概估摸一下自己是青铜还是王者呢?

前段时间,在和群友聊天时,把今年他们见到的一些不同类别的面试题整理了一番,于是有了以下面试题集,也一起分享给大家~

如果你觉得这些内容对你有帮助,可以加入csdn进阶交流群,领取资料

基础篇


JVM 篇


MySQL 篇



Redis 篇




由于篇幅限制,详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

需要的小伙伴,可以一键三连,下方获取免费领取方式!
在这里插入图片描述

以上是关于其实,每次面试的问题都逃不过这几方面!的主要内容,如果未能解决你的问题,请参考以下文章

业界冥灯今年校招太难了我面试过的大厂都逃不过被制裁的命运

业界冥灯今年校招太难了我面试过的大厂都逃不过被制裁的命运

业界冥灯今年校招太难了我面试过的大厂都逃不过被制裁的命运

(Java后端 Java web)面试时如何展示自己非技术方面的能力(其实就是综合能力)

头条面试之----HashMap原理

一文搞定动态规划: 探索找零问题