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

几乎所有的技术面试,面试官都会问这几个方面

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

我总结了一些常见的面试考察方向。让我们一起来看看吧~

项目

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

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

他会问你:

  • 项目整体架构
  • 共包含哪些服务
  • 服务之间信息流是如何流转的
  • 在项目中,有没有遇到什么难点
  • 有没有排查过项目的线上问题
  • 你觉得你现在的设计有什么问题么?
  • 如果你负责的服务从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 ,怎么说?

这波,有点秀。

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

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

中间件

一般你的简历肯定会写 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 调优能力
  • 是否有数据库设计能力
  • 对数据库原理了解多少,即深度

其他

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

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

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

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

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

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

上机

大厂逃不过笔试。

  • 手写个LRU
  • 反转链表
  • 生产者消费者
  • 多线程顺序打印
  • 二叉树之类的

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

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

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

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

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

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

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

最后

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

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

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

准备完毕之后,那你就是面霸了。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试开发技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值