蚂蚁金服面试经历 —— 临场发挥

点击上方“芋道源码”,选择“置顶公众号”

技术文章第一时间送达!

源码精品专栏

 

来源:http://t.cn/EL3VqjK

1. 编程测试2. 面试3. 总结


一般面经很少会告诉你如何临场发挥,我觉得这边文章对你很重要。

上一篇文章讲了如何进行前期的准备,但是在面试的过程中,一定会问到没有准备过的问题。那么这个时候怎么办的?那么我来简单讲一下我总结下来的经验。依然分为几种情况:

  1. 编程测试

  2. 面试

1. 编程测试

编程测试是很多大公司都会有的环节。有些考察算法,有些是考察编程能力,有些是考察设计。内容要看面试官想考察面试者什么能力有关。对于这种测试,很多人就要问了,“这不就和高考一样,拿到题目做,不就完了,和临场发挥有什么关系?”。其实这和高考大有不同。

编程测试的时候你是面对着命题者的。而且命题者往往有他想要考察的点。但是命题者都是语文水平和我们差不多的程序员,题目就是他们随便写写的。意思的表达多少会有点不清晰。那么这个时候就是临场发挥的时候了。

审完题不要急着做,先简单思考一下命题者究竟想要考察什么,题意究竟是什么。然后把自己理解的题意讲给命题者听,问下他题目是不是这个意思。

无论你理解的对不对,都没有关系,理解的不对命题者会给你指出,总比你把代码都写完了才发现题目理解错了好。无论对错,无形中都为自己加了一些分。因为这反应了你平时是一个动手做之前,先把需求理解清楚的人。那么题目理解完之后就可以直接写了吗?错。

对于一道题目,一定会有很多解题思路和方法。高考的时候是你最后的结果对,那这题就能拿到满分。但是编程测试可不是。使用了不好的思路和方法一样会挂掉。那么这就又到了临场发挥的时候了!

明确了题目意思之后,先讲“那我思考一下”为自己争取一些时间。然后就让自己的CPU跑起来思考吧,尽量多想几种方案。然后把自己的方案讲给命题者听,如果能讲出每种方案的优缺点更好。

有的人可能觉得做到这一点很难。其实在我自己的面试过程中,以及与其他人交流面试的时候发现,编程测试的题目一般都能做出来。挂掉的都是挂在方法上。如果水平不是太差,至少能想出一种简单粗暴的方法。但是,如果你把这个写下来,往往拿不到Offer。所以讲你的思路就很重要了。把你的思路和解题方法讲出来,和面试官一起探讨。面试官往往会试探的引导你去寻找正确方法,这就又给自己增加了机会。当探讨到面试官满意的方法,或者实在想不出来,面试官说“那你就按当前讨论的方法写吧”的时候再动手写。

按照上面的方法编程测试下来,就算你没有用完美的方法解题,也一定会给面试官留下一个好的印象。

2. 面试

面试环节可变因素实在太多,问到自己没有准备过的问题非常正常。遇到自己准备过的内容,精确正确的回答是最理想的。然而遇到自己没有准备过的问题,也没有必要直接说自己不会。往往一场面试下来,你发现有几次“这个我不会”,那Offer也就没了。那么怎么样在自己不会的时候也能给面试官留下好印象呢?

  1. 让面试官重复问题(确认问题内容,争取思考时间)

  2. 复述问题(让面试官确认一下你是否理解了问题,同时争取思考时间)

  3. 表明自己没有研究过(让面试官可以谅解,毕竟再厉害的人也有没有研究过的问题)

  4. 请求时间思考一下(争取时间,拼命想)

  5. 30秒到1分钟后,讲思路与面试官探讨,不一定要有答案(表明自己的思路,以探讨的方式和面试官交流,面试官会引导你向正确的答案靠近。)

举一个我支付宝面试栗子,聊到了数据库分表,面试官突然问了如下问题:

假如有一个交易表,用户和商家每进行一次交易就会在交易表中产生一条记录,那么分库分表,要按照怎样的规则分。

