26

年薪75万的真实技术面试实践攻略(篇章一)

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzIzODIzNzE0NQ%3D%3D&%3Bmid=2654418009&%3Bidx=1&%3Bsn=236637134bda59da20cc78b01f99f154
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

2A7zauy.gif

互联网的寒冬已经开始了,想必大家已经有了切身的感受,公司内部晋升要求变高、名额变少,外部机会的要求也水涨船高,并且限制涨幅、职级等。

如何在较为恶劣的大环境下,从海量候选人中脱颖而出,获得心怡的工作机会,升职加薪,开启职场新篇章呢?

我们另辟蹊径,思考下,面试官会从哪些方面考察候选人呢?

整体上主要分为: 专业能力、解决问题能力、沟通协作能力 、成长潜力、文化匹配 这五大方面。

于是我们就有了方向,在面试之前,积极做系统性的准备;面试中,全力展现这些能力;面试后,复盘总结、查缺补漏、继续提高自身能力。

下面结合具体案例分析下这五大方面。

篇章一: 专业能力

专业能力主要分为 深度 广度 这两块。

技术深度

无论工作经验多少,学海无涯,知识都是会存在盲区的,但是对于简历里提到的技术点,就需要具备一定的深度了。比如提到了Redis,不仅要说出来String、Hash、List、Set、ZSet这几种数据类型,当你说出了各个类型的应用场景、每种类型内部的数据结构实现、持久化的策略、缓存淘汰的策略、以及与其他存储组件的选型对比时,面试官就会眼前一亮。

当面试官又问到Redis做分布式锁的用法,你不仅说出了SetNX还有超时自动释放锁的机制,还说出了单机模式下系统可用性的问题,以及集群模式下,Master宕机后和Slave数据不一致造成的安全性问题,又提到了Redlock算法如何来提高可用性和安全性的时候,你的专业能力深度,就可以给面试官留下一个深刻的印象了。

再举个栗子,有的同学简历里写了Java基础扎实,在面试官眼里,那可能就代表着你至少看过并深入理解了比如String、HashMap、ArrayList、ConcurrentHashMap等常用类的源码了。

简单总结下,专业能力深度这一块,就是 不仅要会用,还要懂原理,看源码,深入到各种细节中去 。功夫在平时,要养成习惯,多多积累。

面试过程中,回答问题,要注意体现自己专业能力的深度,需要 主动 展现你对简历提到技术点的深入理解,不要让面试官挤牙膏一样的问。

技术广度

技术广度主要包括 技术视野 思考模式 这两方面。

关于技术视野,举个栗子,比如你项目使用的是微服务架构,面试官大概率会问,你们数据一致性是怎么保障的?

这时就要先体现你的技术深度了,详细说出你们系统在数据一致性方面做的具体工作,比如最大努力通知、兜底补偿之类的方案。

紧接着,面试官又问,还了解其他的数据一致性解决方案吗?如果你能说出强一致性的2PC、3PC、Paxos、Raft、Zab;最终一致性的Saga、TCC、Seata(AT和MT模式)以及MQ事务消息等等,这些 解决方案的演进过程,各自优缺点和适用场景 的话,技术视野这块,面试官应该会给个高分了。

再举个栗子,面试官问到了MySQL 的Update操作执行过程,你提到了WAL技术,先写Redolog,防止机器Crash造成数据丢失,也能提高性能,通过配置还可以减少磁盘IO的次数;紧接着又补充到,Kafka、Rocketmq等消息中间件以及Elasticsearch、HBase、Leveldb、Rocksdb、TiDB、Tair等高性能存储组件都用到了这种技术,这同样也可以体现你的技术视野。

面试的岗位级别越高,对广度的要求也就越高,上文我举了一个分布式事务解决方案的例子,作为一个资深技术人员,主流的解决方案是应该了解的,可以体现我们的技术视野,因为较高级的岗位需要经常做一些方案设计和选型的,甚至需要做一些架构设计,如果没有足够的视野,需要长期支撑业务迭代的技术架构,企业不敢让你搞;扛着整个部门季度KPI的业务大需求,也不敢让你来做方案设计。

大家可以想想自己项目中有哪些技术点,可以体现自己的技术视野呢?

下面再来介绍下,同样可以体现技术广度的,思考模式这块。美团的同学可能听过,BeafQPS方法论,具体如下。

BenchMark(对标) ,做方案搞架构,要了解部门、公司内、业内的通用和先进解决方案,进行对标。

Efficiency( 效率) ,方案设计要高内聚、低耦合,易扩展,易维护;重复的工作自动化等等,要经常思考如何提高效率。

Architecture(架构) ,要符合简单、合适、可演进的原则,好的架构,可以提高迭代效率,降低研发成本,提高系统稳定性。

Function( 功能) ,这个是 beafqps 7要素中最基础的一个,勿忘初心,要实现功能。

Quality( 质量) ,一方面是指可靠性,系统要可测试、质量保障要做好;另一方面是指可用性,要高可用,稳定性要好,需要采取熔断降级、限流、 耗时重试、兜底补偿、立体化监控等措施。

Performance( 性能) ,高并发、低延迟,需要采用无状态、串行改并行、同步改异步、读写分离、分库分表、慢查询优化、JVM优化等措施。

Safety( 安全) ,权限要做好控制、鉴权和越权治理,另外还要防范SQL注入、XSS攻击、CSRF等等。

如果在与面试官的交流中,上面7个要素,你都提到了,绝对是可以说明你的思考已经比较 全面 了,具备了较好的 技术广度 了,如果面试官对你的技术深度,也是有较高评价的话, 专业能力 这一块,就过关了。

预知其余面试要素剖析,请听下回分解

作者:达叔,前美团资深工程师。

3u6VbmJ.gif

ZrAZbuA.gif


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK