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

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

自己在网上翻阅了很多面经。

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

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

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

让我们一起来看看吧~

项目

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

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

他会问你:

  • 项目整体架构

  • 共包含哪些服务

    扫描二维码关注公众号,回复: 14273066 查看本文章
  • 服务之间信息流是如何流转的

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

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

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

  • 如果你负责的服务从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 上面题目很多,但是常考的其实不外乎就那么几种。

最后

差不多了,提问基本上不会脱离这几个方向。

并且这几个方向也都有固定的问题,不会偏离很多。

所以针对性的准备准备,不打无准备之仗。

准备完毕之后,

那你就是面霸了。

猜你喜欢

转载自blog.csdn.net/uuqaz/article/details/125280403