看了几百份面经,我总结了面试的套路!不过尔尔~

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 看了几百份面经,我总结了面试的套路!不过尔尔~

你好, 我是 yes。

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

自己在网上翻阅了很多面经,也建立了面试题交流群。

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

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

我总结了下,提问方向基本上都是固定的,是有迹可循的

让我们一起来看看吧~


项目


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

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

他会问你:

  • 项目整体架构
  • 共包含哪些服务
  • 服务之间信息流是如何流转的
  • 在项目中,有没有遇到什么难点
  • 有没有排查过项目的线上问题
  • 你觉得你现在的设计有什么问题么?
  • 如果你负责的服务从100TPS变成1万TPS会有什么问题?怎么处理?
  • 如果你负责的这个功能之后需要频繁变更,你怎么设计?
  • 等等等

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

面试官想考察你:

  • 这个项目是不是真的是你做的
  • 是否对项目整体都有把控和关心
  • 平日里是否有对项目进行总结性思考
  • 是否有线上故障处理能力
  • 是否有设计和架构思维
  • 一些知识点是否能学以致用,比如线程池原理说的很溜,但是不知道在项目上怎么用。

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

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

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

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

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

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

对了,跟面试官介绍项目的时候,不要一上来就深入细节

在下面这篇文章中,我说的很清楚了,可以看看。

头条终面:写个消息中间件


Java基础


这个也很重要。

HashMap呀、ConcurrentHashMap哟

Synchronized呀、Reentrantlock哟

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

JVM、GC。

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

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

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

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

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

再好点那就是我这篇了,嘿嘿。深入JVM来理解Synchronized

如果你还熟悉 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 上面题目很多,但是常考的其实不外乎就那么几种。


最后


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

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

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

准备完毕之后,

那你就是面霸了。


image.png

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
XML Java API
Java 面试必备的 Spring Bean 生命周期总结
前言 Spring 作为 IOC 容器,管理的对象称之为 bean,Java 对象在 ClassLoader 中有自己的创建和清理过程,那么 Spring Bean 在容器中也有自己的生命周期。
349 0
Java 面试必备的 Spring Bean 生命周期总结
记十次面试字节/美团失败总结的《520道LeetCode题Java版答案》
去字节、美团、BAT等大厂面试,刷LeetCode上的数据结构+算法题是必修课。许多读者说,刷题的时候经常会遇到困难,想要找一本答案题解做参考。 下面分享几个用Java语言实现的开源LeetCode题解,也要感谢这些优秀的开源作者们,分享真的会让这个世界变得很美好。 LeetCode题解答案pdf(基于Java实现) 这是一本基于Java语言实现的LeetCode题解,格式为PDF,可作为刷题的辅助和参考,方便阅读,也方便打印出来学习。
|
负载均衡 Linux 应用服务中间件
Linux下各种锁地理解和使用以及总结解决一下epoll惊群问题(面试常考)
Linux下各种锁地理解和使用以及总结解决一下epoll惊群问题(面试常考)
Linux下各种锁地理解和使用以及总结解决一下epoll惊群问题(面试常考)
|
SQL 算法 JavaScript
西安软件园面试总结(一)
西安软件园面试总结(一)
西安软件园面试总结(一)
|
机器学习/深度学习 分布式计算 算法
机器学习岗位面试总结:简历应该关注的5个重点
机器学习岗位面试总结:简历应该关注的5个重点
473 0
机器学习岗位面试总结:简历应该关注的5个重点
|
存储 移动开发 算法
面试必问:十大经典排序算法总结
面试必问:十大经典排序算法总结
108 0
面试必问:十大经典排序算法总结
|
算法 网络协议 搜索推荐
CVTE寒暑假实习面试总结
目录前言1. 笔试2. 面试 前言 主要总结一些笔试和面试的具体问题 1. 笔试 笔试共有 20道选择题(单选加多选) 2道算法题(算法题基本是场景题,但是基本思路都是leetcode的题目) 1道设计题(让你设计一个系统) 20道选择题基本都是计网+数据结构的排序题以及java的一些基本概念 具体可以参考我这篇文章都有大概的提到 java框架零基础从入门到精通的学习路线(超全) 算法题的思路leetcode基本都有 我当时做的算法题主要是这两道 【leetcode】剑指 Offer 62. 圆圈中最后
124 1
|
存储 消息中间件 缓存
flink面试问题总结(1)
flink面试问题总结(1)
|
消息中间件 存储 SQL
flink面试问题总结(3)
flink面试问题总结(3)
flink面试问题总结(3)
|
存储 缓存 资源调度
flink面试问题总结(2)
flink面试问题总结(2)
flink面试问题总结(2)
下一篇
无影云桌面