这个问题我之前并没有准备过。于是我说:“不好意思,我没有太明白您的问题,您能否再重复一下。”,他重复一遍之后,我又复述了一下问题,得到了他的肯定之后,我说:“我之前没有研究过这个问题,我现在思考一下可以吗?”,面试官不会说不行的。

然后过了大概三四十秒的样子。我回答:“对这张表进行分表的话,我们希望的效果是同一个用户的所有数据都在一个表中,同一个商家的所有数据都在同一个表中。但是任何用户是可以和任何商家交易的。假设一个A表中的用户和B表中的商家交易,那么产生的数据就无法确定放在哪个表中,所以不存在这样的一个分表规则。”其实我在那段时间里就想到这里,在说这段话的时候想到的接下来的。然后我接着说:“那么不知道是不是可以将这个表通过用户分表,另外再维护一个商家到原始数据的索引表。来为商家提供查询。”然后面试官说:“这样确实可以,但是有些麻烦,没关系,我随便问问的。”

如果遇到没有准备过的问题,按照这个思路,最后只要说出一些自己的思路。即使思路不太正确。也比直接说不会好。毕竟谁都有没有研究过的问题。这样回答至少说明了你乐于去思考。

3. 总结

在面试过程中,遇到没有准备过的问题很正常。遇到的时候不要慌张,要保持冷静,想办法争取时间,并在争取到的时间内全速开启自己的CPU去思考。最后把握好时间不要冷场尴尬。没有想出结果就说思路。无论对错都比直接说不会好。祝大家面试成功。下一篇介绍平时工作工程中如何积累。




欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

640

已在知识星球更新源码解析如下:

  • 《精尽 Dubbo 源码解析系列》69 篇。

  • 《精尽 Netty 源码解析系列》61 篇。

  • 《精尽 Spring 源码解析系列》35 篇。

  • 《精尽 MyBatis 源码解析系列》34 篇。

  • 《数据库实体设计》17 篇。

  • 《精尽 Spring MVC 源码解析系列》15 篇。


目前在知识星球更新了《Dubbo 源码解析》目录如下:

01. 调试环境搭建
02. 项目结构一览
03. 配置 Configuration
04. 核心流程一览

05. 拓展机制 SPI

06. 线程池

07. 服务暴露 Export

08. 服务引用 Refer

09. 注册中心 Registry

10. 动态编译 Compile

11. 动态代理 Proxy

12. 服务调用 Invoke

13. 调用特性 

14. 过滤器 Filter

15. NIO 服务器

16. P2P 服务器

17. HTTP 服务器

18. 序列化 Serialization

19. 集群容错 Cluster

20. 优雅停机

21. 日志适配

22. 状态检查

23. 监控中心 Monitor

24. 管理中心 Admin

25. 运维命令 QOS

26. 链路追踪 Tracing

... 一共 69+ 篇

目前在知识星球更新了《Netty 源码解析》目录如下:

01. 调试环境搭建
02. NIO 基础
03. Netty 简介
04. 启动 Bootstrap

05. 事件轮询 EventLoop

06. 通道管道 ChannelPipeline

07. 通道 Channel

08. 字节缓冲区 ByteBuf

09. 通道处理器 ChannelHandler

10. 编解码 Codec

11. 工具类 Util

... 一共 61+ 篇


目前在知识星球更新了《数据库实体设计》目录如下:


01. 商品模块
02. 交易模块
03. 营销模块
04. 公用模块

... 一共 17+ 篇


目前在知识星球更新了《Spring 源码解析》目录如下:


01. 调试环境搭建
02. IoC Resource 定位
03. IoC BeanDefinition 载入

04. IoC BeanDefinition 注册

05. IoC Bean 获取

06. IoC Bean 生命周期

... 一共 35+ 篇


目前在知识星球更新了《MyBatis 源码解析》目录如下:


01. 调试环境搭建
02. 项目结构一览
03. MyBatis 面试题合集

04. MyBatis 学习资料合集

05. MyBatis 初始化

06. SQL 初始化

07. SQL 执行

08. 插件体系

09. Spring 集成

... 一共 34+ 篇


源码不易↓↓↓

点赞支持老艿艿↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值